hgext/hgk.py
author Matt Mackall <mpm@selenic.com>
Fri, 01 Jun 2007 18:40:14 -0500
changeset 4478 b2b55acbacdd
parent 4040 cc08d2543593
child 4686 39001f4b7d99
permissions -rw-r--r--
Add support for url#id syntax This allows you to do: hg clone http://server/repo#stable which is equivalent to: hg clone -r stable http://server/repo Future incoming, outgoing, and push commands will default to using this id because it's recorded in the default path. Other commands that accept URLs (push, pull, bundle, incoming, and outgoing) also accept this syntax.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
     1
# Minimal support for git commands on an hg repository
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
     2
#
2858
345bac2bc4ec update copyrights.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2744
diff changeset
     3
# Copyright 2005, 2006 Chris Mason <mason@suse.com>
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
     4
#
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
     5
# This software may be used and distributed according to the terms
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
     6
# of the GNU General Public License, incorporated herein by reference.
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
     7
3963
ba45041827a2 remove various unused import
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3886
diff changeset
     8
import sys, os
3886
abaee83ce0a6 Replace demandload with new demandimport
Matt Mackall <mpm@selenic.com>
parents: 3803
diff changeset
     9
from mercurial import hg, fancyopts, commands, ui, util, patch, revlog
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    10
3060
aa1cee5b8afb hgk.py: add an optional file list to debug-diff-tree
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3056
diff changeset
    11
def difftree(ui, repo, node1=None, node2=None, *files, **opts):
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    12
    """diff trees from two commits"""
3060
aa1cee5b8afb hgk.py: add an optional file list to debug-diff-tree
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3056
diff changeset
    13
    def __difftree(repo, node1, node2, files=[]):
3978
ee5663cb4406 hgk: remove unused code, node2 is always set
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3963
diff changeset
    14
        assert node2 is not None
3981
180670f14045 hgk: (re)optimize reading of changelog and manifest
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3979
diff changeset
    15
        mmap = repo.changectx(node1).manifest()
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    16
        mmap2 = repo.changectx(node2).manifest()
3978
ee5663cb4406 hgk: remove unused code, node2 is always set
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3963
diff changeset
    17
        status = repo.status(node1, node2, files=files)[:5]
ee5663cb4406 hgk: remove unused code, node2 is always set
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3963
diff changeset
    18
        modified, added, removed, deleted, unknown = status
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    19
3066
c6bfe536a1f9 hgk.py: fix for a bug introduced in 32fd512ca7c0
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3064
diff changeset
    20
        empty = hg.short(hg.nullid)
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    21
1618
ff339dd21976 Renamed c, a, d, u to modified, added, removed, unknown for users of changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1614
diff changeset
    22
        for f in modified:
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
    23
            # TODO get file permissions
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    24
            print ":100664 100664 %s %s M\t%s\t%s" % (hg.short(mmap[f]),
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    25
                                                      hg.short(mmap2[f]),
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    26
                                                      f, f)
1618
ff339dd21976 Renamed c, a, d, u to modified, added, removed, unknown for users of changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1614
diff changeset
    27
        for f in added:
3066
c6bfe536a1f9 hgk.py: fix for a bug introduced in 32fd512ca7c0
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3064
diff changeset
    28
            print ":000000 100664 %s %s N\t%s\t%s" % (empty,
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    29
                                                      hg.short(mmap2[f]),
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    30
                                                      f, f)
1618
ff339dd21976 Renamed c, a, d, u to modified, added, removed, unknown for users of changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1614
diff changeset
    31
        for f in removed:
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    32
            print ":100664 000000 %s %s D\t%s\t%s" % (hg.short(mmap[f]),
3066
c6bfe536a1f9 hgk.py: fix for a bug introduced in 32fd512ca7c0
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3064
diff changeset
    33
                                                      empty,
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    34
                                                      f, f)
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    35
    ##
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    36
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    37
    while True:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    38
        if opts['stdin']:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    39
            try:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    40
                line = raw_input().split(' ')
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    41
                node1 = line[0]
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    42
                if len(line) > 1:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    43
                    node2 = line[1]
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    44
                else:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    45
                    node2 = None
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    46
            except EOFError:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    47
                break
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    48
        node1 = repo.lookup(node1)
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    49
        if node2:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    50
            node2 = repo.lookup(node2)
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    51
        else:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    52
            node2 = node1
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    53
            node1 = repo.changelog.parents(node1)[0]
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    54
        if opts['patch']:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    55
            if opts['pretty']:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    56
                catcommit(repo, node2, "")
