Создание производственной сборки PHP-проекта с помощью Subversion
-
08-06-2019 - |
Вопрос
Если вы работаете на PHP (или, я думаю, на любом другом языке программирования) и используете subversion в качестве элемента управления версиями, есть ли способ взять ваш проект (например):
C:\Projects est\.svn
C:\Projects est\docs\
C:\Projects est\faq.php
C:\Projects est\guestbook.php
C:\Projects est\index.php
C:\Projects est est.php
и создайте / скопируйте / что бы это ни было, чтобы оно отсеивало определенные файлы и становилось:
C:\Projects est\faq.php
C:\Projects est\guestbook.php
C:\Projects est\index.php
автоматически?Я устал создавать ветку, а затем просматривать ветку и удалять все папки ".svn", каталог docs и мои файлы прототипов.
Я знаю, что, вероятно, мог бы использовать файл .bat для копирования только определенных файлов, которые я хочу, но я надеялся, что в subversion есть какой-то способ псевдо игнорировать файл, где он все равно будет его версировать, но где вы могли бы сделать снимок проекта, который игнорирует файлы, которые вы указали ему псевдо игнорировать.
Я знаю, что где-то читал в Интернете о какой-то функциональности, которая, по крайней мере, позволяет копировать без папок .svn, но сейчас я не могу ее найти.
Решение
Если вы используете TortoiseSVN, вы можете использовать функцию экспорта, чтобы автоматически удалить все svn-файлы.Я думаю, что другие вещи svn имеют ту же функцию.
Щелкните правой кнопкой мыши корневую папку проекта, TortoiseSVN > Экспортировать и укажите, куда вы хотите поместить свободный каталог .svn.
Другие советы
Вот дурацкая идея с резинкой и шнурком для обуви:
Скопируйте все файлы вручную или с помощью вашего существующего метода в первый раз.Затем, поскольку я полагаю, что вы работаете на платформе Windows, установите СинкТой и настройте его в метод подписки, который эффективно копировал бы в одностороннем порядке только изменения, внесенные с момента последнего псевдокоммитирования, в production для файлов, уже находящихся в production.Если вы хотите добавить файл, вы можете просто скопировать его вручную и возобновить работу SyncToy.
Итак, мое окончательное решение таково:
Используйте команду export для экспорта в папку с именем "export" в том же каталоге, что и файл с именем "deploy.bat", затем я запускаю сценарий развертывания (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/