How to show the diff specific to a named branch in mercurial

后端 未结 4 1186
青春惊慌失措
青春惊慌失措 2021-01-30 14:16

Assuming I have a named branch foo with two commits a, b:

      a       b       c  
------o-------o-------o------- # default
       \\          d         e
              


        
相关标签:
4条回答
  • 2021-01-30 14:48

    diff between branches:

    hg diff -r <branchname_1>:<branchname_2>

    show current branch's latest commit:

    hg log -r .

    0 讨论(0)
  • 2021-01-30 14:53

    Another way to do this, useful also for branches that you have already merged to default is:

    hg diff -r "max(ancestors(foo) and branch(default)):foo"
    

    Though that can be a pit of a pain, so i'd recommend setting up an alias by adding something like:

    [alias]
    branchdiff = diff -r "max(ancestors('$1') and branch(default)):'$1'"
    

    To your Mercurial.INI/hgrc which you can then use like this:

    hg branchdiff <branch name>
    

    or

    hg branchdiff .
    
    0 讨论(0)
  • 2021-01-30 14:57

    If you want logs from current branch only:

    hg log -b .

    0 讨论(0)
  • 2021-01-30 14:58

    You can do it using revsets.

    In your specific example I think you could get a list of of just d and e using:

    hg log -r "branch('foo') - branch('default')"
    

    where that - is defined as:

    "x - y"
          Changesets in x but not in y.
    

    Getting the diff from a to e could be done as:

    hg diff -r "ancestor(default, foo)" -r foo
    

    though there's possibly a shorthand for that I'm not seeing.

    0 讨论(0)
提交回复
热议问题