没有变基的git svn dcommit

时间:2011-01-10 20:53:21

标签: svn git git-svn rebase

我们公司使用(并支持!)SVN,但我倾向于使用git。我想要尝试的是拥有git存储库 - 每个项目一个,项目开发人员将能够从这个存储库中提取(当然,如果他们愿意,可以相互拉取)。但我仍然希望将所有更改推送到SVN,因为SVN由我们的技术支持维护。

我正在使用以下存储库测试方案:

  1. SVN-repository - 这个由我们公司维护,我们的团队应该在某个时候推动所有变更
  2. git-svn-clone - 这是从上面的SVN克隆的git存储库 - 所有项目开发人员都应该在这里推送他们的提交
  3. git-dev-clone - 这是开发人员的git存储库。
  4. 我注意到直接使用'git svn rebase'和'git svn dcommit'的唯一问题是,在每次从开发人员的git存储库推送到git-svn-clone存储库后,我必须将开发人员的存储库重新命名为一旦更改将传播到SVN并重新定位。我想要实现的是在每次推动后避免变基。

    请注意,我假设每个项目开发人员只使用git存储库,没有人会直接使用SVN。

    我能够通过在推送并在使用SVN客户端将这些更改提交到SVN后逐个检出'git-svn-clone'存储库中的每个git提交来手动实现此行为。我相信'git svn dcommit'会做同样的事情,但它也会从SVN同步并更改提交SHA标识符,这会强制我进行rebase。

    --no-rebase的{​​{1}}选项没有帮助,因为在第一次提交传播到SVN后git svn dcommit不允许我对SVN进行更多更改,直到上一次更改为止。我曾尝试过这种行为,可能会忽略一些事情。

1 个答案:

答案 0 :(得分:7)

实际上甚至比这更糟糕... dcommit更改上传到SVN的提交(添加git-svn-id行,更改作者信息等),即使你攻击dcommit而不尝试重新绑定。

基本上,git-svn无法在不进行rebase的情况下从SVN同步。正在开发一个可能会删除此限制的新git< - > SVN接口,但它还没有准备好。

我担心如果您想与SVN存储库保持同步,那么如果没有现在的重新定位,您的方案将无法正常工作。