"Отметить" экспорт SVN с ревизией - PullRequest
5 голосов
/ 10 июня 2009

Я ищу решение для следующей ситуации.

Мы используем Subversion, и помимо среды разработки, где мы используем извлечения, у нас есть тестовая среда, которая должна максимально приближаться к рабочей среде.

Таким образом, теперь мы настроили его так, чтобы среда обновлялась с помощью экспорта SVN. Однако, поскольку мы просто хотим получить последнюю версию, мы не знаем, какая версия была экспортирована.

Есть ли какой-нибудь способ «пометить» этот экспорт, например, добавив какой-нибудь сгенерированный файл, который указывает, какая ревизия была экспортирована? (Мы не хотим экспортировать теги, так как мы будем обновлять несколько раз в течение одного цикла выпуска.)

Ответы [ 3 ]

3 голосов
/ 10 июня 2009

Одна вещь, которую вы можете сделать, это убедиться, что вы экспортируете из известной ревизии, и записать этот номер ревизии в текстовый файл при экспорте. Команда svnversion сообщит вам номер редакции рабочего каталога. Поэтому введите svn update, чтобы получить последнюю версию, затем svn export в место развертывания, затем svnversion, перенаправив вывод в текстовый файл в том же месте, что и экспорт. Номер редакции будет версией на момент обновления, даже если с тех пор кто-то зафиксировал новый код.

Конечно, вы захотите автоматизировать описанный выше процесс в сценарии оболочки или что-то в этом роде.

2 голосов
/ 03 марта 2010

Вы можете сделать svn info /path/to/repository непосредственно перед (или после) экспортом, но вам придется заблокировать, чтобы убедиться, что никаких изменений не было.

В качестве альтернативы, используя технику, описанную в вашем комментарии, и прокручивая сценарий оболочки, например:

svn export /path/to/repository | grep ^Exported > revision.txt

или

svn export /path/to/repository | tail -l > revision.txt
0 голосов
/ 03 марта 2010

Кроме того, вы можете сделать svn update, а затем svn export из этой локальной копии. Преимущество этого заключается в том, что Subversion будет использовать «rsync» (или любой другой алгоритм, который он использует) для обновления только тех файлов, которые были изменены. А затем вы просто экспортируете из своей локальной копии, сохраняя пропускную способность и сохраняя всю информацию о хранилище с вашей локальной проверкой.

Создайте две директории, одну для извлечения и одну для экспорта, затем разверните с помощью двухэтапного процесса:

svn update /path/to/repository checkout/project
svn export checkout/project export/project
...