Вы можете синхронизировать SVN с Git, используя git-svn (1) .
Если у вас уже есть Git-репозиторий и вы хотите связать его с другим SVN-репозиторием, вы можете попробовать что-то вродео voodoo, см. http://blog.experimentalworks.net/2009/07/git-voodoo/.
В блоге показано, как преобразовать существующий Git-репозиторий, не относящийся к git-svn, в Git-репозиторий с поддержкой git-svn с помощью нового удаленного репозитория SVN.Вы можете немного изменить рабочий процесс voodoo, чтобы импортировать существующий SVN-репозиторий в свой Git-репозиторий:
Импортировать ствол как параллельную ветвь в существующий Git-репозиторий
cd GIT-REPO
git svn clone --stdlayout SVN-URL .
Настройка трансплантата:
TRUNK_HEAD=`git rev-parse trunk`
MASTER_INIT=`git rev-list --reverse master | head -1`
echo $MASTER_INIT $TRUNK_HEAD >.git/info/grafts
Узнайте диапазон в основной ветви, который будет добавлен к транку, например, только изменения начинаются с тега v2.0 будет добавлено к стволу.
Перебазировать ствол
git checkout master
git rebase --onto trunk v2.0 master
Передать к стволу
git svn dcommit
Подсказка по использованию: используя трансплантаты с git-svn, вы должны убедиться, что вы не dcommit
пустых коммитов.В противном случае dcommit
потерпит неудачу.Чтобы отфильтровать пустые коммиты, попробуйте
git filter-branch --prune-empty
до первого раза dcommit
.