2010-05-24 2 views
18

Недавно у нас была ветвь SVN, которая была объединена с багажником, и нам понадобилась еще одна работа над этой функциональной/функциональной областью. Я предложил использовать ту же ветку, но мне сказали, что вы не должны повторно использовать ветвь после ее интеграции в магистраль (дана ссылка в документах SVN, я не могу ее найти сейчас). Это говорит о том, что ветка довольно бесполезна после того, как вы слились обратно в багажник, поэтому мой вопрос - когда отрасль больше не нужна, ее нужно просто удалить или сохранить?Что вы должны делать со старыми ветвями SVN?

ответ

17

Когда я интегрирую ветку, я перемещаю ее с branches/ на branches/integrated/. Сохраняет branches/, поэтому его легко найти текущую работу, но также позволяет легко выкапывать старые ветви, чтобы увидеть, какие изменения были сделаны, не требуя много археологии ревизионного номера.

+1

Я назвал это ветвями-кладбищем. –

+1

Я использовал «чердак». –

+2

Чтобы развлечь себя, я также использую комментарий о фиксации «Обрезанных старых ветвей» –

1

После некоторого периода времени, когда проект закончился, я удаляю старые ветви.

Вы можете использовать названия филиалов, но почему? Имена дешевы. Не называйте свою ветку «работать», но более конкретную, например, «data-conversion-phase-1».

+0

Что произойдет, если вы удалите ветку, а затем попытаетесь создать другую с тем же именем? в нашем случае у нас был один (я думал) конкретное имя типа «преобразование данных», не зная, что у нас будет фаза-2! –

+0

От ветвей (старый, который вы удалили, и новый, который вы создали с тем же именем) различны и не обмениваются историей изменений. Они похожи только на имя, но им также могут быть присвоены разные имена, так как вы получаете тот же эффект. –

+0

Вы можете повторно использовать имена ветвей. Я просто стараюсь этого не делать. В вашем случае я бы сделал «преобразование данных», а затем, когда я обнаружил, что второй этап должен произойти, сделайте это «преобразование данных-фаза-2». –

0

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

Повторное использование ветки после того, как она была объединена с багажником, - почти наверняка плохая идея.

+1

yup, повторное использование названия ветки похоже на повторное использование вчерашних носков – shfx

5

SVN 1.5 представил свойство «mergeinfo», которое позволяет легко реинтегрировать ветви в туловище, поддерживая повторяющиеся обновления ветвей. Это позволяет вам создать ветвь, передисоциально обновлять ветвь из ствола и, наконец, реинтегрировать ветвь в туловище (svn merge --reintegrate). Это полезно, например, при создании ветки для исправления ошибки или для разработки функциональности.

Способ реализации mergeinfo не позволяет выполнять последующую реинтеграцию, поэтому именно поэтому вам не рекомендуется повторно использовать ветку.

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

Если вы хотите использовать ветку, обычная картина, чтобы создать новую копию (филиала) с тем же именем:

  1. удалить ветвь
  2. совершить
  3. воссоздать ветвь (ветвление в пути с тем же именем)
  4. совершает
  5. работы над новой ветвью

Когда вы «воссоздаете» ветвь, на шаге 3, mergeinfo восстанавливается, поэтому вы можете без проблем реинтегрировать в будущем.

На ваш вопрос: «Итак, мой вопрос - когда отрасль больше не нужна, ее просто нужно удалить или сохранить?» Я бы сохранил ветку, поэтому она будет видна в ревизии HEAD. Отключение ветвей путается («эй, мы создали ветку для выпуска на прошлой неделе?» «Хм, я не помню ... проверьте историю репо»)

Что касается повторного использования ветки, я бы используйте соглашение, чтобы никогда не использовать повторно ветвь, и если вам нужно «добавить что-нибудь», заново создайте ее. Но, по-моему, гораздо понятнее использовать другое название ветки. Вероятно, вы можете использовать соглашение об именах для идентификации филиалов. Например, оригинал будет ветвями/Issue-1 и последующими расширениями/Issue-1.0, branch/Issue-1.1 и т. Д.

Ссылки Mergeinfo.

http://blogs.open.collab.net/svn/2008/07/subversion-merg.html http://blogs.open.collab.net/svn/2009/11/where-did-that-mergeinfo-come-from.html

0

Хорошая практика, при разработке крупных проектов, чтобы назвать свои филиалы, используя названия задач из проекта отслеживания инструмента: например, «DEV-1512», «ПОДВИГ-512», или багтрекер билеты: «BUG-5142» и т. д.

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

PS. Imagine runung svn ls на $ репо/филиалов с 9999 филиалами;)

+0

. Я могу полностью увидеть преимущество включения номера отслеживания, но у меня также есть что-то описательное. FEAT-132-image-blur-function, чтобы избежать необходимости искать эти числа для других членов команды. –

4

From Wikipedia: «После того, как филиал был вырезан или каким-либо другим способом удалить из своего источника, наиболее часто упоминается как палка»

Итак, я думаю, вы должны создать каталог «палки» на том же уровне, что и ветви

+1

+1 для умения – Kyle

Смежные вопросы