"Отметьте" экспорт SVN с ревизией

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

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

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

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

Ответ 1

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

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

Ответ 2

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

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

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

или

svn export /path/to/repository | tail -l > revision.txt

Ответ 3

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

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

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