我已经和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)来满足,而相反的方法则不需要保持。
提前致谢。
答案 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仓库。