Создание производственной сборки PHP-проекта с помощью Subversion

StackOverflow https://stackoverflow.com/questions/5872

Вопрос

Если вы работаете на 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/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top