-->

水银:移植物抗纪录与qrecord与搁置与移植与dirstate与队列(Mercurial: gra

2019-08-03 08:03发布

我在评估过程中新的Mercurial,仍然不知何故,所以这四个概念样的困惑我。 有些人提到的是一个等同于Git的分期/指数的概念,或有的甚至比Git的分期一个更好的。

如何做好四个命令hg grafthg recordhg qrecordhg shelve (和hg transplant ,但是这是在解释移植物抗移植的话)进行相互比较,以及队列dirstate的概念,怎么样? 在该用例是一个choosen比其他?

我知道有为每一个帮助页面,但它仍然是很难弄清楚每个人所做的一般VCS​​对我来说是一个新课题。

Answer 1:

水银的设计根本不包括临时区域的概念。 即,存在局部修改和提交之间没有中间状态。

这是每一个你所提到的概念的概述:

hg graft是相当于git cherry-pick 。 它的副本提交从一个分支到另一个。 一个典型应用此功能是从一个发布分支复制bug修复到另一个。 此命令替换了旧的(现在已过时) hg transplant扩展。

hg recordhg qrecord类似于git add --patch 。 它们允许您以交互方式选择提交帅哥。 所以,如果你修改一个文件的几个不同的领域,你可以选择哪些区域(即帅哥),你居然要提交,哪些是你要离开本地修改。

qrecord仅当您已mq启用。 它承诺的mq补丁,而不是一个标准的承诺。

hg shelve类似于git stash 。 它可以让你暂时抛开局部修改的文件(或文件的帅哥)。 那么这些改变可以是unshelved当你为他们准备好。

dirstate是一个内部类的水银源代码的。 它不暴露给用户。

Mercurial Queues (也称为mq )很可能你会得到在水银的临时区域最接近。 下面是从水银的wiki的描述:

变化保持作为致力于为水银补丁。 承诺可以被删除或重新排序,和底层的补丁可以基于工作目录所做的更改被刷新。 这个补丁目录,也可以放在版本控制之下,所以你可以有你的补丁所做的更改单独的历史。

mq经常被用来抛光/返工承诺,你是在本地测试,但还没有推送到公共场所。 有些人还用它来维护一组修改的第三方代码。



文章来源: Mercurial: graft vs. record vs. qrecord vs. shelve vs. transplant vs. dirstate vs. queue