Синхронизация общего репозитория Git с svn, приводящая к тому, что git svn rebase загрязняет репо с журналом проблем слияния без операций - PullRequest
0 голосов
/ 17 марта 2010

Вначале все было не так плохо, но теперь у меня есть сотни проблем слияния без операции (решается с помощью git rebase --skip).

Я настроил общий репозиторий для своей группы, потому что с ним легче иметь дело. Но компания использует SVN, поэтому я должен синхронизировать SVN с GIT. Сначала работал как сон, но после нескольких недель работы GIT выдает мне много следующих ошибок.

Applying:  * making all config actions work
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging app/controllers/vulnerabilities_controller.rb
CONFLICT (content): Merge conflict in app/controllers/vulnerabilities_controller.rb
Auto-merging public/javascripts/network_analysis_vulnerability_config.js
CONFLICT (content): Merge conflict in public/javascripts/network_analysis_vulnerability_config.js
Failed to merge in the changes.
Patch failed at 0046  * making all config actions work

Мой рабочий процесс:

git co master
git pull origin
git svn rebase
... deal with no-op merge problems ...
git svn dcommit
git pull origin
git push origin

Проблема в том, что то, что есть в SVN, является правильным, поэтому я использую git rebase --skip, но я должен сделать это сотни раз, прежде чем смогу dcommit.

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

1 Ответ

3 голосов
/ 18 марта 2010

Я не думаю, что этот рабочий процесс - хорошая идея. Subversion поддерживает только линейную историю, поэтому у ветви, которую вы синхронизируете с SVN, не должно быть никаких коммитов слияния. Кроме того, git svn dcommit переписывает переданные коммиты (то есть их изменения SHA), что может привести к плохим вещам, если они уже были переданы другому репо. См. Раздел КАВИТЫ git help svn.

Может быть, такой рабочий процесс мог бы помочь: http://unethicalblogger.com/posts/2008/10/git_back_subversion_mostly_automagically_part_33

...