git merge
должен быть в состоянии обнаружить (до определенной точки) переименования.
recursive
Это может разрешить только две головыиспользуя алгоритм трехстороннего слияния.
Кроме того, он может обнаруживать и обрабатывать слияния, связанные с переименованием.
Это стратегия слияния по умолчанию при извлечении или слиянии одной ветви.
Но git-svn
может только импортировать / экспортировать из / в SVN, но не выполнять слияние.
И слияние сложно:
CAVEATS
Для простоты и взаимодействия с менее способной системой (SVN), рекомендуется, чтобы все git svn
пользователи клонировали, выбирали и dcommit напрямую с сервера SVN и избегали всех git clone / pull / merge / pushоперации между репозиториями git и ветвями.
Рекомендуемый метод обмена кодом между ветвями git и пользователями - это git format-patch и git am, или просто 'dcommit' для SVN-репозитория.
Запуск git mergeили git pull НЕ рекомендуется на бюстгальтереНч ты планируешь приехать из.Subversion не представляет слияния каким-либо разумным или полезным способом;таким образом, пользователи, использующие Subversion, не могут видеть сделанные вами слияния.Более того, если вы объединяете или извлекаете из ветки git, которая является зеркалом ветки SVN, dcommit может зафиксировать неправильную ветку.
Если вы сделаете слияние, обратите внимание на следующее правило: git svn dcommit попытаетсяcommit поверх SVN commit, названного в
git log --grep=^git-svn-id: --first-parent -1
Поэтому вы должны убедиться, что самый последний коммит ветки, в которую вы хотите dcommit, является первым родителемслияния.В противном случае наступит хаос, особенно если первый родитель является старшим коммитом в той же ветке SVN.