Mercurial > hg
annotate hgext/hgk.py @ 37459:90c5ca718781
procutil: rewrite popen() as a subprocess.Popen wrapper (issue4746) (API)
os.popen() of Python 3 is not the popen() we want. First, it doesn't accept
command in bytes. Second, a returned stream is always wrapped by TextIO.
So we have to reimplement our popen(). Fortunately, this fixes the bug 4746
since ours returns an exit code compatible with explainexit().
.. api::
``procutil.popen()`` no longer supports text mode I/O.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 07 Apr 2018 21:09:21 +0900 |
parents | cb0afaf112e8 |
children | e7aa113b14f7 |
rev | line source |
---|---|
267 | 1 # Minimal support for git commands on an hg repository |
2 # | |
2859 | 3 # Copyright 2005, 2006 Chris Mason <mason@suse.com> |
267 | 4 # |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
7992
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10263 | 6 # GNU General Public License version 2 or any later version. |
8228
eee2319c5895
add blank line after copyright notices and after header
Martin Geisler <mg@lazybytes.net>
parents:
8225
diff
changeset
|
7 |
8894
868670dbc237
extensions: improve the consistency of synopses
Cédric Duval <cedricduval@free.fr>
parents:
8866
diff
changeset
|
8 '''browse the repository in a graphical way |
6666
53465a7464e2
convert comments to docstrings in a bunch of extensions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6616
diff
changeset
|
9 |
9261
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
10 The hgk extension allows browsing the history of a repository in a |
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
11 graphical way. It requires Tcl/Tk version 8.4 or later. (Tcl/Tk is not |
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
12 distributed with Mercurial.) |
6666
53465a7464e2
convert comments to docstrings in a bunch of extensions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6616
diff
changeset
|
13 |
9261
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
14 hgk consists of two parts: a Tcl script that does the displaying and |
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
15 querying of information, and an extension to Mercurial named hgk.py, |
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
16 which provides hooks for hgk to get information. hgk can be found in |
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
17 the contrib directory, and the extension is shipped in the hgext |
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
18 repository, and needs to be enabled. |
6666
53465a7464e2
convert comments to docstrings in a bunch of extensions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6616
diff
changeset
|
19 |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
10394
diff
changeset
|
20 The :hg:`view` command will launch the hgk Tcl script. For this command |
9261
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
21 to work, hgk must be in your search path. Alternately, you can specify |
12083
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
11321
diff
changeset
|
22 the path to hgk in your configuration file:: |
6666
53465a7464e2
convert comments to docstrings in a bunch of extensions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6616
diff
changeset
|
23 |
53465a7464e2
convert comments to docstrings in a bunch of extensions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6616
diff
changeset
|
24 [hgk] |
25793
084957666642
hgk: tweak doc format for path option
Matt Mackall <mpm@selenic.com>
parents:
25186
diff
changeset
|
25 path = /location/of/hgk |
6666
53465a7464e2
convert comments to docstrings in a bunch of extensions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6616
diff
changeset
|
26 |
9261
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
27 hgk can make use of the extdiff extension to visualize revisions. |
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
28 Assuming you had already configured extdiff vdiff command, just add:: |
6666
53465a7464e2
convert comments to docstrings in a bunch of extensions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6616
diff
changeset
|
29 |
53465a7464e2
convert comments to docstrings in a bunch of extensions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6616
diff
changeset
|
30 [hgk] |
53465a7464e2
convert comments to docstrings in a bunch of extensions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6616
diff
changeset
|
31 vdiff=vdiff |
53465a7464e2
convert comments to docstrings in a bunch of extensions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6616
diff
changeset
|
32 |
9261
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
33 Revisions context menu will now display additional entries to fire |
1a9a650004b6
hgk: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9209
diff
changeset
|
34 vdiff on hovered and selected revisions. |
9063
0772889d8a65
hgk: wrapped docstrings at 78 characters
Martin Geisler <mg@lazybytes.net>
parents:
8946
diff
changeset
|
35 ''' |
267 | 36 |
29125
9b12517a7081
py3: make hgext/hgk.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
25793
diff
changeset
|
37 from __future__ import absolute_import |
9b12517a7081
py3: make hgext/hgk.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
25793
diff
changeset
|
38 |
5878
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
39 import os |
29205
a0939666b836
py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents:
29125
diff
changeset
|
40 |
a0939666b836
py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents:
29125
diff
changeset
|
41 from mercurial.i18n import _ |
a0939666b836
py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents:
29125
diff
changeset
|
42 from mercurial.node import ( |
a0939666b836
py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents:
29125
diff
changeset
|
43 nullid, |
a0939666b836
py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents:
29125
diff
changeset
|
44 nullrev, |
a0939666b836
py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents:
29125
diff
changeset
|
45 short, |
a0939666b836
py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents:
29125
diff
changeset
|
46 ) |
29125
9b12517a7081
py3: make hgext/hgk.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
25793
diff
changeset
|
47 from mercurial import ( |
9b12517a7081
py3: make hgext/hgk.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
25793
diff
changeset
|
48 commands, |
9b12517a7081
py3: make hgext/hgk.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
25793
diff
changeset
|
49 obsolete, |
9b12517a7081
py3: make hgext/hgk.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
25793
diff
changeset
|
50 patch, |
34998
fc0e6d298cd4
py3: handle keyword arguments in hgext/hgk.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34499
diff
changeset
|
51 pycompat, |
32337
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
31409
diff
changeset
|
52 registrar, |
29125
9b12517a7081
py3: make hgext/hgk.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
25793
diff
changeset
|
53 scmutil, |
9b12517a7081
py3: make hgext/hgk.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
25793
diff
changeset
|
54 ) |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
55 |
21250
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
56 cmdtable = {} |
32337
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
31409
diff
changeset
|
57 command = registrar.command(cmdtable) |
29841
d5883fd055c6
extensions: change magic "shipped with hg" string
Augie Fackler <augie@google.com>
parents:
29397
diff
changeset
|
58 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for |
25186
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24604
diff
changeset
|
59 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24604
diff
changeset
|
60 # be specifying the version(s) of Mercurial they are tested with, or |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24604
diff
changeset
|
61 # leave the attribute unspecified. |
29841
d5883fd055c6
extensions: change magic "shipped with hg" string
Augie Fackler <augie@google.com>
parents:
29397
diff
changeset
|
62 testedwith = 'ships-with-hg-core' |
16743
38caf405d010
hgext: mark all first-party extensions as such
Augie Fackler <raf@durin42.com>
parents:
16683
diff
changeset
|
63 |
34499
b8f74c4d188f
configitems: register the 'hgk.path' config
Boris Feld <boris.feld@octobus.net>
parents:
33839
diff
changeset
|
64 configtable = {} |
b8f74c4d188f
configitems: register the 'hgk.path' config
Boris Feld <boris.feld@octobus.net>
parents:
33839
diff
changeset
|
65 configitem = registrar.configitem(configtable) |
b8f74c4d188f
configitems: register the 'hgk.path' config
Boris Feld <boris.feld@octobus.net>
parents:
33839
diff
changeset
|
66 |
b8f74c4d188f
configitems: register the 'hgk.path' config
Boris Feld <boris.feld@octobus.net>
parents:
33839
diff
changeset
|
67 configitem('hgk', 'path', |
b8f74c4d188f
configitems: register the 'hgk.path' config
Boris Feld <boris.feld@octobus.net>
parents:
33839
diff
changeset
|
68 default='hgk', |
b8f74c4d188f
configitems: register the 'hgk.path' config
Boris Feld <boris.feld@octobus.net>
parents:
33839
diff
changeset
|
69 ) |
b8f74c4d188f
configitems: register the 'hgk.path' config
Boris Feld <boris.feld@octobus.net>
parents:
33839
diff
changeset
|
70 |
21250
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
71 @command('debug-diff-tree', |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
72 [('p', 'patch', None, _('generate patch')), |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
73 ('r', 'recursive', None, _('recursive')), |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
74 ('P', 'pretty', None, _('pretty')), |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
75 ('s', 'stdin', None, _('stdin')), |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
76 ('C', 'copy', None, _('detect copies')), |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
77 ('S', 'search', "", _('search'))], |
24511
0ecc1e42ff3f
hgk: remove repetitious (and wrong) command syntax descriptions
Andrew Shadura <andrew@shadura.me>
parents:
23451
diff
changeset
|
78 ('[OPTION]... NODE1 NODE2 [FILE]...'), |
21783
82bf4d89e068
hgk: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
21250
diff
changeset
|
79 inferrepo=True) |
3063
aa1cee5b8afb
hgk.py: add an optional file list to debug-diff-tree
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3059
diff
changeset
|
80 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
|
81 """diff trees from two commits""" |
34998
fc0e6d298cd4
py3: handle keyword arguments in hgext/hgk.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34499
diff
changeset
|
82 |
31409
dddc4812aa7a
hgk: don't use mutable default argument value
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31203
diff
changeset
|
83 def __difftree(repo, node1, node2, files=None): |
3978
ee5663cb4406
hgk: remove unused code, node2 is always set
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3963
diff
changeset
|
84 assert node2 is not None |
31409
dddc4812aa7a
hgk: don't use mutable default argument value
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31203
diff
changeset
|
85 if files is None: |
dddc4812aa7a
hgk: don't use mutable default argument value
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31203
diff
changeset
|
86 files = [] |
6747
f6c00b17387c
use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents:
6666
diff
changeset
|
87 mmap = repo[node1].manifest() |
f6c00b17387c
use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents:
6666
diff
changeset
|
88 mmap2 = repo[node2].manifest() |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14322
diff
changeset
|
89 m = scmutil.match(repo[node1], files) |
6760
4faaa0535ea7
status: clean up all users for unknown files
Matt Mackall <mpm@selenic.com>
parents:
6750
diff
changeset
|
90 modified, added, removed = repo.status(node1, node2, m)[:3] |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
91 empty = short(nullid) |
267 | 92 |
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
|
93 for f in modified: |
334 | 94 # TODO get file permissions |
29397
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29205
diff
changeset
|
95 ui.write((":100664 100664 %s %s M\t%s\t%s\n") % |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
96 (short(mmap[f]), short(mmap2[f]), 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
|
97 for f in added: |
29397
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29205
diff
changeset
|
98 ui.write((":000000 100664 %s %s N\t%s\t%s\n") % |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
99 (empty, short(mmap2[f]), 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
|
100 for f in removed: |
29397
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29205
diff
changeset
|
101 ui.write((":100664 000000 %s %s D\t%s\t%s\n") % |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
102 (short(mmap[f]), empty, f, f)) |
267 | 103 ## |
104 | |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
105 while True: |
34998
fc0e6d298cd4
py3: handle keyword arguments in hgext/hgk.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34499
diff
changeset
|
106 if opts[r'stdin']: |
36790
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
107 line = ui.fin.readline() |
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
108 if not line: |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
109 break |
36790
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
110 line = line.rstrip(pycompat.oslinesep).split(b' ') |
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
111 node1 = line[0] |
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
112 if len(line) > 1: |
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
113 node2 = line[1] |
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
114 else: |
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
115 node2 = None |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
116 node1 = repo.lookup(node1) |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
117 if node2: |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
118 node2 = repo.lookup(node2) |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
119 else: |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
120 node2 = node1 |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
121 node1 = repo.changelog.parents(node1)[0] |
34998
fc0e6d298cd4
py3: handle keyword arguments in hgext/hgk.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34499
diff
changeset
|
122 if opts[r'patch']: |
fc0e6d298cd4
py3: handle keyword arguments in hgext/hgk.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34499
diff
changeset
|
123 if opts[r'pretty']: |
5878
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
124 catcommit(ui, repo, node2, "") |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14322
diff
changeset
|
125 m = scmutil.match(repo[node1], files) |
23451
5fb1fc2e1281
hgk: don't honor whitespace and format-changing diffopts
Siddharth Agarwal <sid0@fb.com>
parents:
23270
diff
changeset
|
126 diffopts = patch.difffeatureopts(ui) |
5fb1fc2e1281
hgk: don't honor whitespace and format-changing diffopts
Siddharth Agarwal <sid0@fb.com>
parents:
23270
diff
changeset
|
127 diffopts.git = True |
7308
b6f5490effbf
patch: turn patch.diff() into a generator
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7000
diff
changeset
|
128 chunks = patch.diff(repo, node1, node2, match=m, |
23451
5fb1fc2e1281
hgk: don't honor whitespace and format-changing diffopts
Siddharth Agarwal <sid0@fb.com>
parents:
23270
diff
changeset
|
129 opts=diffopts) |
7308
b6f5490effbf
patch: turn patch.diff() into a generator
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7000
diff
changeset
|
130 for chunk in chunks: |
8615
94ca38e63576
use ui instead of repo.ui when the former is in scope
Martin Geisler <mg@lazybytes.net>
parents:
8459
diff
changeset
|
131 ui.write(chunk) |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
132 else: |
3063
aa1cee5b8afb
hgk.py: add an optional file list to debug-diff-tree
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3059
diff
changeset
|
133 __difftree(repo, node1, node2, files=files) |
34998
fc0e6d298cd4
py3: handle keyword arguments in hgext/hgk.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34499
diff
changeset
|
134 if not opts[r'stdin']: |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
135 break |
267 | 136 |
5878
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
137 def catcommit(ui, repo, n, prefix, ctx=None): |
10394
4612cded5176
fix coding style (reported by pylint)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10282
diff
changeset
|
138 nlprefix = '\n' + prefix |
3979
e0d13267f7a4
hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3978
diff
changeset
|
139 if ctx is None: |
6747
f6c00b17387c
use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents:
6666
diff
changeset
|
140 ctx = repo[n] |
16683 | 141 # use ctx.node() instead ?? |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17773
diff
changeset
|
142 ui.write(("tree %s\n" % short(ctx.changeset()[0]))) |
6768 | 143 for p in ctx.parents(): |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17773
diff
changeset
|
144 ui.write(("parent %s\n" % p)) |
6768 | 145 |
3979
e0d13267f7a4
hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3978
diff
changeset
|
146 date = ctx.date() |
4039
cc08d2543593
hgk: remove embedded nulls in descriptions
Matt Mackall <mpm@selenic.com>
parents:
3981
diff
changeset
|
147 description = ctx.description().replace("\0", "") |
36490
1c4247b0040a
py3: use '%d' instead of '%s' for ints
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34998
diff
changeset
|
148 ui.write(("author %s %d %d\n" % (ctx.user(), int(date[0]), date[1]))) |
1308
2073e5a71008
Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1278
diff
changeset
|
149 |
24604
ce8dd4fd2d5d
hgk: display committer name when set by hg-git
Andrew Shadura <andrew@shadura.me>
parents:
24517
diff
changeset
|
150 if 'committer' in ctx.extra(): |
ce8dd4fd2d5d
hgk: display committer name when set by hg-git
Andrew Shadura <andrew@shadura.me>
parents:
24517
diff
changeset
|
151 ui.write(("committer %s\n" % ctx.extra()['committer'])) |
ce8dd4fd2d5d
hgk: display committer name when set by hg-git
Andrew Shadura <andrew@shadura.me>
parents:
24517
diff
changeset
|
152 |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17773
diff
changeset
|
153 ui.write(("revision %d\n" % ctx.rev())) |
18807
cf72fd8b3072
hgk: add support for phases
Andrew Shadura <bugzilla@tut.by>
parents:
17959
diff
changeset
|
154 ui.write(("branch %s\n" % ctx.branch())) |
24513
b5a0b2374eb6
hgk: display obsolete changesets in darkgrey
Andrew Shadura <andrew@shadura.me>
parents:
24512
diff
changeset
|
155 if obsolete.isenabled(repo, obsolete.createmarkersopt): |
b5a0b2374eb6
hgk: display obsolete changesets in darkgrey
Andrew Shadura <andrew@shadura.me>
parents:
24512
diff
changeset
|
156 if ctx.obsolete(): |
b5a0b2374eb6
hgk: display obsolete changesets in darkgrey
Andrew Shadura <andrew@shadura.me>
parents:
24512
diff
changeset
|
157 ui.write(("obsolete\n")) |
18807
cf72fd8b3072
hgk: add support for phases
Andrew Shadura <bugzilla@tut.by>
parents:
17959
diff
changeset
|
158 ui.write(("phase %s\n\n" % ctx.phasestr())) |
5878
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
159 |
267 | 160 if prefix != "": |
16683 | 161 ui.write("%s%s\n" % (prefix, |
162 description.replace('\n', nlprefix).strip())) | |
267 | 163 else: |
5878
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
164 ui.write(description + "\n") |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
165 if prefix: |
5878
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
166 ui.write('\0') |
267 | 167 |
24511
0ecc1e42ff3f
hgk: remove repetitious (and wrong) command syntax descriptions
Andrew Shadura <andrew@shadura.me>
parents:
23451
diff
changeset
|
168 @command('debug-merge-base', [], _('REV REV')) |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
169 def base(ui, repo, node1, node2): |
7598 | 170 """output common ancestor information""" |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
171 node1 = repo.lookup(node1) |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
172 node2 = repo.lookup(node2) |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
173 n = repo.changelog.ancestor(node1, node2) |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
174 ui.write(short(n) + "\n") |
267 | 175 |
21250
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
176 @command('debug-cat-file', |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
177 [('s', 'stdin', None, _('stdin'))], |
24511
0ecc1e42ff3f
hgk: remove repetitious (and wrong) command syntax descriptions
Andrew Shadura <andrew@shadura.me>
parents:
23451
diff
changeset
|
178 _('[OPTION]... TYPE FILE'), |
21783
82bf4d89e068
hgk: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
21250
diff
changeset
|
179 inferrepo=True) |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
180 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
|
181 """cat a specific revision""" |
267 | 182 # in stdin mode, every line except the commit is prefixed with two |
183 # spaces. This way the our caller can find the commit without magic | |
184 # strings | |
185 # | |
186 prefix = "" | |
34998
fc0e6d298cd4
py3: handle keyword arguments in hgext/hgk.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34499
diff
changeset
|
187 if opts[r'stdin']: |
36790
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
188 line = ui.fin.readline() |
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
189 if not line: |
334 | 190 return |
36790
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
191 (type, r) = line.rstrip(pycompat.oslinesep).split(b' ') |
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
192 prefix = " " |
267 | 193 else: |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
194 if not type or not r: |
6958
e01ed40a31a2
i18n: mark strings for translation in hgk extension
Martin Geisler <mg@daimi.au.dk>
parents:
6812
diff
changeset
|
195 ui.warn(_("cat-file: type or revision not supplied\n")) |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
196 commands.help_(ui, 'cat-file') |
267 | 197 |
198 while r: | |
334 | 199 if type != "commit": |
6958
e01ed40a31a2
i18n: mark strings for translation in hgk extension
Martin Geisler <mg@daimi.au.dk>
parents:
6812
diff
changeset
|
200 ui.warn(_("aborting hg cat-file only understands commits\n")) |
10394
4612cded5176
fix coding style (reported by pylint)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10282
diff
changeset
|
201 return 1 |
720
095dd8c757e0
Change hgit revision lookup to use repo.lookup
mason@suse.com
parents:
719
diff
changeset
|
202 n = repo.lookup(r) |
5878
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
203 catcommit(ui, repo, n, prefix) |
34998
fc0e6d298cd4
py3: handle keyword arguments in hgext/hgk.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34499
diff
changeset
|
204 if opts[r'stdin']: |
36790
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
205 line = ui.fin.readline() |
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
206 if not line: |
334 | 207 break |
36790
cb0afaf112e8
hgk: stop using util.bytesinput() to read a single line from stdin
Yuya Nishihara <yuya@tcha.org>
parents:
36490
diff
changeset
|
208 (type, r) = line.rstrip(pycompat.oslinesep).split(b' ') |
334 | 209 else: |
210 break | |
267 | 211 |
212 # git rev-tree is a confusing thing. You can supply a number of | |
213 # commit sha1s on the command line, and it walks the commit history | |
214 # telling you which commits are reachable from the supplied ones via | |
215 # a bitmask based on arg position. | |
216 # you can specify a commit to stop at by starting the sha1 with ^ | |
5878
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
217 def revtree(ui, args, repo, full="tree", maxnr=0, parents=False): |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
218 def chlogwalk(): |
6750
fb42030d79d6
add __len__ and __iter__ methods to repo and revlog
Matt Mackall <mpm@selenic.com>
parents:
6747
diff
changeset
|
219 count = len(repo) |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
220 i = count |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
221 l = [0] * 100 |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
222 chunk = 100 |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
223 while True: |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
224 if chunk > i: |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
225 chunk = i |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
226 i = 0 |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
227 else: |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
228 i -= chunk |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
229 |
8624
2b3dec0ef3ae
replace xrange(0, n) with xrange(n)
Martin Geisler <mg@lazybytes.net>
parents:
8615
diff
changeset
|
230 for x in xrange(chunk): |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
231 if i + x >= count: |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
232 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
|
233 break |
13031
3da456d0c885
code style: prefer 'is' and 'is not' tests with singletons
Martin Geisler <mg@aragost.com>
parents:
12083
diff
changeset
|
234 if full is not None: |
22580
271a1ddad1fb
hgk: don't break on repositories with obsolete changesets
Andrew Shadura <andrew@shadura.me>
parents:
21783
diff
changeset
|
235 if (i + x) in repo: |
271a1ddad1fb
hgk: don't break on repositories with obsolete changesets
Andrew Shadura <andrew@shadura.me>
parents:
21783
diff
changeset
|
236 l[x] = repo[i + x] |
271a1ddad1fb
hgk: don't break on repositories with obsolete changesets
Andrew Shadura <andrew@shadura.me>
parents:
21783
diff
changeset
|
237 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
|
238 else: |
22580
271a1ddad1fb
hgk: don't break on repositories with obsolete changesets
Andrew Shadura <andrew@shadura.me>
parents:
21783
diff
changeset
|
239 if (i + x) in repo: |
271a1ddad1fb
hgk: don't break on repositories with obsolete changesets
Andrew Shadura <andrew@shadura.me>
parents:
21783
diff
changeset
|
240 l[x] = 1 |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10263
diff
changeset
|
241 for x in xrange(chunk - 1, -1, -1): |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
242 if l[x] != 0: |
13031
3da456d0c885
code style: prefer 'is' and 'is not' tests with singletons
Martin Geisler <mg@aragost.com>
parents:
12083
diff
changeset
|
243 yield (i + x, full is not None and l[x] or None) |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
244 if i == 0: |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
245 break |
1308
2073e5a71008
Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1278
diff
changeset
|
246 |
267 | 247 # calculate and return the reachability bitmask for sha |
248 def is_reachable(ar, reachable, sha): | |
334 | 249 if len(ar) == 0: |
250 return 1 | |
251 mask = 0 | |
3473
0e68608bd11d
use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3180
diff
changeset
|
252 for i in xrange(len(ar)): |
334 | 253 if sha in reachable[i]: |
254 mask |= 1 << i | |
267 | 255 |
334 | 256 return mask |
267 | 257 |
258 reachable = [] | |
259 stop_sha1 = [] | |
260 want_sha1 = [] | |
356 | 261 count = 0 |
267 | 262 |
263 # figure out which commits they are asking for and which ones they | |
264 # want us to stop on | |
8632
9e055cfdd620
replace "i in range(len(xs))" with "i, x in enumerate(xs)"
Martin Geisler <mg@lazybytes.net>
parents:
8624
diff
changeset
|
265 for i, arg in enumerate(args): |
9e055cfdd620
replace "i in range(len(xs))" with "i, x in enumerate(xs)"
Martin Geisler <mg@lazybytes.net>
parents:
8624
diff
changeset
|
266 if arg.startswith('^'): |
9e055cfdd620
replace "i in range(len(xs))" with "i, x in enumerate(xs)"
Martin Geisler <mg@lazybytes.net>
parents:
8624
diff
changeset
|
267 s = repo.lookup(arg[1:]) |
720
095dd8c757e0
Change hgit revision lookup to use repo.lookup
mason@suse.com
parents:
719
diff
changeset
|
268 stop_sha1.append(s) |
334 | 269 want_sha1.append(s) |
8632
9e055cfdd620
replace "i in range(len(xs))" with "i, x in enumerate(xs)"
Martin Geisler <mg@lazybytes.net>
parents:
8624
diff
changeset
|
270 elif arg != 'HEAD': |
9e055cfdd620
replace "i in range(len(xs))" with "i, x in enumerate(xs)"
Martin Geisler <mg@lazybytes.net>
parents:
8624
diff
changeset
|
271 want_sha1.append(repo.lookup(arg)) |
356 | 272 |
267 | 273 # calculate the graph for the supplied commits |
8632
9e055cfdd620
replace "i in range(len(xs))" with "i, x in enumerate(xs)"
Martin Geisler <mg@lazybytes.net>
parents:
8624
diff
changeset
|
274 for i, n in enumerate(want_sha1): |
10394
4612cded5176
fix coding style (reported by pylint)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10282
diff
changeset
|
275 reachable.append(set()) |
4612cded5176
fix coding style (reported by pylint)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10282
diff
changeset
|
276 visit = [n] |
8459
1e63816ce8a2
hgk: use set instead of dict
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8228
diff
changeset
|
277 reachable[i].add(n) |
334 | 278 while visit: |
279 n = visit.pop(0) | |
280 if n in stop_sha1: | |
1243
9d10f89b75a5
Fix hgit revtree bug with stop revision handling
root@coffee.suse.com
parents:
1239
diff
changeset
|
281 continue |
334 | 282 for p in repo.changelog.parents(n): |
283 if p not in reachable[i]: | |
8459
1e63816ce8a2
hgk: use set instead of dict
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8228
diff
changeset
|
284 reachable[i].add(p) |
334 | 285 visit.append(p) |
286 if p in stop_sha1: | |
1243
9d10f89b75a5
Fix hgit revtree bug with stop revision handling
root@coffee.suse.com
parents:
1239
diff
changeset
|
287 continue |
356 | 288 |
267 | 289 # walk the repository looking for commits that are in our |
290 # reachability graph | |
3979
e0d13267f7a4
hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3978
diff
changeset
|
291 for i, ctx in chlogwalk(): |
22580
271a1ddad1fb
hgk: don't break on repositories with obsolete changesets
Andrew Shadura <andrew@shadura.me>
parents:
21783
diff
changeset
|
292 if i not in repo: |
271a1ddad1fb
hgk: don't break on repositories with obsolete changesets
Andrew Shadura <andrew@shadura.me>
parents:
21783
diff
changeset
|
293 continue |
334 | 294 n = repo.changelog.node(i) |
295 mask = is_reachable(want_sha1, reachable, n) | |
296 if mask: | |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
297 parentstr = "" |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
298 if parents: |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
299 pp = repo.changelog.parents(n) |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
300 if pp[0] != nullid: |
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
301 parentstr += " " + short(pp[0]) |
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
302 if pp[1] != nullid: |
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
303 parentstr += " " + short(pp[1]) |
356 | 304 if not full: |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
305 ui.write("%s%s\n" % (short(n), parentstr)) |
3064
fe5c92529d1c
hgk.py: fix warnings from pychecker
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3063
diff
changeset
|
306 elif full == "commit": |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
307 ui.write("%s%s\n" % (short(n), parentstr)) |
5878
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
308 catcommit(ui, repo, n, ' ', ctx) |
356 | 309 else: |
310 (p1, p2) = repo.changelog.parents(n) | |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
311 (h, h1, h2) = map(short, (n, p1, p2)) |
356 | 312 (i1, i2) = map(repo.changelog.rev, (p1, p2)) |
267 | 313 |
3979
e0d13267f7a4
hgk: use contexts
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3978
diff
changeset
|
314 date = ctx.date()[0] |
5878
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
315 ui.write("%s %s:%s" % (date, h, mask)) |
356 | 316 mask = is_reachable(want_sha1, reachable, p1) |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
317 if i1 != nullrev and mask > 0: |
5878
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
318 ui.write("%s:%s " % (h1, mask)), |
356 | 319 mask = is_reachable(want_sha1, reachable, p2) |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
320 if i2 != nullrev and mask > 0: |
5878
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
321 ui.write("%s:%s " % (h2, mask)) |
d39af2eabb8c
transform a bunch of print statements to appropriate ui calls
Matt Mackall <mpm@selenic.com>
parents:
5859
diff
changeset
|
322 ui.write("\n") |
356 | 323 if maxnr and count >= maxnr: |
324 break | |
325 count += 1 | |
267 | 326 |
327 # git rev-list tries to order things by date, and has the ability to stop | |
328 # at a given commit without walking the whole repo. TODO add the stop | |
329 # parameter | |
21250
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
330 @command('debug-rev-list', |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
331 [('H', 'header', None, _('header')), |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
332 ('t', 'topo-order', None, _('topo-order')), |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
333 ('p', 'parents', None, _('parents')), |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
334 ('n', 'max-count', 0, _('max-count'))], |
24511
0ecc1e42ff3f
hgk: remove repetitious (and wrong) command syntax descriptions
Andrew Shadura <andrew@shadura.me>
parents:
23451
diff
changeset
|
335 ('[OPTION]... REV...')) |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
336 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
|
337 """print revisions""" |
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
338 if opts['header']: |
356 | 339 full = "commit" |
340 else: | |
341 full = None | |
1239
29f17e083e84
Turn hgit into an extension, and add commands supporting the latest gitk
mason@suse.com
parents:
740
diff
changeset
|
342 copy = [x for x in revs] |
34998
fc0e6d298cd4
py3: handle keyword arguments in hgext/hgk.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34499
diff
changeset
|
343 revtree(ui, copy, repo, full, opts[r'max_count'], opts[r'parents']) |
267 | 344 |
21250
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
345 @command('view', |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
346 [('l', 'limit', '', |
8d354d58147c
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
18816
diff
changeset
|
347 _('limit number of changes displayed'), _('NUM'))], |
24511
0ecc1e42ff3f
hgk: remove repetitious (and wrong) command syntax descriptions
Andrew Shadura <andrew@shadura.me>
parents:
23451
diff
changeset
|
348 _('[-l LIMIT] [REVRANGE]')) |
3093
edefbb3a3b08
hgk: add --limit, and revranges
Brendan Cully <brendan@kublai.com>
parents:
3092
diff
changeset
|
349 def view(ui, repo, *etc, **opts): |
1278 | 350 "start interactive history viewer" |
34998
fc0e6d298cd4
py3: handle keyword arguments in hgext/hgk.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34499
diff
changeset
|
351 opts = pycompat.byteskwargs(opts) |
1278 | 352 os.chdir(repo.root) |
3180
eb0906ebba81
hgk: fix mixup of --limit and REVRANGE in hgk call
TK Soh <teekaysoh@yahoo.com>
parents:
3093
diff
changeset
|
353 optstr = ' '.join(['--%s %s' % (k, v) for k, v in opts.iteritems() if v]) |
24512
e5c5ddc3b172
hgk: pass --hidden switch to hg subprocesses when needed
Andrew Shadura <andrew@shadura.me>
parents:
24511
diff
changeset
|
354 if repo.filtername is None: |
e5c5ddc3b172
hgk: pass --hidden switch to hg subprocesses when needed
Andrew Shadura <andrew@shadura.me>
parents:
24511
diff
changeset
|
355 optstr += '--hidden' |
e5c5ddc3b172
hgk: pass --hidden switch to hg subprocesses when needed
Andrew Shadura <andrew@shadura.me>
parents:
24511
diff
changeset
|
356 |
34499
b8f74c4d188f
configitems: register the 'hgk.path' config
Boris Feld <boris.feld@octobus.net>
parents:
33839
diff
changeset
|
357 cmd = ui.config("hgk", "path") + " %s %s" % (optstr, " ".join(etc)) |
9467
4c041f1ee1b4
do not attempt to translate ui.debug output
Martin Geisler <mg@lazybytes.net>
parents:
9261
diff
changeset
|
358 ui.debug("running %s\n" % cmd) |
31203
a8e4322f64c1
hgk: set a blocked tag when the user invokes view
Simon Farnsworth <simonfar@fb.com>
parents:
29841
diff
changeset
|
359 ui.system(cmd, blockedtag='hgk_view') |