3064
fbd3f9fd645d hgk.py: use mercurial.patch functions when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3062
diff changeset
    57
            patch.diff(repo, node1, node2,
fbd3f9fd645d hgk.py: use mercurial.patch functions when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3062
diff changeset
    58
                       files=files,
fbd3f9fd645d hgk.py: use mercurial.patch functions when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3062
diff changeset
    59
                       opts=patch.diffopts(ui, {'git': True}))
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    60
        else:
3060
aa1cee5b8afb hgk.py: add an optional file list to debug-diff-tree
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3056
diff changeset
    61
            __difftree(repo, node1, node2, files=files)
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    62
        if not opts['stdin']:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    63
            break
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    64
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    65
def catcommit(repo, n, prefix, ctx=None):
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    66
    nlprefix = '\n' + prefix;
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    67
    if ctx is None:
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    68
        ctx = repo.changectx(n)
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    69
    (p1, p2) = ctx.parents()
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    70
    print "tree %s" % (hg.short(ctx.changeset()[0])) # use ctx.node() instead ??
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    71
    if p1: print "parent %s" % (hg.short(p1.node()))
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    72
    if p2: print "parent %s" % (hg.short(p2.node()))
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    73
    date = ctx.date()
4040
cc08d2543593 hgk: remove embedded nulls in descriptions
Matt Mackall <mpm@selenic.com>
parents: 3981
diff changeset
    74
    description = ctx.description().replace("\0", "")
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    75
    lines = description.splitlines()
2525
c49dc6f38a19 hgk: Don't choke on empty changelogs
Brendan Cully <brendan@kublai.com>
parents: 2432
diff changeset
    76
    if lines and lines[-1].startswith('committer:'):
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    77
        committer = lines[-1].split(': ')[1].rstrip()
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    78
    else:
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    79
        committer = ctx.user()
1308
2073e5a71008 Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1278
diff changeset
    80
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    81
    print "author %s %s %s" % (ctx.user(), int(date[0]), date[1])
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    82
    print "committer %s %s %s" % (committer, int(date[0]), date[1])
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    83
    print "revision %d" % ctx.rev()
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    84
    print ""
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    85
    if prefix != "":
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    86
        print "%s%s" % (prefix, description.replace('\n', nlprefix).strip())
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    87
    else:
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
    88
        print description
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    89
    if prefix:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    90
        sys.stdout.write('\0')
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    91
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    92
def base(ui, repo, node1, node2):
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    93
    """Output common ancestor information"""
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    94
    node1 = repo.lookup(node1)
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    95
    node2 = repo.lookup(node2)
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    96
    n = repo.changelog.ancestor(node1, node2)
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    97
    print hg.short(n)
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    98
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    99
def catfile(ui, repo, type=None, r=None, **opts):
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   100
    """cat a specific revision"""
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   101
    # in stdin mode, every line except the commit is prefixed with two
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   102
    # spaces.  This way the our caller can find the commit without magic
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   103
    # strings
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   104
    #
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   105
    prefix = ""
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   106
    if opts['stdin']:
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   107
        try:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   108
            (type, r) = raw_input().split(' ');
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   109
            prefix = "    "
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   110
        except EOFError:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   111
            return
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   112
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   113
    else:
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   114
        if not type or not r:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   115
            ui.warn("cat-file: type or revision not supplied\n")
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   116
            commands.help_(ui, 'cat-file')
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   117
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   118
    while r:
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   119
        if type != "commit":
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   120
            sys.stderr.write("aborting hg cat-file only understands commits\n")
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   121
            sys.exit(1);
720
095dd8c757e0 Change hgit revision lookup to use repo.lookup
mason@suse.com
parents: 719
diff changeset
   122
        n = repo.lookup(r)
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   123
        catcommit(repo, n, prefix)
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   124
        if opts['stdin']:
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   125
            try:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   126
                (type, r) = raw_input().split(' ');
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   127
            except EOFError:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   128
                break
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   129
        else:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   130
            break
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   131
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   132
# git rev-tree is a confusing thing.  You can supply a number of
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   133
# commit sha1s on the command line, and it walks the commit history
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   134
# telling you which commits are reachable from the supplied ones via
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   135
# a bitmask based on arg position.
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   136
# you can specify a commit to stop at by starting the sha1 with ^
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   137
def revtree(args, repo, full="tree", maxnr=0, parents=False):
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   138
    def chlogwalk():
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
   139
        count = repo.changelog.count()
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   140
        i = count
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   141
        l = [0] * 100
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   142
        chunk = 100
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   143
        while True:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   144
            if chunk > i:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   145
                chunk = i
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   146
                i = 0
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   147
            else:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   148
                i -= chunk
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   149
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   150
            for x in xrange(0, chunk):
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   151
                if i + x >= count:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   152
                    l[chunk - x:] = [0] * (chunk - x)
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   153
                    break
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   154
                if full != None:
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
   155
                    l[x] = repo.changectx(i + x)
