Управление филиалами в Subversion - PullRequest
2 голосов
/ 07 ноября 2011

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

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

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

Ответы [ 3 ]

7 голосов
/ 07 ноября 2011

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

1 голос
/ 08 ноября 2011

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

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

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

the prefered branching structure

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

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

1 голос
/ 07 ноября 2011

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

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

...