HC4*_*ica 6 git version-control mercurial branch
Git的用户寻求实现涉及水银轻量级分支的工作流程往往是指出于水银书签.简而言之,建议维护多个与git分支对应的头,并用书签命名.
在这样的工作流程中的一个共同愿望是查看当前分支中的所有提交的列表,因为它是从父分支(通常master或另一个长期分支)分支的.在git中,这可以通过以下方式完成:
git log <master>..HEAD
Run Code Online (Sandbox Code Playgroud)
其中<master>是父分支的名称.
我想知道,Mercurial中这个带有书签的命令相当于什么?
我正在寻找具有以下属性的命令:
master.小智 6
Git log man-page(带有Git revisions man-page的链接)定义了如下的范围规范:
<rev1>..<rev2>
Include commits that are reachable from <rev2> but exclude those that are reachable from <rev1>.
Run Code Online (Sandbox Code Playgroud)
它还说关于订单:
By default, the commits are shown in reverse chronological order.
Run Code Online (Sandbox Code Playgroud)
鉴于此规范,Mercurial revset
reverse(ancestors(.)-ancestors(<bookmark>))
Run Code Online (Sandbox Code Playgroud)
应该足够了.
仔细看看,这个revset实际上遵循了规范.它以相反的顺序显示从当前工作副本的父级可以访问的提交,但不包括从给定书签可访问的提交(在您的情况下为"master").我认为Git的语法是这个规范的简写.您可以使用所谓的revset别名在Mercurial中执行相同的操作(创建快捷方式).
将以下行放入.hgrc:
[revsetalias]
range($1)=reverse(ancestors(.)-ancestors($1))
Run Code Online (Sandbox Code Playgroud)
将使您能够使用此:
hg log -r range(<bookmark>)
Run Code Online (Sandbox Code Playgroud)
如果你想使它更灵活,你可以在.hgrc中定义它:
[revsetalias]
range($1,$2)=reverse(ancestors($2)-ancestors($1))
Run Code Online (Sandbox Code Playgroud)
并使用以下内容获取HEAD示例:
hg log -r range(<bookmark>, .)
Run Code Online (Sandbox Code Playgroud)
如果"范围"这个词太多而无法为您输入,您也可以使用一些特殊字符:
[revsetalias]
_($1)=reverse(ancestors(.)-ancestors($1))
Run Code Online (Sandbox Code Playgroud)
由此产生的速记
hg log -r_(<bookmark>)
Run Code Online (Sandbox Code Playgroud)
然后甚至更短
git log <bookmark>..HEAD
Run Code Online (Sandbox Code Playgroud)
但无论如何,这当然只是挑剔.