svn ребазинг и история потеряны - PullRequest
8 голосов
/ 02 октября 2009

В настоящее время у нас есть 2 филиала:

/repo/branch/current_version
/repo/branch/next_version

current_version - это ветка, в которой в настоящее время работают все разработчики.

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

Поскольку на current_branch ведется разработка, мы периодически думали (скажем, раз в 2 недели) перебазировать next_version. Это необходимо для синхронизации обеих веток, поэтому, когда все разработчики в конечном итоге отбросят current_branch и перейдут к next_release, next_release будет содержать все функции current_branch, интегрированные и протестированные.

Проблема в перебазировании. На самом деле ребазинг объединяет последние коммиты current_branch с next_version. Поэтому, если я рассмотрю историю принятых файлов в next_release, все, что я увижу, это коммиты слияния, а не историю (commitits / авторы / аннотации) current_version.

Я что-то пропустил?

1 Ответ

20 голосов
/ 02 октября 2009

Нет, вы ничего не пропустили. Это большая проблема с использованием SVN для контроля версий.

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

Вот почему вышло новое программное обеспечение для контроля версий с улучшенными возможностями слияния (на ум приходят Git, Mercurial и Bazaar).


РЕДАКТИРОВАТЬ: Видимо SVN исправил эту проблему. SVN 1.5 и выше включают журналы и аннотации, чувствительные к слиянию . Используйте флаг --use-merge-history (-g) с svn merge и svn blame, чтобы увидеть сообщения фиксации из объединенной ветви.

...