2012-03-23 5 views
6

Мне немного любопытно, как используется информация о слиянии в Subversion и какие проблемы могут возникать, если информация о слиянии неверна?Subversion merge info, насколько это важно?

Например, у меня есть разветвленный branch1 и branch2 от trunk. У меня также есть subbranch1 и subbranch2, происходящих из branch1. Подумайте, я сделал некоторую разработку в branch2, а затем реинтегрировал ее обратно в багажник, используя svn merge --reintegrate ^/branch2. Затем я хотел добавить эти изменения в subbranch1 (потянув их от trunk) и по ошибке приняв команду svn merge --reintegrate ^/trunk (добавив сюда флаг , хотя subbranch1 не является непосредственным предком trunk).

Какие проблемы могут возникнуть в будущем?

ответ

2

Этот ответ устарел. Используйте Subversion> = 1.6.


Вы ветвление подход опасен в целом, но из-за аварии, это еще хуже.

У вас возникнут проблемы при реинтраминации всех ветвей.

  • Изменения, сделанные веткой2, могут быть похожими на делегирование на подрывную деятельность.
  • Удаления, сделанные вами, могут быть похожими на дополнения к подрывной деятельности.
  • трехходовой-сравнительный может дать вам странные результаты (поставив один и тот же фрагмент кода дважды в файл, например)

Вы не можете доверять трехходовую-сравнительный больше, вы должны проверить каждый изменить вручную!

Для получения дополнительной информации см. What mother never told you about svn branching and merging.

P.S. Мне нужно было что-то сделать однажды. С тех пор мы используем прыжок прыжка (см. Ссылку).

+0

Re blog post, я не думаю, что Bunny Hopping необходим с SVN 1.5, который отслеживает этот материал для вас. – hdgarrood

+0

SVN 1.5 исправил некоторые проблемы, но если у вас много слияний и разветвлений, у вас возникнут проблемы. –

+0

Банни-хоп не требуется. Это обходной путь для плохой практики SVN. Почему люди ожидают, что сливание будет простым, если они собираются сделать много изменений в trunk AND a branch? (Особенно по тому же коду!) – exception

3

Информация Merge отслеживает эту информацию:

  • отношений между ветвями (subbranch1 возник из branch1, которая возникла из trunk и т.д.)
  • Какие изменения были уже объединены

Если информация о слиянии отсутствует или некорректна, вам придется отслеживать слияния вручную, и это может быть подвержено ошибкам. Используя информацию о слиянии, вы просто позволяете Subversion отслеживать всю эту информацию.

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