Как автоматически слить SVN при прохождении автоматизированных тестов? - PullRequest
5 голосов
/ 06 января 2011

После каждого коммита в транк мы автоматически запускаем кучу тестов против транка.Когда эти тесты пройдут, я бы хотел автоматическое объединение в ветку под названием «тесты пройдены».Когда тесты не пройдены, слияние не должно произойти, но как только проблема будет решена в «стволе» при следующем или последующем коммите, все изменения должны быть объединены.

Смысл в том, чтобы ветвь имелатот же контент, что и транк, но это чуть более вменяемый, чем «транк», потому что, по крайней мере, автоматические тесты пройдены.

У меня есть скрипт, который пытается сделать это вручную, но это хак с использованием пользовательских свойствэто не всегда работает правильно - как я только что узнал.Как мне лучше всего сделать это в Subversion?

Ответы [ 3 ]

5 голосов
/ 07 января 2011

Запустите эти команды в корне рабочей копии пройденных тестов всякий раз, когда вы определите, что новая редакция транка <somerev> прошла тесты:

svn update
svn merge http://example.com/svn/myproject/trunk -r 0:<somerev>
svn commit -m "merged trunk revisions up to <somerev> into tests-passed"

Каждый раз, когда вы используете команду объединения,SVN запишет слияния в свойстве svn:mergeinfo.Таким образом, приведенная выше команда должна автоматически определять, какие ревизии в диапазоне 0:<somerev> имеют право на слияние, исключая любые слияния, которые уже были сделаны.

Как вы сказали в комментарии, конфликты не ожидаются.Но иногда я видел неожиданные конфликты, возникающие в любом случае при объединении ряда версий SVN, содержащих переименования.Чтобы избавиться от этих конфликтов, вы можете использовать опцию --accept theirs-full с командой слияния, чтобы всегда принимать состояние транка.

1 голос
/ 07 января 2011

Для этого вы можете использовать инструмент непрерывной интеграции.Один из них довольно популярен: Хадсон

http://hudson -ci.org /

Вы можете написать такое поведение там.

0 голосов
/ 06 января 2011

Я мог бы представить себе использование набора тестов для этого.

По своему опыту я запустил сценарий ANT для проверки своего кода и получил окончательное условие для выполнения ветви, если тесты были успешными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...