将分支从svn移到git

时间:2018-09-28 04:08:07

标签: git bitbucket git-svn

我在SVN中有2个分支-主干和释放(从主干分支)。 目的是将它们迁移到GIT中的SINGLE存储库中。

SVN(trunk)----->GIT(master)
SVN(release)---->GIT(release) - where GIT(release) has been branched from GIT(master)

此后,我们每天刷新相应的SVN源-> GIT目标分支,以作为临时的迁移窗口。

这可能吗?
如果可以,该如何实现?

2 个答案:

答案 0 :(得分:2)

首先,对svn存储库进行备份(或两个)。

然后,安装svn2git。在MacOS上:

brew install ruby
gem install svn2git

或者在Debian上:

sudo apt-get install git-core git-svn ruby
sudo gem install svn2git

然后(可选,但建议)列出svn信息库中的所有作者:

svn log --quiet \
| grep -E "r[0-9]+ \| .+ \|" \
| cut -d'|' -f2 \
| sed 's/ //g' \
| sort \
| uniq

并创建一个authors.txt文件,将svn作者映射到您要在git中使用的帐户。

运行svn2git

mkdir new-git-repos
cd new-git-repos
svn2git path-to-svn-repos --no-minimize-url --authors path-to-authors.txt

验证新的git存储库(git loggit taggit branch -a等),如有必要,重命名分支和标记,还可以选择将新存储库推送到服务器。

>

有关更多食谱,请参见svn2git README.md。如果您有权访问svn主存储库,并且在转换为git之前需要对提交历史记录进行更复杂的重写,请使用svnadmin

答案 1 :(得分:2)

如果您想同步运行SVN和Git一段时间,还可以查看SubGit。它会在SVN和Git之间创建一个双向镜像,因此新的SVN版本将自动推送到Git,反之亦然。

它具有灵活的映射设置,因此您可以指定哪个分支到达何处,并在需要时从同步中排除某些文件。

这是一种商业产品,但对于由10个Git提交者组成的小型团队是免费的。