3981
180670f14045 hgk: (re)optimize reading of changelog and manifest
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3979
diff changeset
   156
                    l[x].changeset() # force reading
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   157
                else:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   158
                    l[x] = 1
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   159
            for x in xrange(chunk-1, -1, -1):
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   160
                if l[x] != 0:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   161
                    yield (i + x, full != None and l[x] or None)
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   162
            if i == 0:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   163
                break
1308
2073e5a71008 Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1278
diff changeset
   164
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   165
    # calculate and return the reachability bitmask for sha
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   166
    def is_reachable(ar, reachable, sha):
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   167
        if len(ar) == 0:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   168
            return 1
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   169
        mask = 0
3468
0e68608bd11d use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3173
diff changeset
   170
        for i in xrange(len(ar)):
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   171
            if sha in reachable[i]:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   172
                mask |= 1 << i
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   173
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   174
        return mask
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   175
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   176
    reachable = []
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   177
    stop_sha1 = []
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   178
    want_sha1 = []
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   179
    count = 0
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   180
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   181
    # figure out which commits they are asking for and which ones they
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   182
    # want us to stop on
3468
0e68608bd11d use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3173
diff changeset
   183
    for i in xrange(len(args)):
720
095dd8c757e0 Change hgit revision lookup to use repo.lookup
mason@suse.com
parents: 719
diff changeset
   184
        if args[i].startswith('^'):
095dd8c757e0 Change hgit revision lookup to use repo.lookup
mason@suse.com
parents: 719
diff changeset
   185
            s = repo.lookup(args[i][1:])
095dd8c757e0 Change hgit revision lookup to use repo.lookup
mason@suse.com
parents: 719
diff changeset
   186
            stop_sha1.append(s)
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   187
            want_sha1.append(s)
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   188
        elif args[i] != 'HEAD':
720
095dd8c757e0 Change hgit revision lookup to use repo.lookup
mason@suse.com
parents: 719
diff changeset
   189
            want_sha1.append(repo.lookup(args[i]))
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   190
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   191
    # calculate the graph for the supplied commits
3468
0e68608bd11d use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3173
diff changeset
   192
    for i in xrange(len(want_sha1)):
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   193
        reachable.append({});
720
095dd8c757e0 Change hgit revision lookup to use repo.lookup
mason@suse.com
parents: 719
diff changeset
   194
        n = want_sha1[i];
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   195
        visit = [n];
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   196
        reachable[i][n] = 1
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   197
        while visit:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   198
            n = visit.pop(0)
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   199
            if n in stop_sha1:
1243
9d10f89b75a5 Fix hgit revtree bug with stop revision handling
root@coffee.suse.com
parents: 1239
diff changeset
   200
                continue
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   201
            for p in repo.changelog.parents(n):
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   202
                if p not in reachable[i]:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   203
                    reachable[i][p] = 1
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   204
                    visit.append(p)
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   205
                if p in stop_sha1:
1243
9d10f89b75a5 Fix hgit revtree bug with stop revision handling
root@coffee.suse.com
parents: 1239
diff changeset
   206
                    continue
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   207
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   208
    # walk the repository looking for commits that are in our
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   209
    # reachability graph
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
   210
    for i, ctx in chlogwalk():
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   211
        n = repo.changelog.node(i)
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   212
        mask = is_reachable(want_sha1, reachable, n)
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   213
        if mask:
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   214
            parentstr = ""
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   215
            if parents:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   216
                pp = repo.changelog.parents(n)
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   217
                if pp[0] != hg.nullid:
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
   218
                    parentstr += " " + hg.short(pp[0])
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   219
                if pp[1] != hg.nullid:
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
   220
                    parentstr += " " + hg.short(pp[1])
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   221
            if not full:
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
   222
                print hg.short(n) + parentstr
3061
fe5c92529d1c hgk.py: fix warnings from pychecker
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3060
diff changeset
   223
            elif full == "commit":
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
   224
                print hg.short(n) + parentstr
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
   225
                catcommit(repo, n, '    ', ctx)
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   226
            else:
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   227
                (p1, p2) = repo.changelog.parents(n)
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
   228
                (h, h1, h2) = map(hg.short, (n, p1, p2))
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   229
                (i1, i2) = map(repo.changelog.rev, (p1, p2))
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   230
3979
e0d13267f7a4 hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3978
diff changeset
   231
                date = ctx.date()[0]
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   232
                print "%s %s:%s" % (date, h, mask),
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   233
                mask = is_reachable(want_sha1, reachable, p1)
