Mercurial > public > mercurial-scm > hg-stable
annotate mercurial/debugcommands.py @ 30514:158b41842fd2
debugcommands: move 'debugcomplete' in the new module
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 17 Aug 2016 20:41:05 -0700 |
parents | c3bdc27121d1 |
children | 625ccc95fa96 |
rev | line source |
---|---|
30411
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
1 # debugcommands.py - command processing for debug* commands |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
2 # |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
3 # Copyright 2005-2016 Matt Mackall <mpm@selenic.com> |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
4 # |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
6 # GNU General Public License version 2 or any later version. |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
7 |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
8 from __future__ import absolute_import |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
9 |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
10 import os |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
11 |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
12 from .i18n import _ |
30412
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
13 from .node import ( |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
14 hex, |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
15 ) |
30411
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
16 from . import ( |
30510
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
17 bundle2, |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
18 changegroup, |
30411
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
19 cmdutil, |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
20 commands, |
30412
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
21 context, |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
22 dagparser, |
30411
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
23 error, |
30510
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
24 exchange, |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
25 hg, |
30412
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
26 lock as lockmod, |
30411
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
27 revlog, |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
28 scmutil, |
30412
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
29 simplemerge, |
30511
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
30 streamclone, |
30411
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
31 ) |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
32 |
30412
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
33 release = lockmod.release |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
34 |
30411
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
35 # We reuse the command table from commands because it is easier than |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
36 # teaching dispatch about multiple tables. |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
37 command = cmdutil.command(commands.table) |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
38 |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
39 @command('debugancestor', [], _('[INDEX] REV1 REV2'), optionalrepo=True) |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
40 def debugancestor(ui, repo, *args): |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
41 """find the ancestor revision of two revisions in a given index""" |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
42 if len(args) == 3: |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
43 index, rev1, rev2 = args |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
44 r = revlog.revlog(scmutil.opener(os.getcwd(), audit=False), index) |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
45 lookup = r.lookup |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
46 elif len(args) == 2: |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
47 if not repo: |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
48 raise error.Abort(_('there is no Mercurial repository here ' |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
49 '(.hg not found)')) |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
50 rev1, rev2 = args |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
51 r = repo.changelog |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
52 lookup = repo.lookup |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
53 else: |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
54 raise error.Abort(_('either two or three arguments required')) |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
55 a = r.ancestor(lookup(rev1), lookup(rev2)) |
869d660b8669
debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
56 ui.write('%d:%s\n' % (r.rev(a), hex(a))) |
30412
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
57 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
58 @command('debugbuilddag', |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
59 [('m', 'mergeable-file', None, _('add single file mergeable changes')), |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
60 ('o', 'overwritten-file', None, _('add single file all revs overwrite')), |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
61 ('n', 'new-file', None, _('add new file at each rev'))], |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
62 _('[OPTION]... [TEXT]')) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
63 def debugbuilddag(ui, repo, text=None, |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
64 mergeable_file=False, |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
65 overwritten_file=False, |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
66 new_file=False): |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
67 """builds a repo with a given DAG from scratch in the current empty repo |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
68 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
69 The description of the DAG is read from stdin if not given on the |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
70 command line. |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
71 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
72 Elements: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
73 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
74 - "+n" is a linear run of n nodes based on the current default parent |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
75 - "." is a single node based on the current default parent |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
76 - "$" resets the default parent to null (implied at the start); |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
77 otherwise the default parent is always the last node created |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
78 - "<p" sets the default parent to the backref p |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
79 - "*p" is a fork at parent p, which is a backref |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
80 - "*p1/p2" is a merge of parents p1 and p2, which are backrefs |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
81 - "/p2" is a merge of the preceding node and p2 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
82 - ":tag" defines a local tag for the preceding node |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
83 - "@branch" sets the named branch for subsequent nodes |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
84 - "#...\\n" is a comment up to the end of the line |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
85 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
86 Whitespace between the above elements is ignored. |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
87 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
88 A backref is either |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
89 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
90 - a number n, which references the node curr-n, where curr is the current |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
91 node, or |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
92 - the name of a local tag you placed earlier using ":tag", or |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
93 - empty to denote the default parent. |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
94 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
95 All string valued-elements are either strictly alphanumeric, or must |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
96 be enclosed in double quotes ("..."), with "\\" as escape character. |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
97 """ |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
98 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
99 if text is None: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
100 ui.status(_("reading DAG from stdin\n")) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
101 text = ui.fin.read() |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
102 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
103 cl = repo.changelog |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
104 if len(cl) > 0: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
105 raise error.Abort(_('repository is not empty')) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
106 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
107 # determine number of revs in DAG |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
108 total = 0 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
109 for type, data in dagparser.parsedag(text): |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
110 if type == 'n': |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
111 total += 1 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
112 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
113 if mergeable_file: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
114 linesperrev = 2 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
115 # make a file with k lines per rev |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
116 initialmergedlines = [str(i) for i in xrange(0, total * linesperrev)] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
117 initialmergedlines.append("") |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
118 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
119 tags = [] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
120 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
121 wlock = lock = tr = None |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
122 try: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
123 wlock = repo.wlock() |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
124 lock = repo.lock() |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
125 tr = repo.transaction("builddag") |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
126 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
127 at = -1 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
128 atbranch = 'default' |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
129 nodeids = [] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
130 id = 0 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
131 ui.progress(_('building'), id, unit=_('revisions'), total=total) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
132 for type, data in dagparser.parsedag(text): |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
133 if type == 'n': |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
134 ui.note(('node %s\n' % str(data))) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
135 id, ps = data |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
136 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
137 files = [] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
138 fctxs = {} |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
139 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
140 p2 = None |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
141 if mergeable_file: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
142 fn = "mf" |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
143 p1 = repo[ps[0]] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
144 if len(ps) > 1: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
145 p2 = repo[ps[1]] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
146 pa = p1.ancestor(p2) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
147 base, local, other = [x[fn].data() for x in (pa, p1, |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
148 p2)] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
149 m3 = simplemerge.Merge3Text(base, local, other) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
150 ml = [l.strip() for l in m3.merge_lines()] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
151 ml.append("") |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
152 elif at > 0: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
153 ml = p1[fn].data().split("\n") |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
154 else: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
155 ml = initialmergedlines |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
156 ml[id * linesperrev] += " r%i" % id |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
157 mergedtext = "\n".join(ml) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
158 files.append(fn) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
159 fctxs[fn] = context.memfilectx(repo, fn, mergedtext) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
160 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
161 if overwritten_file: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
162 fn = "of" |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
163 files.append(fn) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
164 fctxs[fn] = context.memfilectx(repo, fn, "r%i\n" % id) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
165 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
166 if new_file: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
167 fn = "nf%i" % id |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
168 files.append(fn) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
169 fctxs[fn] = context.memfilectx(repo, fn, "r%i\n" % id) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
170 if len(ps) > 1: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
171 if not p2: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
172 p2 = repo[ps[1]] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
173 for fn in p2: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
174 if fn.startswith("nf"): |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
175 files.append(fn) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
176 fctxs[fn] = p2[fn] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
177 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
178 def fctxfn(repo, cx, path): |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
179 return fctxs.get(path) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
180 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
181 if len(ps) == 0 or ps[0] < 0: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
182 pars = [None, None] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
183 elif len(ps) == 1: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
184 pars = [nodeids[ps[0]], None] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
185 else: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
186 pars = [nodeids[p] for p in ps] |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
187 cx = context.memctx(repo, pars, "r%i" % id, files, fctxfn, |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
188 date=(id, 0), |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
189 user="debugbuilddag", |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
190 extra={'branch': atbranch}) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
191 nodeid = repo.commitctx(cx) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
192 nodeids.append(nodeid) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
193 at = id |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
194 elif type == 'l': |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
195 id, name = data |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
196 ui.note(('tag %s\n' % name)) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
197 tags.append("%s %s\n" % (hex(repo.changelog.node(id)), name)) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
198 elif type == 'a': |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
199 ui.note(('branch %s\n' % data)) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
200 atbranch = data |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
201 ui.progress(_('building'), id, unit=_('revisions'), total=total) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
202 tr.close() |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
203 |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
204 if tags: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
205 repo.vfs.write("localtags", "".join(tags)) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
206 finally: |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
207 ui.progress(_('building'), None) |
945f8229b30d
debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30411
diff
changeset
|
208 release(tr, lock, wlock) |
30510
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
209 |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
210 @command('debugbundle', |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
211 [('a', 'all', None, _('show all details')), |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
212 ('', 'spec', None, _('print the bundlespec of the bundle'))], |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
213 _('FILE'), |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
214 norepo=True) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
215 def debugbundle(ui, bundlepath, all=None, spec=None, **opts): |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
216 """lists the contents of a bundle""" |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
217 with hg.openpath(ui, bundlepath) as f: |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
218 if spec: |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
219 spec = exchange.getbundlespec(ui, f) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
220 ui.write('%s\n' % spec) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
221 return |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
222 |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
223 gen = exchange.readbundle(ui, f, bundlepath) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
224 if isinstance(gen, bundle2.unbundle20): |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
225 return _debugbundle2(ui, gen, all=all, **opts) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
226 _debugchangegroup(ui, gen, all=all, **opts) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
227 |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
228 def _debugchangegroup(ui, gen, all=None, indent=0, **opts): |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
229 indent_string = ' ' * indent |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
230 if all: |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
231 ui.write(("%sformat: id, p1, p2, cset, delta base, len(delta)\n") |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
232 % indent_string) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
233 |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
234 def showchunks(named): |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
235 ui.write("\n%s%s\n" % (indent_string, named)) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
236 chain = None |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
237 for chunkdata in iter(lambda: gen.deltachunk(chain), {}): |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
238 node = chunkdata['node'] |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
239 p1 = chunkdata['p1'] |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
240 p2 = chunkdata['p2'] |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
241 cs = chunkdata['cs'] |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
242 deltabase = chunkdata['deltabase'] |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
243 delta = chunkdata['delta'] |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
244 ui.write("%s%s %s %s %s %s %s\n" % |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
245 (indent_string, hex(node), hex(p1), hex(p2), |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
246 hex(cs), hex(deltabase), len(delta))) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
247 chain = node |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
248 |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
249 chunkdata = gen.changelogheader() |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
250 showchunks("changelog") |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
251 chunkdata = gen.manifestheader() |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
252 showchunks("manifest") |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
253 for chunkdata in iter(gen.filelogheader, {}): |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
254 fname = chunkdata['filename'] |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
255 showchunks(fname) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
256 else: |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
257 if isinstance(gen, bundle2.unbundle20): |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
258 raise error.Abort(_('use debugbundle2 for this file')) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
259 chunkdata = gen.changelogheader() |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
260 chain = None |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
261 for chunkdata in iter(lambda: gen.deltachunk(chain), {}): |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
262 node = chunkdata['node'] |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
263 ui.write("%s%s\n" % (indent_string, hex(node))) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
264 chain = node |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
265 |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
266 def _debugbundle2(ui, gen, all=None, **opts): |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
267 """lists the contents of a bundle2""" |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
268 if not isinstance(gen, bundle2.unbundle20): |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
269 raise error.Abort(_('not a bundle2 file')) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
270 ui.write(('Stream params: %s\n' % repr(gen.params))) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
271 for part in gen.iterparts(): |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
272 ui.write('%s -- %r\n' % (part.type, repr(part.params))) |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
273 if part.type == 'changegroup': |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
274 version = part.params.get('version', '01') |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
275 cg = changegroup.getunbundler(version, part, 'UN') |
a87e469201f9
debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30412
diff
changeset
|
276 _debugchangegroup(ui, cg, all=all, indent=4, **opts) |
30511
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
277 |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
278 @command('debugcreatestreamclonebundle', [], 'FILE') |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
279 def debugcreatestreamclonebundle(ui, repo, fname): |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
280 """create a stream clone bundle file |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
281 |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
282 Stream bundles are special bundles that are essentially archives of |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
283 revlog files. They are commonly used for cloning very quickly. |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
284 """ |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
285 requirements, gen = streamclone.generatebundlev1(repo) |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
286 changegroup.writechunks(ui, gen, fname) |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
287 |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
288 ui.write(_('bundle requirements: %s\n') % ', '.join(sorted(requirements))) |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
289 |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
290 @command('debugapplystreamclonebundle', [], 'FILE') |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
291 def debugapplystreamclonebundle(ui, repo, fname): |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
292 """apply a stream clone bundle file""" |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
293 f = hg.openpath(ui, fname) |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
294 gen = exchange.readbundle(ui, f, fname) |
6da030496667
debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30510
diff
changeset
|
295 gen.apply(repo) |
30512
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
296 |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
297 @command('debugcheckstate', [], '') |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
298 def debugcheckstate(ui, repo): |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
299 """validate the correctness of the current dirstate""" |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
300 parent1, parent2 = repo.dirstate.parents() |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
301 m1 = repo[parent1].manifest() |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
302 m2 = repo[parent2].manifest() |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
303 errors = 0 |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
304 for f in repo.dirstate: |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
305 state = repo.dirstate[f] |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
306 if state in "nr" and f not in m1: |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
307 ui.warn(_("%s in state %s, but not in manifest1\n") % (f, state)) |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
308 errors += 1 |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
309 if state in "a" and f in m1: |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
310 ui.warn(_("%s in state %s, but also in manifest1\n") % (f, state)) |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
311 errors += 1 |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
312 if state in "m" and f not in m1 and f not in m2: |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
313 ui.warn(_("%s in state %s, but not in either manifest\n") % |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
314 (f, state)) |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
315 errors += 1 |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
316 for f in m1: |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
317 state = repo.dirstate[f] |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
318 if state not in "nrm": |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
319 ui.warn(_("%s in manifest1, but listed as state %s") % (f, state)) |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
320 errors += 1 |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
321 if errors: |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
322 error = _(".hg/dirstate inconsistent with current parent's manifest") |
6bfb333a6f2f
debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30511
diff
changeset
|
323 raise error.Abort(error) |
30513
c3bdc27121d1
debugcommands: move 'debugcommands' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30512
diff
changeset
|
324 |
c3bdc27121d1
debugcommands: move 'debugcommands' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30512
diff
changeset
|
325 @command('debugcommands', [], _('[COMMAND]'), norepo=True) |
c3bdc27121d1
debugcommands: move 'debugcommands' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30512
diff
changeset
|
326 def debugcommands(ui, cmd='', *args): |
c3bdc27121d1
debugcommands: move 'debugcommands' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30512
diff
changeset
|
327 """list all available commands and options""" |
c3bdc27121d1
debugcommands: move 'debugcommands' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30512
diff
changeset
|
328 for cmd, vals in sorted(commands.table.iteritems()): |
c3bdc27121d1
debugcommands: move 'debugcommands' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30512
diff
changeset
|
329 cmd = cmd.split('|')[0].strip('^') |
c3bdc27121d1
debugcommands: move 'debugcommands' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30512
diff
changeset
|
330 opts = ', '.join([i[1] for i in vals[1]]) |
c3bdc27121d1
debugcommands: move 'debugcommands' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30512
diff
changeset
|
331 ui.write('%s: %s\n' % (cmd, opts)) |
30514
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
332 |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
333 @command('debugcomplete', |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
334 [('o', 'options', None, _('show the command options'))], |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
335 _('[-o] CMD'), |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
336 norepo=True) |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
337 def debugcomplete(ui, cmd='', **opts): |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
338 """returns the completion list associated with the given command""" |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
339 |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
340 if opts.get('options'): |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
341 options = [] |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
342 otables = [commands.globalopts] |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
343 if cmd: |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
344 aliases, entry = cmdutil.findcmd(cmd, commands.table, False) |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
345 otables.append(entry[1]) |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
346 for t in otables: |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
347 for o in t: |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
348 if "(DEPRECATED)" in o[3]: |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
349 continue |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
350 if o[0]: |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
351 options.append('-%s' % o[0]) |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
352 options.append('--%s' % o[1]) |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
353 ui.write("%s\n" % "\n".join(options)) |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
354 return |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
355 |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
356 cmdlist, unused_allcmds = cmdutil.findpossible(cmd, commands.table) |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
357 if ui.verbose: |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
358 cmdlist = [' '.join(c[0]) for c in cmdlist.values()] |
158b41842fd2
debugcommands: move 'debugcomplete' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30513
diff
changeset
|
359 ui.write("%s\n" % "\n".join(sorted(cmdlist))) |