2008-08-08 16 views
4

Если вы работаете в PHP (или, я предполагаю, любой язык программирования) и использую subversion в качестве исходного элемента управления, есть способ взять ваш проект (например):Создание производственной сборки проекта PHP с помощью Subversion

C: \ Projects \ Test \ .svn
C: \ Projects \ Test \ Docs \
C: \ Projects \ Test \ faq.php
C: \ Projects \ Test \ guestbook.php
C: \ Projects \ test \ index.php
C: \ Projects \ test \ test.php

и строить/копировать/все это так отсеивает определенные файлы и становится:

C: \ Projects \ Test \ faq.php
C: \ Projects \ Test \ guestbook.php
C: \ Projects \ test \ index.php

автоматический? Я устал от создания ветки, а затем просматриваю ветку и удаляю все папки «.svn», каталог docs и файлы прототипов.

Я знаю, что, возможно, я мог бы использовать .bat-файл, чтобы копировать только те файлы, которые я хочу, но я надеялся, что есть какой-то способ с subversion, чтобы просто игнорировать файл, где он все равно будет его версировать, но где вы можете сделать моментальный снимок проекта, который игнорирует файлы, которые вы ему сказали, чтобы псевэо игнорировать.

Я знаю, что я где-то читал о некоторой функциональности, которая по крайней мере позволяет копировать без папок .svn, но я не могу ее найти сейчас.

ответ

6

Если вы используете TortoiseSVN, вы можете использовать функцию экспорта, чтобы автоматически вырезать все .svn-файлы. Я думаю, что другие svn вещи имеют одинаковую особенность.

Щелкните правой кнопкой мыши папку корневого проекта, TortoiseSVN> Экспортируйте и сообщите, где вы хотите .svn бесплатный каталог.

+0

Экспорт особенность * должен * работать с любым клиентом, но именно клиента командной строки; это стандартная функция. – 2009-08-07 17:55:52

2

Вот дурацкая камедь и-шнурок идея:

Скопируйте все файлы вручную или с использованием существующего метода впервые. Затем, так как я уверен, что вы на платформе Windows, установите SyncToy и настройте его в subscribe method, что позволит эффективно односторонней копировать только изменения, сделанные с момента последнего псевдообмена, для файлов, уже находящихся в производстве. Если вы хотите добавить файл, вы можете просто скопировать его вручную и возобновить операцию SyncToy.

1

Итак, мое окончательное решение заключается в следующем:

Используйте команду экспорта для экспорта в папку под названием «экспорт» в том же каталоге, что и файл с именем «deploy.bat», то я бегу сценарий Deploy (v1 - версия 1, которая является той версией, в которой я сейчас работаю в этом проекте). В этом сценарии используется 7-Zip, который я разместил на своем пути к системе, поэтому я могу использовать его в качестве утилиты командной строки:

rem replace the v1 directory with the export directory 
rd /s /q v1 
move /y export\newIMS v1 
rd /s /q export 

rem remove the prepDocs directory from the project 
rd /s /q v1\prepDocs 

rem remove the scripts directory from the project 
rd /s /q v1\scripts 

rem remove individual files from project 
del v1\.project 
rem del v1\inc\testLoad.html 
rem del v1\inc\testInc.js 

SET /P version=Please enter version number: 

rem zip the file up with 7-Zip and name it after whatever version number the user typed in. 
7z a -r v%version%.zip v1 

rem copy everything to the shared space ready for deployment 
xcopy v%version%.zip /s /q /y /i "Z:\IT\IT Security\IT Projects\IMS\v%version%.zip" 
xcopy v1 /s /q /y /i "Z:\IT\IT Security\IT Projects\IMS\currentVersion" 

rem keep the window open until user presses any key 
PAUSE 

У меня не было времени проверить решение SyncToy, поэтому не принимайте это, поскольку я отклоняю этот метод. Я просто знал, как это сделать, и у меня не было времени, чтобы проверить, что один из них (в то время как хруст сейчас).

Источники:

http://commandwindows.com/command2.htm
http://www.ss64.com/nt/