代码之家  ›  专栏  ›  技术社区  ›  nonopolarity

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

  •  6
  • nonopolarity  · 技术社区  · 14 年前

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

    1) 你永远不知道它处于不一致的状态,所以当你的代码处于不一致的状态时,你试着调试代码2个小时。

    rake db:migrate script/generate controller 对代码库造成一些损坏或不一致?

    3 回复  |  直到 14 年前
        1
  •  16
  •   silk    14 年前

    拉和推在Git和Mercurial中是原子的。这意味着它们永远不会允许您获得部分按下的变更集。你总是会得到一个完整的变更集。

    更新:我只是想你可能会害怕“如果有人在推一系列的变更集,我会得到其中一些”。然后是项目中接受的所有通信和工作流。

    人们通常认为,对主干的每次提交(master或您如何调用它)都应该使代码保持一致状态。如果有人知道他将进行的更改会造成暂时的不一致,那么他应该在分支中进行更改,如果已经准备好,则将其合并到主干中。然后trunk在一次提交中被带到分支的状态,因此您将始终看到它的一致性。

    更新2:正如tonfa在评论中所说-在Mercurial push中是原子的。我在git中做了一些简单的测试,这里的push也是原子的。因此,如果您知道其他开发人员推送工作变更集,就不必担心这种不一致。(尽管之前关于分支的声明仍然有效)。

        2
  •  2
  •   Vadim Kotov First Zero    7 年前

    这个答案给对话增加的是,您可以选择添加预提交挂钩,在允许提交之前强制测试套件的干净运行。

    http://git-scm.com/docs/githooks

    https://www.mercurial-scm.org/wiki/Hook

        3
  •  1
  •   Chris B.    14 年前

    pull 在里面 ,如果没有更改,我将得到:

    pulling from <REPOSITORY NAME>
    searching for changes
    no changes found
    

    所以我知道自从上次拉车后就没什么变化了。另外,您始终可以浏览存储库历史记录并查看所做的更改。

    推荐文章