我读过大量“从SVN到Git的”等“混帐svn的工作流程”在网络上的文章,仍然我认为他们经常处理过于简单的情况。他们通常针对那些只想在本地使用git和hack的人,而不使用git的全部功能,比如在多个开发人员之间进行pull,fetch,merge等操作,他们都会使用git-svn克隆svn仓库,然后仍然期望能够随时将他们的变化推送到(官方)svn仓库,并重新开始在git中工作并共享他们的东西等。同一个svn仓库的不同git-svn克隆可以共享更改,然后git svn dcommit?
每当这些文章承认你不能做你所做的一切在纯粹的混帐中,后果和可能的混乱从未被清楚地解释过(或者也许只是我?)。即使是git-svn手册页也提到了警告,但并不是真正以广泛的方式。
基于我读过,我觉得当混帐SVN在特定的方式,我将在下面说明使用可能有问题。有人可以告诉我,如果我对此正确吗?
这里是“通缉令”的做事方式:
- 我们有一个项目在SVN仓库
- 开发一个git - svn的克隆的svn的回购。他开始在本地破解东西
- 开发人员B git-svn-clone与svn相同。他开始自行破解事物。
- 这样做了一段时间,可能增加开发者的C/d/...,并具有其他开发商谁做后的“标准” SVN提交到原来的回购,git的用户希望分享自己的代码和做各种的git魔术。
- 那些混帐用户中的任何一个希望能够推动现已合并更改为SVN
我的问题是(dcommit):我是在做梦?我前一段时间阅读过,在我认为的git书中,git-svn-clone可以创建git仓库,这当然是svn仓库的“镜像”,但不同开发人员创建的git仓库会有不同的“ ID“和提交会有不同的哈希值。所以我的理解是,那些git repos不会共享任何常见的git祖先,因此将无法使用所有需要共享,合并等的git命令。这是真的吗,我们会面对这个工作流程的问题吗?
有时我读过这个可以做到,至少使用一个“官方”裸git仓库,这将是唯一一个被git-svn克隆的,并且所有的git用户都必须从这个仓库开始。然后你需要一个负责这个中心git回购的人,并收集git开发者之间的变化,然后把所有的东西交给svn回购。这将是git用户“不知道”原始git repo来自svn并让他们使用所有git命令的唯一方法。唯一需要流利的git和svn(并了解git-svn警告)的人将是“合并经理”(或他所称的任何人)。
上午我完全误解的git - svn的注意事项?有没有更简单的方法来做到这一点?
谢谢。我不知道这位“大师”。好吧,看起来我们被卡住了。没有合并/拉动,差异和补丁建议,这听起来不像Git的力量(除了在本地和单独完成的小事情) –
大师确实提到通过邮件分发的补丁是可以的。 – nes1983
“不合并/拉取,差异和补丁”..--但只是:“在我们计划从svn dcommit分支的分支上”。这意味着,是的,你可以*去混合/拉/樱桃,并获得力量/魔法;你只需要在另一个分支上消除你的变化;在你将它推入svn之前。这并不难,重新设定或合并--squash应该在那里完成。 – inger