如何在使用git-svn将代码推送到子版本库时保留git作者和提交日期?

4
我们从一个新的、空的subversion仓库和一个现有的git仓库开始,我想要“推”这个仓库并保留所有历史和作者信息(如果可能的话,甚至只是用户名)。
使用“git svn dcommit”,我能够在subversion仓库的历史中看到修订注释,但是作者细节默认为我的用户名,并且提交日期变成了今天的日期,即push的日期,而不是在git中的初始提交日期。
是否有一种方法可以重写这些感兴趣的属性,就像BZR->SVN那样,使用bazaar.conf覆盖和修改pre-revprop-change钩子,但这次是为Git?
谢谢。
1个回答

3

使用git-svn无法保留作者和日期信息(同样也无法保留忽略文件,匿名分支和复杂历史记录)。

如果想要将Git仓库转换为SVN并保留所有信息,请使用SubGit项目:

$ svnadmin create svn.repo

$ subgit configure svn.repo

$ #edit svn.repo/conf/subgit.conf ('git.default.repository' option) 
to set path to your bare Git repository (the repository you on the server
or you can prepare new bare repository
with "git clone --bare <Git URL> path/to/bare/git/repo")

$ #optionally prepare svn.repo/conf/authors.txt file
to configure custom authors mapping

$ subgit install

安装SubGit后,将同步并保持SVN存储库svn.repo和Git存储库path/to/bare/git/repo的同步,这样对SVN的任何提交都将导致Git提交,反之亦然(同步由钩子驱动,并且是并发安全的,因此您仍可以继续使用Git)。
要停止连续同步,请运行
$ subgit uninstall svn.repo

太好了。我们的要求只是将我们的git开发分支推送到/trunk并将其作为一个点发布分支,因此不需要双向使用,但这个方法完美地解决了问题。谢谢Dmitry。 - Shane Fitzroy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接