Наконец-то у меня было время повозиться с ветками / слияниями с git и svn, и я нашел случай, который убивает svn, но прекрасно работает с git:
Допустим, проект состоит из этих файлов:
/main.cpp
/sub1/sub1.cpp
/sub1/sub1.h
- Создать ветку
- В транке переместите sub1. * В корневой каталог, удалите подкаталог sub1.
- В ветке внести некоторые изменения в /sub1/sub1.cpp
- В транке внести некоторые изменения в /sub1.cpp
- Слияние ветки и ствола.
SVN теряет все изменения, сделанные в ветке в пункте 3, аналогичные изменения в git прекрасно объединяются. Для меня достаточно отклонить SVN как систему контроля версий для любого проекта, требующего ветвления.