3. 介绍Mercurial

3.1. 介绍

Mercurial 管理包含修订树的分布式存储库(每个修订指示获取下一个修订所需的更改,依此类推)。在本地,我们有一个包含修订树的存储库和一个工作目录。可以将其放入其本地存储库的一个版本的工作目录中,进行修改,然后将其推送到存储库中。也可以从另一个存储库获取修订,或者将自己的修订从本地存储库导出到另一个存储库。

与CVS/Subversion不同,我们通常为每个项目创建一个要管理的存储库。

在协作开发中,我们通常创建一个可供项目的所有开发人员访问的中央存储库。这些中央存储库用作参考。根据他们的需要,每个人都可以有一个本地存储库,他们必须不时地与中央存储库同步。

3.2. 主要命令

  • 创建本地存储库::

    hg clone ssh://myhost//home/src/repo
    
  • 请参阅本地存储库(qt中的图形工具)的内容:

    hgview
    
  • 在当前目录中添加子目录或文件:

    hg add subdir
    
  • 将本地存储库中的特定版本(或最后一个版本)移动到工作目录:

    hg update [identifier-revision]
    hg up [identifier-revision]
    
  • 在其本地存储库中,远程存储库中包含的修订树(这不会更改本地目录)::

    hg pull ssh://myhost//home/src/repo
    hg pull -u ssh://myhost//home/src/repo # equivalent to pull + update
    
  • 查看本地存储库分支的头是什么,如果 pull 返回一个新分支:

    hg heads
    
  • 提交本地存储库中的工作目录(并创建新修订)::

    hg commit
    hg ci
    
  • 与本地目录的母亲修订版合并,本地负责人的另一个修订版(新修订版将是两个母亲修订版)::

    hg merge identifier-revision
    
  • 导出到远程存储库,其内容本地响应中的修订树(这不会更改本地目录)::

    hg push ssh://myhost//home/src/repo
    
  • 查看哪些本地修订不在其他存储库中::

    hg outgoing ssh://myhost//home/src/repo
    
  • 查看在本地未找到的存储库的修订版本:

    hg incoming ssh://myhost//home/src/repo
    
  • 查看从工作目录中取出并修改的本地存储库的修订版本:

    hg parent
    
  • 查看工作目录和本地存储库的母版本之间的差异,可能在本地存储库中提交它们:

    hg diff
    hg commit-tool
    hg ct
    

3.3. 最佳实践

  • 记住 hg pull -u 定期,尤其是以前

    hg commit .

  • 记住 hg push 当存储库包含相对稳定的更改版本时。

  • 如果A hg pull -u 创建了一个新的分支机构负责人:

    1. 查找其标识符 hg head

    2. 与合并 hg merge

    3. hg ci

    4. hg push

3.4. 更多信息

有关Mercurial的更多信息,请参阅Mercurial在线项目。 documentation.