Сценарий:
- Программист создает ветку для проекта 'foo' под названием 'my_foo' в версии 5
- Программист делает несколько изменений в нескольких файлах, когда работает над функцией "my_foo".
- В конце каждого основного шага, скажем, добавляя несколько новых функций в класс, программист делает
svn commit
в соответствующих файлах, поэтому передавая их ветке - Спустя несколько недель и позже многие коммиты (каждая фиксация имеет журнал фиксации, описывающий, что он сделал), программист объединяет ветку обратно в туловище:
#Assume the following is being done from inside a working copy of the trunk:
svn merge -r 5:15 file:///path/to/repo/branches/my_foo
Hazzah! он объединил все свои изменения обратно в багажник! Там много радости и питья горной росы.
Теперь позвольте сказать, что еще один программист приходит через неделю и обновляет свою рабочую копию от версии 5 до версии 15. "Ух ты", говорят они. "Интересно, что изменилось с момента пересмотра 5". Затем программист делает svn status
на своей рабочей копии и получает что-то вроде этого:
------------------------------------------------------------------------ r15 | programmer1 | 2010-03-20 21:27:04 -0400 (Sat, 20 Mar 2010) | 1 line Merging Version 2.0 Changes into trunk ------------------------------------------------------------------------ r5 | programmer2 | 2010-02-15 10:59:55 -0500 (Mon, 15 Feb 2010) | 1 line Added assets/images/tumblr_icon.png to trunk
Что, черт возьми, случилось со всеми примечаниями, которые другой программист применил ко всем своим обязательствам в своей ветке? Неужели те, кого не срывают во время слияния? Я с ума сошел или просто что-то забыл?