3578
3b4e00cba57a Define and use nullrev (revision of nullid) instead of -1.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3468
diff changeset
   234
                if i1 != hg.nullrev and mask > 0:
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   235
                    print "%s:%s " % (h1, mask),
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   236
                mask = is_reachable(want_sha1, reachable, p2)
3578
3b4e00cba57a Define and use nullrev (revision of nullid) instead of -1.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3468
diff changeset
   237
                if i2 != hg.nullrev and mask > 0:
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   238
                    print "%s:%s " % (h2, mask),
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   239
                print ""
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   240
            if maxnr and count >= maxnr:
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   241
                break
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   242
            count += 1
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   243
3090
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   244
def revparse(ui, repo, *revs, **opts):
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   245
    """Parse given revisions"""
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   246
    def revstr(rev):
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   247
        if rev == 'HEAD':
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   248
            rev = 'tip'
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   249
        return revlog.hex(repo.lookup(rev))
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   250
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   251
    for r in revs:
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   252
        revrange = r.split(':', 1)
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   253
        ui.write('%s\n' % revstr(revrange[0]))
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   254
        if len(revrange) == 2:
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   255
            ui.write('^%s\n' % revstr(revrange[1]))
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   256
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   257
# git rev-list tries to order things by date, and has the ability to stop
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   258
# at a given commit without walking the whole repo.  TODO add the stop
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   259
# parameter
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   260
def revlist(ui, repo, *revs, **opts):
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   261
    """print revisions"""
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   262
    if opts['header']:
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   263
        full = "commit"
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   264
    else:
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   265
        full = None
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   266
    copy = [x for x in revs]
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   267
    revtree(copy, repo, full, opts['max_count'], opts['parents'])
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   268
3090
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   269
def view(ui, repo, *etc, **opts):
1278
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   270
    "start interactive history viewer"
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   271
    os.chdir(repo.root)
3173
eb0906ebba81 hgk: fix mixup of --limit and REVRANGE in hgk call
TK Soh <teekaysoh@yahoo.com>
parents: 3090
diff changeset
   272
    optstr = ' '.join(['--%s %s' % (k, v) for k, v in opts.iteritems() if v])
eb0906ebba81 hgk: fix mixup of --limit and REVRANGE in hgk call
TK Soh <teekaysoh@yahoo.com>
parents: 3090
diff changeset
   273
    cmd = ui.config("hgk", "path", "hgk") + " %s %s" % (optstr, " ".join(etc))
eb0906ebba81 hgk: fix mixup of --limit and REVRANGE in hgk call
TK Soh <teekaysoh@yahoo.com>
parents: 3090
diff changeset
   274
    ui.debug("running %s\n" % cmd)
eb0906ebba81 hgk: fix mixup of --limit and REVRANGE in hgk call
TK Soh <teekaysoh@yahoo.com>
parents: 3090
diff changeset
   275
    os.system(cmd)
1278
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   276
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   277
cmdtable = {
3803
792e61e9a00a hgk: show view in short command list
Matt Mackall <mpm@selenic.com>
parents: 3578
diff changeset
   278
    "^view": (view,
3090
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   279
             [('l', 'limit', '', 'limit number of changes displayed')],
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   280
             'hg view [-l LIMIT] [REVRANGE]'),
1278
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   281
    "debug-diff-tree": (difftree, [('p', 'patch', None, 'generate patch'),
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   282
                            ('r', 'recursive', None, 'recursive'),
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   283
                            ('P', 'pretty', None, 'pretty'),
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   284
                            ('s', 'stdin', None, 'stdin'),
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   285
                            ('C', 'copy', None, 'detect copies'),
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   286
                            ('S', 'search', "", 'search')],
3060
aa1cee5b8afb hgk.py: add an optional file list to debug-diff-tree
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3056
diff changeset
   287
                            "hg git-diff-tree [options] node1 node2 [files...]"),
1278
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   288
    "debug-cat-file": (catfile, [('s', 'stdin', None, 'stdin')],
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   289
                 "hg debug-cat-file [options] type file"),
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   290
    "debug-merge-base": (base, [], "hg debug-merge-base node node"),
3090
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   291
    'debug-rev-parse': (revparse,
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   292
                        [('', 'default', '', 'ignored')],
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   293
                        "hg debug-rev-parse rev"),
1278
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   294
    "debug-rev-list": (revlist, [('H', 'header', None, 'header'),
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   295
                           ('t', 'topo-order', None, 'topo-order'),
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   296
                           ('p', 'parents', None, 'parents'),
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   297
                           ('n', 'max-count', 0, 'max-count')],
1278
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   298
                 "hg debug-rev-list [options] revs"),
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   299
}