Subversion: автоматически находить новейшую стабильную ветку на сервере сборки - PullRequest
2 голосов
/ 17 ноября 2011

Макет хранилища Subversion следует шаблону / trunk / branch / ..., поэтому мы имеем:

/trunk
/branches/stable-20100716
/branches/stable-20111231
/branches/stable-20110401
/branches/specialversion
/tags/some-tag

Затем у нас есть сервер сборки, который может собрать транк и текущую стабильную версию.

Вопрос: как сервер сборки находит текущую стабильную версию?

Мы используем CruiseControl (Java-версия) и Ant для процесса сборки в среде Windows. Тем не менее, сервер Subversion - это Linux.

В CVS мы бы использовали тег. Это первый раз, когда я пропускаю теги в Subversion. Я мог бы пометить ветку, но чтобы поддерживать ее в актуальном состоянии, я бы хотел удалить / добавить метку при каждом коммите в текущей стабильной версии. Может быть, хук коммита мог бы помочь, но есть ли более простое решение для автоматизации этого? (Может быть, без использования скриптового хоста Windows или около того?)

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

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

Возможно, вы могли бы создать символьную ссылку , чтобы сделать / branch / stable-version для перенаправления на вашу последнюю стабильную ветвь (ручная операция, но делать только один раз при каждом создании новой стабильной ветки).Таким образом, ваш репозиторий будет выглядеть так:

/trunk
/branches/stable-20100716
/branches/stable-20111231
/branches/stable-20110401
/branches/specialversion
/branches/stable-version    # symbolink link to stable-20111231
/tags/some-tag
1 голос
/ 17 ноября 2011

Кажется, самое простое решение - переименовать ваши стабильные каталоги.Если у вас есть только одна стабильная текущая версия, то у вас должен быть только один стабильный каталог.

Если вам нужно сохранить последние 3 или 4 стабильных версии, настройте 3 или 4 стабильных каталога и проект Cruisecontrol для каждой.

Если вы хотите, чтобы сборочная машина автоматически собирала версию с самой поздней датой и использовала ее в качестве «стабильной» сборки, то вам может потребоваться какое-то волшебство с конфигурационным файлом CruiseControl.Возможно использование динамических значений в конфигурации проекта.

http://www.cruisecontrolnet.org/projects/ccnet/wiki/Dynamic_Values

...