Управление филиалами в Subversion

Я не думаю, что я делаю что-то правильно. Я использую Subversion в качестве VCS для веб-сайта нашей организации. Я единственный разработчик, и я использую bugzilla в качестве моей системы отслеживания ошибок. У меня есть bugzilla и svn, слабо связанные с использованием свойств bugtraq, так что я могу связать свои комментарии с bugzilla. Сейчас я делаю то, что когда я получаю запрос на выполнение какой-либо работы на сайте (улучшение, исправление, изменение содержимого), я создаю ошибку [xx] в bugzilla, а затем создаю ветку с именем bug[xx]. После выполнения задачи я вручную экспортирую изменения ветки на наш бета-сайт, изменение проверяется и проверяется, а затем я объединяю ветку с указанием ошибки # с помощью свойства bugtraq.

Это работает довольно хорошо, за исключением случаев, когда у меня есть более одного или двух изменений. Если я создал 10 веток для десяти рабочих запросов, я хочу знать, как легко определить, какие из них уже объединены в транк, а какие нет. Если я должен использовать свойство mergeinfo, которое кажется сумасшедшим...

Я не хочу переключаться с подрывной деятельности, поэтому не предлагайте это.

3 ответа

Решение

Почему бы вам просто не удалить ветку, когда она была реинтегрирована в ствол? Это то, что вы должны делать (в общем случае), когда ветвь функций была реинтегрирована. Таким образом, диагностика проста: если ветвь существует, она не была реинтегрирована.

Создание ветки для каждой ошибки, с моей точки зрения, не очень хорошая практика. Как упоминается в рекомендациях по ветвлению, вы должны создавать ветки в двух случаях:

  1. Когда вы разрабатываете новую функцию, которая может занять много времени (ветвь функции) и
  2. Когда вы хотите сохранить свою последнюю выпущенную версию (Release Branch).

Кажется, вам просто нужна вторая ветка. Чтобы было понятнее, взгляните на картинку ниже:

предпочтительная ветвящаяся структура

Ветвь разработки - это та, которая хранится в вашем транковом каталоге (зеленая линия). Вы можете создать ветвь, называемую ветвью релиза (красная линия), и объединить в нее изменения, которые вы хотите выпустить. Таким образом, только выбранные изменения вступают в вашу выпущенную версию. Если вы разрабатываете новую функцию, которая может занять у вас более 1-2 недель, создайте ветку компонента (синяя линия) и объедините изменения, когда вы закончите. Ветви объектов могут быть удалены по завершении.

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

Ваш рабочий процесс кажется мне довольно хорошим. Однако после слияния с транком вам больше не нужна ветка с ошибками, поэтому удалите ее. Таким образом, у вас будет только количество веток как открытых ошибок.

Вы всегда можете вернуть ветку, если вам это нужно, но это не загромождает вещи.

Другие вопросы по тегам