我已经阅读了很多关于“从svn转向git”和其他“git-svn工作流程”的文章,并且我认为它们通常处理过于简单的情况。它们通常面向那些只想使用git并本地hack,而不使用全部git功能(如在多个使用git-svn克隆了svn存储库的开发人员之间进行pull、fetch、merge等操作),然后仍然希望能随时将其更改推送到(正式的)svn存储库,并回到使用git和共享他们的东西等。
每当这些文章承认您无法完成纯git中可以完成的所有操作时,其可能造成的后果和可能的失败都没有得到清晰的解释(或者也许只是我?)。即使是git-svn手册也提到了注意事项,但并没有详细说明。
根据我所读的内容,我觉得在以这种特定方式使用git-svn时可能会出现问题,我会在下面描述。有人能告诉我我是否正确吗?
以下是“期望”的工作方式:
- 我们在svn存储库中有一个项目
- 开发人员A使用git-svn-clone克隆svn仓库。他开始在本地修改内容
- 开发人员B使用相同的git-svn-clone克隆svn仓库。他开始进行自己的修改。
- 在这样做一段时间后,可能添加了开发人员C/D/...,并有其他“标准”的svn提交到原始仓库的开发人员,git用户将想分享他们的代码并做所有种类的git操作。
- 任何一个这些git用户都希望能够将现在合并的更改推送到svn(dcommit?)
有时候我看到这可以通过至少使用一个"官方"裸git存储库来完成,该存储库将是唯一一个被git-svn克隆的存储库,所有git用户都必须从这个存储库开始。然后您需要有人负责这个中央git存储库,并收集git开发者之间的更改,然后将所有内容dcommit到svn存储库。这将是让git用户“不知道”原始git存储库来自svn的唯一方法,并让他们随意使用所有git命令的方式。唯一需要精通git和svn(并了解git-svn注意事项)的人是“合并管理器”(或他被称为什么)。
我是不是完全误解了git-svn注意事项?有没有更简单的方法来做到这一点?