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