我们公司使用(并支持!)SVN,但我倾向于使用git。我想要尝试的是拥有git存储库 - 每个项目一个,项目开发人员将能够从这个存储库中提取(当然,如果他们愿意,可以相互拉取)。但我仍然希望将所有更改推送到SVN,因为SVN由我们的技术支持维护。
我正在使用以下存储库测试方案:
我注意到直接使用'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进行更多更改,直到上一次更改为止。我曾尝试过这种行为,可能会忽略一些事情。
答案 0 :(得分:7)
实际上甚至比这更糟糕... dcommit更改上传到SVN的提交(添加git-svn-id行,更改作者信息等),即使你攻击dcommit而不尝试重新绑定。
基本上,git-svn无法在不进行rebase的情况下从SVN同步。正在开发一个可能会删除此限制的新git< - > SVN接口,但它还没有准备好。
我担心如果您想与SVN存储库保持同步,那么如果没有现在的重新定位,您的方案将无法正常工作。