在我的公司,我们有一个subversion服务器,每个人都在他们的机器上使用subversion。然而,我喜欢使用git,在本地提交更改,然后在我准备好的时候“推”它们。
然而,我不能理解在下面的情况下会发生什么。假设我在本地提交了3次git,现在我准备在subversion服务器上“推送”所有内容。如果我理解正确的话,git svn dcommit基本上应该在服务器上按顺序进行3次提交,对吧?但是,如果在此期间(假设在第二次和第三次提交之间)我的另一个同事发出了提交,会发生什么呢?我能想到的场景是:
1) git类的“锁”(这可能吗?)subversion服务器在提交期间执行,因此我的提交是原子执行的,而我同事的提交是在我的提交之后完成的
2)服务器上的提交历史记录变为mine1-mine2-other-mine3 (即使'other‘失败,因为我的同事当时没有更新的工作副本)。
我认为它是第二个,但可能提交速度太快了,所以这很少成为问题。那么哪一个是1号还是2号呢?
发布于 2012-07-04 01:06:11
Git不支持任何锁,这不是Git方式(Git方式是分支和合并)。使用git-svn,您将获得mine1-mine2-other-mine3历史记录。如果您需要原子性,可以看看SubGit项目(它被安装到SVN服务器中,并为SVN存储库创建一个纯Git接口)。
最近有一个类似的question,你可能会感兴趣。
发布于 2012-07-04 00:59:04
如果你很幸运,那么排名第二,但大多数时候你就没有那么幸运了。根据我的经验,当我提交了很多提交,而其他人同时提交的时候,通常会发生两件事:
第二个真的很烦人。主要的问题是,您需要完全更新才能使用git svn dcommit。这是因为git-svn不允许服务器动态合并修订。(因为这将要求两个提交者都有一个包含两个更改的工作树)。
解决这个问题的唯一方法是我找到的here的以下步骤
<代码>H118git svn dcommit<代码>H219<代码>G220
遵循此过程可以让您从失败的地方开始。我希望他们能尽快解决这个问题,但他们说这还不是他们的优先事项。
当然,如果您通信的小组很小,并且连接到服务器的速度很快,那么这种情况就不应该经常发生。(在6个月的时间里,每天积极工作和承诺的时候,我只得到了2-3次)。
https://stackoverflow.com/questions/11315049
复制相似问题