使用同步SVN备份的Git

时间:2014-02-13 12:06:27

标签: git svn synchronization metadata dcommit

我已经和SVN工作了一段时间,我现在正在迁移到GIT,原因很明显。我已经可以从svn中创建git存储库了。

由于我对GIT不太自信,在有效选择它作为我的版本控制系统之前,我想在使用GIT的同时保持SVN存储库与GIT存储库同步。

我能够通过后推钩实现这一点,但我有以下问题:

1)svn提交由同一个用户(控制执行d提交的GIT存储库的用户)完成。

2)为了让git svn评估要在SVN上提交的新差异,它通过添加丑陋的“git-svn-id”来更改GIT提交元数据。这会改变commit-sha,因此需要额外的git pull,而且还会在存储库树中创建一个“菱形”。

有没有办法避免这种情况?

请注意,我可以通过确保单方同步(从GIT到SVN)来满足,而相反的方法则不需要保持。

提前致谢。

1 个答案:

答案 0 :(得分:1)

1)您可以通过使用以下格式创建an authors text file来配置您的本地GIT存储库,以便在SVN用户和GIT作者之间来回映射:

svnjohndoe = John Doe <john.doe@acme.com>

您必须通过指定git svn clone选项告诉--authors-file使用它:

$ git svn clone http://someproject/svn --authors-file=authors.txt

2)您可以通过使用git-svn-id选项克隆SVN存储库来避免提交前面的--no-metadata

$ git svn clone http://someproject/svn --no-metadata

不幸的是,pushing back to SVN时无法避免git-svn-id

但是,避免更改提交SHA的解决方法是首先推送到SVN(通过git svn dcommit),然后然后推送到您的上游GIT仓库。