Как решить проблемы слияния в большом хранилище Subversion? - PullRequest
1 голос
/ 05 сентября 2011

Прежде чем я объясню основную проблему, позвольте мне сказать, что я на самом деле очень заинтересован в переносе нашего контроля версий с Subversion на Git / Mercurial, если это действительно лучшее решение для наших проблем, но я действительно ищу Лучшее решение, не вызывая много ненужных нагрузок на команду. (Другими словами, я не ищу ответ «Сбросить Subversion и перейти к Git», так как он включает в себя много побоев и крутой кривой обучения.)

Теперь это не так, вот наша основная проблема:

Моя команда разработчиков работает с относительно большим репозиторием Subversion, где вся разработка делалась непосредственно на Trunk. Запрос сверху на более быстрый цикл выпуска заставил нас разделить нашу работу на отдельные ветви, каждая из которых содержала зеркало Trunk во время его создания, а подгруппы работали параллельно над каждой веткой. Новый цикл состоит в том, чтобы выпустить конкретную ветку в производство, затем объединить новые изменения в магистраль и объединить изменения магистрали в каждую из других ветвей.

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

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

(Извините, если это немного расплывчато или бессвязно; я буду рад уточнить или предоставить более подробную информацию по запросу.)

1 Ответ

1 голос
/ 05 сентября 2011

Ознакомьтесь с документацией Subversion здесь: http://svnbook.red -bean.com / nightly / en / svn.branchmerge.commonpatterns.html

Я предлагаю объединить ветви в trunk, используя Feature Branch шаблон слияния. По одному, начиная с того, который приносит меньше изменений / вреда.

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

Паттерн ветвь функций , в основном изменяет порядок этих операций.

В качестве примечания: «код очистки» - хорошая идея, поскольку каждый в команде использует его до фиксации. Subversion (или любая другая VCS) не может знать, какие изменения касаются поведения кода, а какие - улучшения.

...