使用Git或Mercurial,您如何知道何时进行克隆或拉取,没有人检入文件(推送它)?

nop*_*ole 6 git mercurial frameworks dvcs

使用Git或Mercurial,您如何知道何时进行克隆或拉取,没有人检入文件(推送它)?重要的是:

1)您永远不会知道它处于不一致状态,因此当您的代码处于不一致状态时,您尝试2小时尝试调试代码.

2)与所有的框架代码(诸如Ruby on Rails的) -可能数百个文件-如果一些文件不一致与其他,不能rake db:migratescript/generate controller造成一些损坏或不一致的代码库?

sil*_*ilk 16

在Git和Mercurial中,拉和推是原子的.这意味着他们永远不会允许您获得部分推送的变更集.您将始终获得整个变更集.

更新:我只是觉得你可能会害怕"如果有人正在推动一系列变更集,我会得到其中的一些".然后是项目中接受的通信和工作流程.

人们经常同意,对trunk(master或者你如何调用它)的每次提交都应该使代码保持一致状态.如果有人知道他会做出会造成暂时不一致的更改,他应该在分支机构中进行更改,如果已准备好将其合并到主干.然后在一次提交中将trunk带到分支的状态,这样你总能看到它是一致的.

更新2:正如tonfa在评论中所说 - 在Mercurial推动是原子的.我在git中做了一些简单的测试,推送在这里也是原子的.因此,如果您知道其他开发人员推动工作变更集,那么您不必担心这种不一致.(虽然早期关于分支的陈述仍然有效).

  • 我不知道git,但是如果有人推动多个cset,它们只会在推送完成后才会出现,原子上(我的猜测是git做同样的事情,只在指针处将指针改为分支顶部)结束), (4认同)