hgext/hgk.py
author Thomas Arendsen Hein <thomas@intevation.de>
Mon, 16 Oct 2006 09:53:31 +0200
changeset 3409 1ae738bacf74
parent 3173 eb0906ebba81
child 3468 0e68608bd11d
permissions -rw-r--r--
Fixed page overlap for file revision links in hgweb. This is another step to fix issue189, but currently the file revision numbers are read as changeset revision numbers, so the link will point to the wrong revision.
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
2893
2497fa1c6b76 Use demandload in hgk
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 2744
diff changeset
     8
from mercurial.demandload import *
2497fa1c6b76 Use demandload in hgk
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 2744
diff changeset
     9
demandload(globals(), 'time sys signal os')
3090
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
    10
demandload(globals(), 'mercurial: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
    11
3060
aa1cee5b8afb hgk.py: add an optional file list to debug-diff-tree
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3056
diff changeset
    12
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
    13
    """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
    14
    def __difftree(repo, node1, node2, files=[]):
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
    15
        if node2:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
    16
            change = repo.changelog.read(node2)
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
    17
            mmap2 = repo.manifest.read(change[0])
3060
aa1cee5b8afb hgk.py: add an optional file list to debug-diff-tree
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3056
diff changeset
    18
            status = repo.status(node1, node2, files=files)[:5]
aa1cee5b8afb hgk.py: add an optional file list to debug-diff-tree
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3056
diff changeset
    19
            modified, added, removed, deleted, unknown = status
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
    20
        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
    21
            status = repo.status(node1, files=files)[:5]
aa1cee5b8afb hgk.py: add an optional file list to debug-diff-tree
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3056
diff changeset
    22
            modified, added, removed, deleted, unknown = status
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
    23
            if not node1:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
    24
                node1 = repo.dirstate.parents()[0]
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    25
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
    26
        change = repo.changelog.read(node1)
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
    27
        mmap = repo.manifest.read(change[0])
3066
c6bfe536a1f9 hgk.py: fix for a bug introduced in 32fd512ca7c0
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3064
diff changeset
    28
        empty = hg.short(hg.nullid)
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    29
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
    30
        for f in modified:
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
    31
            # TODO get file permissions
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    32
            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
    33
                                                      hg.short(mmap2[f]),
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    34
                                                      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
    35
        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
    36
            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
    37
                                                      hg.short(mmap2[f]),
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    38
                                                      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
    39
        for f in removed:
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    40
            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
    41
                                                      empty,
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    42
                                                      f, f)
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    43
    ##
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    44
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    45
    while True:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    46
        if opts['stdin']:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    47
            try:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    48
                line = raw_input().split(' ')
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    49
                node1 = line[0]
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    50
                if len(line) > 1:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    51
                    node2 = line[1]
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    52
                else:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    53
                    node2 = None
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    54
            except EOFError:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    55
                break
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    56
        node1 = repo.lookup(node1)
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    57
        if node2:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    58
            node2 = repo.lookup(node2)
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    59
        else:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    60
            node2 = node1
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    61
            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
    62
        if opts['patch']:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    63
            if opts['pretty']:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    64
                catcommit(repo, node2, "")
3064
fbd3f9fd645d hgk.py: use mercurial.patch functions when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3062
diff changeset
    65
            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
    66
                       files=files,
fbd3f9fd645d hgk.py: use mercurial.patch functions when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3062
diff changeset
    67
                       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
    68
        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
    69
            __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
    70
        if not opts['stdin']:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    71
            break
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    72
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    73
def catcommit(repo, n, prefix, changes=None):
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    74
    nlprefix = '\n' + prefix;
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    75
    (p1, p2) = repo.changelog.parents(n)
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    76
    (h, h1, h2) = map(hg.short, (n, p1, p2))
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    77
    (i1, i2) = map(repo.changelog.rev, (p1, p2))
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    78
    if not changes:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    79
        changes = repo.changelog.read(n)
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
    80
    print "tree %s" % (hg.short(changes[0]))
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    81
    if i1 != -1: print "parent %s" % (h1)
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    82
    if i2 != -1: print "parent %s" % (h2)
1344
ca0e27e05de3 Fix hgk for date handling changes
mpm@selenic.com
parents: 1308
diff changeset
    83
    date_ar = changes[2]
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    84
    date = int(float(date_ar[0]))
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    85
    lines = changes[4].splitlines()
2525
c49dc6f38a19 hgk: Don't choke on empty changelogs
Brendan Cully <brendan@kublai.com>
parents: 2432
diff changeset
    86
    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
    87
        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
    88
    else:
1950
5f581f337b05 hgk "committer:" bug
Hollis Blanchard <hollisb@us.ibm.com>
parents: 1626
diff changeset
    89
        committer = changes[1]
1308
2073e5a71008 Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1278
diff changeset
    90
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    91
    print "author %s %s %s" % (changes[1], date, date_ar[1])
1950
5f581f337b05 hgk "committer:" bug
Hollis Blanchard <hollisb@us.ibm.com>
parents: 1626
diff changeset
    92
    print "committer %s %s %s" % (committer, date, date_ar[1])
3089
d0fcce3728d1 hgk: add revision numbers
Brendan Cully <brendan@kublai.com>
parents: 3066
diff changeset
    93
    print "revision %d" % repo.changelog.rev(n)
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    94
    print ""
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    95
    if prefix != "":
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
    96
        print "%s%s" % (prefix, changes[4].replace('\n', nlprefix).strip())
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
    97
    else:
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
    98
        print changes[4]
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
    99
    if prefix:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   100
        sys.stdout.write('\0')
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   101
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   102
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
   103
    """Output common ancestor information"""
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   104
    node1 = repo.lookup(node1)
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   105
    node2 = repo.lookup(node2)
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   106
    n = repo.changelog.ancestor(node1, node2)
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
   107
    print hg.short(n)
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   108
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   109
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
   110
    """cat a specific revision"""
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   111
    # 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
   112
    # 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
   113
    # strings
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   114
    #
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   115
    prefix = ""
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   116
    if opts['stdin']:
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   117
        try:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   118
            (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
   119
            prefix = "    "
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   120
        except EOFError:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   121
            return
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   122
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   123
    else:
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   124
        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
   125
            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
   126
            commands.help_(ui, 'cat-file')
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   127
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   128
    while r:
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   129
        if type != "commit":
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   130
            sys.stderr.write("aborting hg cat-file only understands commits\n")
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   131
            sys.exit(1);
720
095dd8c757e0 Change hgit revision lookup to use repo.lookup
mason@suse.com
parents: 719
diff changeset
   132
        n = repo.lookup(r)
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   133
        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
   134
        if opts['stdin']:
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   135
            try:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   136
                (type, r) = raw_input().split(' ');
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   137
            except EOFError:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   138
                break
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   139
        else:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   140
            break
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   141
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   142
# 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
   143
# 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
   144
# telling you which commits are reachable from the supplied ones via
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   145
# a bitmask based on arg position.
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   146
# 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
   147
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
   148
    def chlogwalk():
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   149
        ch = repo.changelog
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   150
        count = ch.count()
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   151
        i = count
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   152
        l = [0] * 100
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   153
        chunk = 100
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   154
        while True:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   155
            if chunk > i:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   156
                chunk = i
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   157
                i = 0
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   158
            else:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   159
                i -= chunk
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   160
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   161
            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
   162
                if i + x >= count:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   163
                    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
   164
                    break
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   165
                if full != None:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   166
                    l[x] = ch.read(ch.node(i + x))
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   167
                else:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   168
                    l[x] = 1
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   169
            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
   170
                if l[x] != 0:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   171
                    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
   172
            if i == 0:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   173
                break
1308
2073e5a71008 Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1278
diff changeset
   174
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   175
    # calculate and return the reachability bitmask for sha
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   176
    def is_reachable(ar, reachable, sha):
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   177
        if len(ar) == 0:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   178
            return 1
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   179
        mask = 0
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   180
        for i in range(len(ar)):
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   181
            if sha in reachable[i]:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   182
                mask |= 1 << i
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   183
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   184
        return mask
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   185
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   186
    reachable = []
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   187
    stop_sha1 = []
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   188
    want_sha1 = []
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   189
    count = 0
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   190
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   191
    # 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
   192
    # want us to stop on
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   193
    for i in range(len(args)):
720
095dd8c757e0 Change hgit revision lookup to use repo.lookup
mason@suse.com
parents: 719
diff changeset
   194
        if args[i].startswith('^'):
095dd8c757e0 Change hgit revision lookup to use repo.lookup
mason@suse.com
parents: 719
diff changeset
   195
            s = repo.lookup(args[i][1:])
095dd8c757e0 Change hgit revision lookup to use repo.lookup
mason@suse.com
parents: 719
diff changeset
   196
            stop_sha1.append(s)
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   197
            want_sha1.append(s)
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   198
        elif args[i] != 'HEAD':
720
095dd8c757e0 Change hgit revision lookup to use repo.lookup
mason@suse.com
parents: 719
diff changeset
   199
            want_sha1.append(repo.lookup(args[i]))
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   200
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   201
    # calculate the graph for the supplied commits
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   202
    for i in range(len(want_sha1)):
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   203
        reachable.append({});
720
095dd8c757e0 Change hgit revision lookup to use repo.lookup
mason@suse.com
parents: 719
diff changeset
   204
        n = want_sha1[i];
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   205
        visit = [n];
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   206
        reachable[i][n] = 1
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   207
        while visit:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   208
            n = visit.pop(0)
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   209
            if n in stop_sha1:
1243
9d10f89b75a5 Fix hgit revtree bug with stop revision handling
root@coffee.suse.com
parents: 1239
diff changeset
   210
                continue
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   211
            for p in repo.changelog.parents(n):
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   212
                if p not in reachable[i]:
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   213
                    reachable[i][p] = 1
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   214
                    visit.append(p)
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   215
                if p in stop_sha1:
1243
9d10f89b75a5 Fix hgit revtree bug with stop revision handling
root@coffee.suse.com
parents: 1239
diff changeset
   216
                    continue
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   217
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   218
    # walk the repository looking for commits that are in our
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   219
    # reachability graph
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   220
    for i, changes in chlogwalk():
334
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   221
        n = repo.changelog.node(i)
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   222
        mask = is_reachable(want_sha1, reachable, n)
290574209284 hgit: remove tabs
mpm@selenic.com
parents: 280
diff changeset
   223
        if mask:
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   224
            parentstr = ""
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   225
            if parents:
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   226
                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
   227
                if pp[0] != hg.nullid:
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
   228
                    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
   229
                if pp[1] != hg.nullid:
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
   230
                    parentstr += " " + hg.short(pp[1])
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   231
            if not full:
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
   232
                print hg.short(n) + parentstr
3061
fe5c92529d1c hgk.py: fix warnings from pychecker
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3060
diff changeset
   233
            elif full == "commit":
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
   234
                print hg.short(n) + parentstr
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   235
                catcommit(repo, n, '    ', changes)
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   236
            else:
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   237
                (p1, p2) = repo.changelog.parents(n)
3056
3dab573a4330 hgk: use short changeset hashes
TK Soh <teekaysoh@yahoo.com>
parents: 3009
diff changeset
   238
                (h, h1, h2) = map(hg.short, (n, p1, p2))
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   239
                (i1, i2) = map(repo.changelog.rev, (p1, p2))
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   240
1344
ca0e27e05de3 Fix hgk for date handling changes
mpm@selenic.com
parents: 1308
diff changeset
   241
                date = changes[2][0]
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   242
                print "%s %s:%s" % (date, h, mask),
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   243
                mask = is_reachable(want_sha1, reachable, p1)
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   244
                if i1 != -1 and mask > 0:
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   245
                    print "%s:%s " % (h1, mask),
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   246
                mask = is_reachable(want_sha1, reachable, p2)
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   247
                if i2 != -1 and mask > 0:
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   248
                    print "%s:%s " % (h2, mask),
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   249
                print ""
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   250
            if maxnr and count >= maxnr:
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   251
                break
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   252
            count += 1
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   253
3090
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   254
def revparse(ui, repo, *revs, **opts):
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   255
    """Parse given revisions"""
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   256
    def revstr(rev):
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   257
        if rev == 'HEAD':
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   258
            rev = 'tip'
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   259
        return revlog.hex(repo.lookup(rev))
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   260
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   261
    for r in revs:
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   262
        revrange = r.split(':', 1)
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   263
        ui.write('%s\n' % revstr(revrange[0]))
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   264
        if len(revrange) == 2:
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   265
            ui.write('^%s\n' % revstr(revrange[1]))
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   266
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   267
# 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
   268
# 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
   269
# parameter
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   270
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
   271
    """print revisions"""
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   272
    if opts['header']:
356
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   273
        full = "commit"
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   274
    else:
7dec9a46d82a hgit rev-list support
mpm@selenic.com
parents: 350
diff changeset
   275
        full = None
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   276
    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
   277
    revtree(copy, repo, full, opts['max_count'], opts['parents'])
267
497aa6d276d2 Initial import of hgit and hgk
mpm@selenic.com
parents:
diff changeset
   278
3090
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   279
def view(ui, repo, *etc, **opts):
1278
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   280
    "start interactive history viewer"
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   281
    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
   282
    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
   283
    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
   284
    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
   285
    os.system(cmd)
1278
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   286
1239
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   287
cmdtable = {
3090
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   288
    "view": (view,
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   289
             [('l', 'limit', '', 'limit number of changes displayed')],
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   290
             'hg view [-l LIMIT] [REVRANGE]'),
1278
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   291
    "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
   292
                            ('r', 'recursive', None, 'recursive'),
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   293
                            ('P', 'pretty', None, 'pretty'),
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   294
                            ('s', 'stdin', None, 'stdin'),
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   295
                            ('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
   296
                            ('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
   297
                            "hg git-diff-tree [options] node1 node2 [files...]"),
1278
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   298
    "debug-cat-file": (catfile, [('s', 'stdin', None, 'stdin')],
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   299
                 "hg debug-cat-file [options] type file"),
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   300
    "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
   301
    'debug-rev-parse': (revparse,
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   302
                        [('', 'default', '', 'ignored')],
edefbb3a3b08 hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents: 3089
diff changeset
   303
                        "hg debug-rev-parse rev"),
1278
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   304
    "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
   305
                           ('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
   306
                           ('p', 'parents', None, 'parents'),
29f17e083e84 Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents: 740
diff changeset
   307
                           ('n', 'max-count', 0, 'max-count')],
1278
6a0d373d3126 hgit -> hgk.py
mpm@selenic.com
parents: 1243
diff changeset
   308
                 "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
   309
}