Мне нужна проверка здравомыслия здесь, если мы можем, любые идеи по исправлению/изменению следующего очень приветствуются! В последнее время мы сблизились с нашим SVN и пытаемся исправить это, поставив систему Trunk/Release на место.
У нас есть большой веб-сайт, который мы разрабатываем, и мы храним его все в SVN. Вот что мы имели в виду:
- У нас есть соединительная линия и ветвь release
- Вся работа проверяется в Trunk.
- Когда функция считается готовой к следующей версии, она объединяется в ветвь Release.
- У нас есть только одна ветка релиза и только тег "Latest", когда мы делаем push to live
- Мы надеемся, что получим все файлы, измененные с Latest на Head, чтобы предоставить нам zip, который мы можем загрузить (любые идеи по простому способу сделать это с помощью скриптов?)
Итак, мы все это установили и очень довольны собой. Кроме того, что он не работает, и почему почему.
Мы работаем над множеством различных функций/исправлений/проблем сразу, и они не все получают хорошо проверенные функции в полном объеме (но всегда работают как минимум). Затем иногда вам приходится ждать, пока клиенты не подпишут. В результате вы получаете версии, которые "готовы к жизни" разбросаны с теми, которые "все еще работают" в багажнике. Это означает, что завершенные ревизии не сливаются последовательно, а выходят из строя. Я думал, что SVN справится с этим, умная вещь, но, видимо, нет.
Вот пример:
- Пит меняет CSS, чтобы новая кнопка выглядела довольно (Редакция 1)
- Дэйв добавляет CSS к нижней части того же файла CSS, что и Пит для новой функции (версия 2).
- Dave mod получает кивок, поэтому он объединяет его в Release и фиксирует его с сообщением журнала, в котором указывается номер версии и идентификатор отслеживания ошибок.
- Пит добавляет больше кнопок, чтобы закончить этот мод, никаких изменений CSS здесь (версия 3)
- Пит затем объединяет свои моды (версии 1 и 3) в голову релиза (в котором Daves сливается в нем), но это переписывает дополнения Daves CSS, которые теперь полностью исчезают.
Это приводит к тому, что сайт разбивается, а ветвь Release становится практически бесполезной.
Итак, мы попробовали другие идеи, такие как возврат к релизу обратно в "Последний", а затем просто слияние во всех версиях 1, 2 и 3 по порядку. Это отлично работало до тех пор, пока у нас не было версии 4, которая не была готова к жизни и была обновлена 5. Внезапно мы снова получаем себя в узлах с точно такой же проблемой!
Итак, сделайте три. Вернитесь к последнему, объединитесь в редакции 5, затем сделайте любое обновление обратно в Head. Дерево конфликты в изобилии! Так что нет нет.
Я взломал в конце и построил все это вручную, но это не то, что я хочу делать регулярно, в идеале я хочу script наше развертывание, но не могу, пока Release находится в таком беспорядке.
HELP! Что, черт возьми, мы делаем неправильно? Кажется, я не могу найти решения этой проблемы о том, что вам не нужны разные последовательные версии в выпуске. Если это не возможно, это прекрасно, но как, черт возьми, мы хотим, чтобы материал был легко. Мы не можем вести ветвь для каждого изменения, сайт занимает 30 минут +, чтобы проверить, что это займет слишком много времени.
Обратите внимание, что мы используем TortoiseSVN, поэтому можем ли мы держать примеры командной строки до минимума в любых ответах?
Последняя версия TSVN и SVN версии 1.6, поэтому у нас есть funky tracking tracking и т.д.
EDIT: отличный пост в блоге, посвященный циклу dev/release (хотя с использованием GIT, но все еще релевантный) думал, что все хотели бы прочитать его, если бы нашли этот вопрос интересным. (http://nvie.com/git-model)
EDIT 2: я написал сообщение в блоге о том, как показать, на какой ветке вы работаете на своем веб-сайте, о котором меня спрашивали другие (http://www.offroadcode.com/2010/5/14/which-svn-branch-are-you-working-on.aspx). Надеюсь, это поможет. Тем временем мы смотрим на Kiln и надеемся сделать переход в следующем месяце (gulp!)