1

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

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

我完全可以通过 post push hooks 做到这一点,但我有以下问题:

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

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

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

请注意,我可以通过确保一侧同步(从 GIT 到 SVN)来满足我的要求,而相反的情况不一定要成立。

提前致谢。

4

1 回答 1

1

1)您可以通过创建具有以下格式的作者文本文件来配置本地 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)您可以通过使用以下选项克隆 SVN 存储库git-svn-id避免预先提交:--no-metadata

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

git-svn-id不幸的是,当推回 SVN时,没有办法避免。

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

于 2014-02-13T12:41:29.180 回答