annotate mercurial/debugcommands.py @ 44011:c627f1b2f3c3

rust-index: handle `MixedIndex` in `pyindex_to_graph` On the long run we will want to implement the Graph trait directly in Rust, but for now we take the path with the least amount of change to focus on the coming persistent NodeMap code. We test this new code through with the lazy ancestors code. Differential Revision: https://phab.mercurial-scm.org/D7657
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 12 Dec 2019 18:11:44 +0100
parents e685fac56693
children 52f8b07ad2f9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30401
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
34129
902219a99901 debuginstall: use codecs.lookup() to detect invalid encoding
Yuya Nishihara <yuya@tcha.org>
parents: 34120
diff changeset
10 import codecs
34025
626a28f30dbd debugcommands: stabilize output of debugbundle by having a custom repr
Augie Fackler <raf@durin42.com>
parents: 33553
diff changeset
11 import collections
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
12 import difflib
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
13 import errno
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
14 import operator
30525
86ebd2f61c31 debugcommands: move 'debugfsinfo' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30524
diff changeset
15 import os
30517
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
16 import random
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
17 import re
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
18 import socket
33493
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
19 import ssl
36781
ffa3026d4196 cleanup: use stat_result[stat.ST_MTIME] instead of stat_result.st_mtime
Augie Fackler <augie@google.com>
parents: 36778
diff changeset
20 import stat
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
21 import string
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
22 import subprocess
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
23 import sys
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
24 import time
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
25
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
26 from .i18n import _
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
27 from .node import (
30526
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
28 bin,
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
29 hex,
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
30 nullhex,
30528
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
31 nullid,
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
32 nullrev,
30517
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
33 short,
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
34 )
43089
c59eb1560c44 py3: manually import getattr where it is needed
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43085
diff changeset
35 from .pycompat import (
c59eb1560c44 py3: manually import getattr where it is needed
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43085
diff changeset
36 getattr,
c59eb1560c44 py3: manually import getattr where it is needed
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43085
diff changeset
37 open,
c59eb1560c44 py3: manually import getattr where it is needed
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43085
diff changeset
38 )
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
39 from . import (
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
40 bundle2,
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
41 changegroup,
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
42 cmdutil,
31120
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
43 color,
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
44 context,
41515
7dc160a57025 debugcommands: add a debugpathcopies command
Martin von Zweigbergk <martinvonz@google.com>
parents: 41365
diff changeset
45 copies,
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
46 dagparser,
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
47 encoding,
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
48 error,
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
49 exchange,
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
50 extensions,
32256
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
51 filemerge,
38805
b9162ea1b815 fileset: extract language processing part to new module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 38802
diff changeset
52 filesetlang,
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
53 formatter,
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
54 hg,
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
55 httppeer,
30517
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
56 localrepo,
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
57 lock as lockmod,
35888
c8e2d6ed1f9e cmdutil: drop aliases for logcmdutil functions (API)
Yuya Nishihara <yuya@tcha.org>
parents: 35730
diff changeset
58 logcmdutil,
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
59 merge as mergemod,
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
60 obsolete,
33142
4f49810a1011 obsutil: move 'successorssets' to the new modules
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33107
diff changeset
61 obsutil,
43633
0b7733719d21 utils: move finddirs() to pathutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 43506
diff changeset
62 pathutil,
32745
23734c0e361f debugcommands: issue warning when repo has secret changesets (issue5589)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32694
diff changeset
63 phases,
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
64 policy,
30947
3c766ca89377 debugcommands: move 'debugpvec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30946
diff changeset
65 pvec,
30519
20a42325fdef py3: use pycompat.getcwd() instead of os.getcwd()
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30518
diff changeset
66 pycompat,
32337
46ba2cdda476 registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32315
diff changeset
67 registrar,
30775
513d68a90398 repair: implement requirements checking for upgrades
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30774
diff changeset
68 repair,
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
69 revlog,
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
70 revset,
31024
0b8356705de6 revset: split language services to revsetlang module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 30988
diff changeset
71 revsetlang,
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
72 scmutil,
30517
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
73 setdiscovery,
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
74 simplemerge,
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
75 sshpeer,
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
76 sslutil,
30502
6da030496667 debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30501
diff changeset
77 streamclone,
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
78 templater,
30517
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
79 treediscovery,
31864
70d163b86316 upgrade: extract code in its own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31689
diff changeset
80 upgrade,
35562
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
81 url as urlmod,
30516
ef1353c283e3 debugcommands: move 'debugdate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30515
diff changeset
82 util,
31239
9cdba6072b97 vfs: use 'vfs' module directly in 'mercurial.debugcommand'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31216
diff changeset
83 vfs as vfsmod,
37051
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
84 wireprotoframing,
36527
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
85 wireprotoserver,
37720
d715a85003c8 wireprotov2: establish a type for representing command response
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37718
diff changeset
86 wireprotov2peer,
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
87 )
37084
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37057
diff changeset
88 from .utils import (
39449
e5eb67dea6e8 debugcommands: use our CBOR decoder
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39378
diff changeset
89 cborutil,
42041
3e47d1ec9da5 util: extract compression code in `mercurial.utils.compression`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42035
diff changeset
90 compression,
37084
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37057
diff changeset
91 dateutil,
37120
a8a902d7176e procutil: bulk-replace function calls to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37084
diff changeset
92 procutil,
37084
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37057
diff changeset
93 stringutil,
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37057
diff changeset
94 )
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
95
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
96 from .revlogutils import deltas as deltautil
39330
655b5b465953 revlog: split functionality related to deltas computation in a new module
Boris Feld <boris.feld@octobus.net>
parents: 39282
diff changeset
97
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
98 release = lockmod.release
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
99
32377
c942c83ac2ec debugcommands: use temporary dict for its command table
Yuya Nishihara <yuya@tcha.org>
parents: 32376
diff changeset
100 command = registrar.command()
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
101
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
102
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
103 @command(b'debugancestor', [], _(b'[INDEX] REV1 REV2'), optionalrepo=True)
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
104 def debugancestor(ui, repo, *args):
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
105 """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
106 if len(args) == 3:
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
107 index, rev1, rev2 = args
39818
24e493ec2229 py3: rename pycompat.getcwd() to encoding.getcwd() (API)
Matt Harbison <matt_harbison@yahoo.com>
parents: 39760
diff changeset
108 r = revlog.revlog(vfsmod.vfs(encoding.getcwd(), audit=False), index)
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
109 lookup = r.lookup
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
110 elif len(args) == 2:
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
111 if not repo:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
112 raise error.Abort(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43116
diff changeset
113 _(b'there is no Mercurial repository here (.hg not found)')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
114 )
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
115 rev1, rev2 = args
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
116 r = repo.changelog
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
117 lookup = repo.lookup
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
118 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
119 raise error.Abort(_(b'either two or three arguments required'))
30401
869d660b8669 debugcommands: introduce standalone module for debug commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
120 a = r.ancestor(lookup(rev1), lookup(rev2))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
121 ui.write(b'%d:%s\n' % (r.rev(a), hex(a)))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
122
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
123
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
124 @command(b'debugapplystreamclonebundle', [], b'FILE')
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
125 def debugapplystreamclonebundle(ui, repo, fname):
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
126 """apply a stream clone bundle file"""
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
127 f = hg.openpath(ui, fname)
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
128 gen = exchange.readbundle(ui, f, fname)
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
129 gen.apply(repo)
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
130
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
131
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
132 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
133 b'debugbuilddag',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
134 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
135 (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
136 b'm',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
137 b'mergeable-file',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
138 None,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
139 _(b'add single file mergeable changes'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
140 ),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
141 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
142 b'o',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
143 b'overwritten-file',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
144 None,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
145 _(b'add single file all revs overwrite'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
146 ),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
147 (b'n', b'new-file', None, _(b'add new file at each rev')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
148 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
149 _(b'[OPTION]... [TEXT]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
150 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
151 def debugbuilddag(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
152 ui,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
153 repo,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
154 text=None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
155 mergeable_file=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
156 overwritten_file=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
157 new_file=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
158 ):
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
159 """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: 30401
diff changeset
160
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
161 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: 30401
diff changeset
162 command line.
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
163
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
164 Elements:
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
165
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
166 - "+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: 30401
diff changeset
167 - "." is a single node based on the current default parent
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
168 - "$" resets the default parent to null (implied at the start);
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
169 otherwise the default parent is always the last node created
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
170 - "<p" sets the default parent to the backref p
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
171 - "*p" is a fork at parent p, which is a backref
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
172 - "*p1/p2" is a merge of parents p1 and p2, which are backrefs
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
173 - "/p2" is a merge of the preceding node and p2
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
174 - ":tag" defines a local tag for the preceding node
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
175 - "@branch" sets the named branch for subsequent nodes
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
176 - "#...\\n" is a comment up to the end of the line
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
177
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
178 Whitespace between the above elements is ignored.
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
179
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
180 A backref is either
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
181
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
182 - 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: 30401
diff changeset
183 node, or
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
184 - the name of a local tag you placed earlier using ":tag", or
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
185 - empty to denote the default parent.
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
186
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
187 All string valued-elements are either strictly alphanumeric, or must
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
188 be enclosed in double quotes ("..."), with "\\" as escape character.
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
189 """
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
190
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
191 if text is None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
192 ui.status(_(b"reading DAG from stdin\n"))
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
193 text = ui.fin.read()
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
194
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
195 cl = repo.changelog
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
196 if len(cl) > 0:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
197 raise error.Abort(_(b'repository is not empty'))
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
198
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
199 # determine number of revs in DAG
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
200 total = 0
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
201 for type, data in dagparser.parsedag(text):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
202 if type == b'n':
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
203 total += 1
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
204
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
205 if mergeable_file:
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
206 linesperrev = 2
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
207 # make a file with k lines per rev
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
208 initialmergedlines = [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
209 b'%d' % i for i in pycompat.xrange(0, total * linesperrev)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
210 ]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
211 initialmergedlines.append(b"")
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
212
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
213 tags = []
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
214 progress = ui.makeprogress(
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
215 _(b'building'), unit=_(b'revisions'), total=total
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
216 )
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
217 with progress, repo.wlock(), repo.lock(), repo.transaction(b"builddag"):
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
218 at = -1
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
219 atbranch = b'default'
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
220 nodeids = []
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
221 id = 0
38375
fce1c17493db debugbuilddag: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents: 38355
diff changeset
222 progress.update(id)
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
223 for type, data in dagparser.parsedag(text):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
224 if type == b'n':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
225 ui.note((b'node %s\n' % pycompat.bytestr(data)))
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
226 id, ps = data
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
227
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
228 files = []
35399
dffc35a5be9f debugbuilddag: create filectx instance in 'filectxfn' callback
Martin von Zweigbergk <martinvonz@google.com>
parents: 35395
diff changeset
229 filecontent = {}
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
230
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
231 p2 = None
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
232 if mergeable_file:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
233 fn = b"mf"
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
234 p1 = repo[ps[0]]
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
235 if len(ps) > 1:
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
236 p2 = repo[ps[1]]
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
237 pa = p1.ancestor(p2)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
238 base, local, other = [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
239 x[fn].data() for x in (pa, p1, p2)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
240 ]
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
241 m3 = simplemerge.Merge3Text(base, local, other)
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
242 ml = [l.strip() for l in m3.merge_lines()]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
243 ml.append(b"")
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
244 elif at > 0:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
245 ml = p1[fn].data().split(b"\n")
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
246 else:
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
247 ml = initialmergedlines
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
248 ml[id * linesperrev] += b" r%i" % id
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
249 mergedtext = b"\n".join(ml)
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
250 files.append(fn)
35399
dffc35a5be9f debugbuilddag: create filectx instance in 'filectxfn' callback
Martin von Zweigbergk <martinvonz@google.com>
parents: 35395
diff changeset
251 filecontent[fn] = mergedtext
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
252
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
253 if overwritten_file:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
254 fn = b"of"
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
255 files.append(fn)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
256 filecontent[fn] = b"r%i\n" % id
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
257
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
258 if new_file:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
259 fn = b"nf%i" % id
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
260 files.append(fn)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
261 filecontent[fn] = b"r%i\n" % id
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
262 if len(ps) > 1:
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
263 if not p2:
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
264 p2 = repo[ps[1]]
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
265 for fn in p2:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
266 if fn.startswith(b"nf"):
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
267 files.append(fn)
35399
dffc35a5be9f debugbuilddag: create filectx instance in 'filectxfn' callback
Martin von Zweigbergk <martinvonz@google.com>
parents: 35395
diff changeset
268 filecontent[fn] = p2[fn].data()
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
269
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
270 def fctxfn(repo, cx, path):
35399
dffc35a5be9f debugbuilddag: create filectx instance in 'filectxfn' callback
Martin von Zweigbergk <martinvonz@google.com>
parents: 35395
diff changeset
271 if path in filecontent:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
272 return context.memfilectx(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
273 repo, cx, path, filecontent[path]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
274 )
35399
dffc35a5be9f debugbuilddag: create filectx instance in 'filectxfn' callback
Martin von Zweigbergk <martinvonz@google.com>
parents: 35395
diff changeset
275 return None
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
276
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
277 if len(ps) == 0 or ps[0] < 0:
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
278 pars = [None, None]
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
279 elif len(ps) == 1:
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
280 pars = [nodeids[ps[0]], None]
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
281 else:
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
282 pars = [nodeids[p] for p in ps]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
283 cx = context.memctx(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
284 repo,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
285 pars,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
286 b"r%i" % id,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
287 files,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
288 fctxfn,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
289 date=(id, 0),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
290 user=b"debugbuilddag",
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
291 extra={b'branch': atbranch},
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
292 )
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
293 nodeid = repo.commitctx(cx)
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
294 nodeids.append(nodeid)
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
295 at = id
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
296 elif type == b'l':
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
297 id, name = data
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
298 ui.note((b'tag %s\n' % name))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
299 tags.append(b"%s %s\n" % (hex(repo.changelog.node(id)), name))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
300 elif type == b'a':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
301 ui.note((b'branch %s\n' % data))
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
302 atbranch = data
38375
fce1c17493db debugbuilddag: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents: 38355
diff changeset
303 progress.update(id)
30402
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
304
945f8229b30d debugcommands: move debugbuilddag
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30401
diff changeset
305 if tags:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
306 repo.vfs.write(b"localtags", b"".join(tags))
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
307
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
308
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
309 def _debugchangegroup(ui, gen, all=None, indent=0, **opts):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
310 indent_string = b' ' * indent
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
311 if all:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
312 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
313 b"%sformat: id, p1, p2, cset, delta base, len(delta)\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
314 % indent_string
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
315 )
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
316
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
317 def showchunks(named):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
318 ui.write(b"\n%s%s\n" % (indent_string, named))
34292
311f6ccf8f23 debug: update debugbundle to use new deltaiter api
Durham Goode <durham@fb.com>
parents: 34130
diff changeset
319 for deltadata in gen.deltaiter():
311f6ccf8f23 debug: update debugbundle to use new deltaiter api
Durham Goode <durham@fb.com>
parents: 34130
diff changeset
320 node, p1, p2, cs, deltabase, delta, flags = deltadata
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
321 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
322 b"%s%s %s %s %s %s %d\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
323 % (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
324 indent_string,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
325 hex(node),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
326 hex(p1),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
327 hex(p2),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
328 hex(cs),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
329 hex(deltabase),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
330 len(delta),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
331 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
332 )
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
333
43972
7a2c49a3cbae debug: drop unused variable assignments
Matt Harbison <matt_harbison@yahoo.com>
parents: 43878
diff changeset
334 gen.changelogheader()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
335 showchunks(b"changelog")
43972
7a2c49a3cbae debug: drop unused variable assignments
Matt Harbison <matt_harbison@yahoo.com>
parents: 43878
diff changeset
336 gen.manifestheader()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
337 showchunks(b"manifest")
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
338 for chunkdata in iter(gen.filelogheader, {}):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
339 fname = chunkdata[b'filename']
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
340 showchunks(fname)
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
341 else:
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
342 if isinstance(gen, bundle2.unbundle20):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
343 raise error.Abort(_(b'use debugbundle2 for this file'))
43972
7a2c49a3cbae debug: drop unused variable assignments
Matt Harbison <matt_harbison@yahoo.com>
parents: 43878
diff changeset
344 gen.changelogheader()
34292
311f6ccf8f23 debug: update debugbundle to use new deltaiter api
Durham Goode <durham@fb.com>
parents: 34130
diff changeset
345 for deltadata in gen.deltaiter():
311f6ccf8f23 debug: update debugbundle to use new deltaiter api
Durham Goode <durham@fb.com>
parents: 34130
diff changeset
346 node, p1, p2, cs, deltabase, delta, flags = deltadata
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
347 ui.write(b"%s%s\n" % (indent_string, hex(node)))
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
348
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
349
33029
b482d80e041b debugcommands: pass part, not read data, into _debugobsmarker()
Martin von Zweigbergk <martinvonz@google.com>
parents: 33028
diff changeset
350 def _debugobsmarkers(ui, part, indent=0, **opts):
32517
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
351 """display version and markers contained in 'data'"""
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
352 opts = pycompat.byteskwargs(opts)
33029
b482d80e041b debugcommands: pass part, not read data, into _debugobsmarker()
Martin von Zweigbergk <martinvonz@google.com>
parents: 33028
diff changeset
353 data = part.read()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
354 indent_string = b' ' * indent
32517
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
355 try:
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
356 version, markers = obsolete._readmarkers(data)
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
357 except error.UnknownVersion as exc:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
358 msg = b"%sunsupported version: %s (%d bytes)\n"
32517
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
359 msg %= indent_string, exc.version, len(data)
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
360 ui.write(msg)
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
361 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
362 msg = b"%sversion: %d (%d bytes)\n"
32517
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
363 msg %= indent_string, version, len(data)
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
364 ui.write(msg)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
365 fm = ui.formatter(b'debugobsolete', opts)
32517
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
366 for rawmarker in sorted(markers):
33148
4e30168d7939 obsutil: move the 'marker' class to the new modules
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33142
diff changeset
367 m = obsutil.marker(None, rawmarker)
32517
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
368 fm.startitem()
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
369 fm.plain(indent_string)
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
370 cmdutil.showmarker(fm, m)
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
371 fm.end()
b62b2b373bce debugbundle: display the content of obsmarkers parts
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32457
diff changeset
372
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
373
33031
e8c8d81eb864 bundle: add config option to include phases
Martin von Zweigbergk <martinvonz@google.com>
parents: 33029
diff changeset
374 def _debugphaseheads(ui, data, indent=0):
e8c8d81eb864 bundle: add config option to include phases
Martin von Zweigbergk <martinvonz@google.com>
parents: 33029
diff changeset
375 """display version and markers contained in 'data'"""
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
376 indent_string = b' ' * indent
34320
12c42bcd4133 phases: move the binary decoding function in the phases module
Boris Feld <boris.feld@octobus.net>
parents: 34292
diff changeset
377 headsbyphase = phases.binarydecode(data)
33031
e8c8d81eb864 bundle: add config option to include phases
Martin von Zweigbergk <martinvonz@google.com>
parents: 33029
diff changeset
378 for phase in phases.allphases:
e8c8d81eb864 bundle: add config option to include phases
Martin von Zweigbergk <martinvonz@google.com>
parents: 33029
diff changeset
379 for head in headsbyphase[phase]:
e8c8d81eb864 bundle: add config option to include phases
Martin von Zweigbergk <martinvonz@google.com>
parents: 33029
diff changeset
380 ui.write(indent_string)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
381 ui.write(b'%s %s\n' % (hex(head), phases.phasenames[phase]))
33031
e8c8d81eb864 bundle: add config option to include phases
Martin von Zweigbergk <martinvonz@google.com>
parents: 33029
diff changeset
382
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
383
34025
626a28f30dbd debugcommands: stabilize output of debugbundle by having a custom repr
Augie Fackler <raf@durin42.com>
parents: 33553
diff changeset
384 def _quasirepr(thing):
626a28f30dbd debugcommands: stabilize output of debugbundle by having a custom repr
Augie Fackler <raf@durin42.com>
parents: 33553
diff changeset
385 if isinstance(thing, (dict, util.sortdict, collections.OrderedDict)):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
386 return b'{%s}' % (
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
387 b', '.join(b'%s: %s' % (k, thing[k]) for k in sorted(thing))
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
388 )
34025
626a28f30dbd debugcommands: stabilize output of debugbundle by having a custom repr
Augie Fackler <raf@durin42.com>
parents: 33553
diff changeset
389 return pycompat.bytestr(repr(thing))
626a28f30dbd debugcommands: stabilize output of debugbundle by having a custom repr
Augie Fackler <raf@durin42.com>
parents: 33553
diff changeset
390
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
391
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
392 def _debugbundle2(ui, gen, all=None, **opts):
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
393 """lists the contents of a bundle2"""
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
394 if not isinstance(gen, bundle2.unbundle20):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
395 raise error.Abort(_(b'not a bundle2 file'))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
396 ui.write((b'Stream params: %s\n' % _quasirepr(gen.params)))
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
397 parttypes = opts.get('part_type', [])
30501
a87e469201f9 debugcommands: move 'debugbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30402
diff changeset
398 for part in gen.iterparts():
32694
3ef319e9505f debugbundle: add --part-type flag to emit only named part types
Danek Duvall <danek.duvall@oracle.com>
parents: 32626
diff changeset
399 if parttypes and part.type not in parttypes:
3ef319e9505f debugbundle: add --part-type flag to emit only named part types
Danek Duvall <danek.duvall@oracle.com>
parents: 32626
diff changeset
400 continue
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
401 msg = b'%s -- %s (mandatory: %r)\n'
37841
d618558e4e8b debugbundle: also display if a part is mandatory or advisory
Boris Feld <boris.feld@octobus.net>
parents: 37823
diff changeset
402 ui.write((msg % (part.type, _quasirepr(part.params), part.mandatory)))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
403 if part.type == b'changegroup':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
404 version = part.params.get(b'version', b'01')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
405 cg = changegroup.getunbundler(version, part, b'UN')
36951
c92d1d3c58ee debugbundle: do not display detailed part data in --quiet mode
Boris Feld <boris.feld@octobus.net>
parents: 36843
diff changeset
406 if not ui.quiet:
c92d1d3c58ee debugbundle: do not display detailed part data in --quiet mode
Boris Feld <boris.feld@octobus.net>
parents: 36843
diff changeset
407 _debugchangegroup(ui, cg, all=all, indent=4, **opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
408 if part.type == b'obsmarkers':
36951
c92d1d3c58ee debugbundle: do not display detailed part data in --quiet mode
Boris Feld <boris.feld@octobus.net>
parents: 36843
diff changeset
409 if not ui.quiet:
c92d1d3c58ee debugbundle: do not display detailed part data in --quiet mode
Boris Feld <boris.feld@octobus.net>
parents: 36843
diff changeset
410 _debugobsmarkers(ui, part, indent=4, **opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
411 if part.type == b'phase-heads':
36951
c92d1d3c58ee debugbundle: do not display detailed part data in --quiet mode
Boris Feld <boris.feld@octobus.net>
parents: 36843
diff changeset
412 if not ui.quiet:
c92d1d3c58ee debugbundle: do not display detailed part data in --quiet mode
Boris Feld <boris.feld@octobus.net>
parents: 36843
diff changeset
413 _debugphaseheads(ui, part, indent=4)
30502
6da030496667 debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30501
diff changeset
414
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
415
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
416 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
417 b'debugbundle',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
418 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
419 (b'a', b'all', None, _(b'show all details')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
420 (b'', b'part-type', [], _(b'show only the named part type')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
421 (b'', b'spec', None, _(b'print the bundlespec of the bundle')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
422 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
423 _(b'FILE'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
424 norepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
425 )
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
426 def debugbundle(ui, bundlepath, all=None, spec=None, **opts):
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
427 """lists the contents of a bundle"""
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
428 with hg.openpath(ui, bundlepath) as f:
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
429 if spec:
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
430 spec = exchange.getbundlespec(ui, f)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
431 ui.write(b'%s\n' % spec)
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
432 return
30502
6da030496667 debugcommands: move debug{create,apply}streambundleclone to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30501
diff changeset
433
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
434 gen = exchange.readbundle(ui, f, bundlepath)
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
435 if isinstance(gen, bundle2.unbundle20):
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
436 return _debugbundle2(ui, gen, all=all, **opts)
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
437 _debugchangegroup(ui, gen, all=all, **opts)
30503
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
438
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
439
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
440 @command(b'debugcapabilities', [], _(b'PATH'), norepo=True)
34959
7ee2d859f720 debug: add a debugcapabilities commands
Boris Feld <boris.feld@octobus.net>
parents: 34645
diff changeset
441 def debugcapabilities(ui, path, **opts):
7ee2d859f720 debug: add a debugcapabilities commands
Boris Feld <boris.feld@octobus.net>
parents: 34645
diff changeset
442 """lists the capabilities of a remote peer"""
35401
cd3392cb5818 py3: handle keyword arguments correctly in debugcommands.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35400
diff changeset
443 opts = pycompat.byteskwargs(opts)
34959
7ee2d859f720 debug: add a debugcapabilities commands
Boris Feld <boris.feld@octobus.net>
parents: 34645
diff changeset
444 peer = hg.peer(ui, opts, path)
7ee2d859f720 debug: add a debugcapabilities commands
Boris Feld <boris.feld@octobus.net>
parents: 34645
diff changeset
445 caps = peer.capabilities()
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
446 ui.writenoi18n(b'Main capabilities:\n')
34959
7ee2d859f720 debug: add a debugcapabilities commands
Boris Feld <boris.feld@octobus.net>
parents: 34645
diff changeset
447 for c in sorted(caps):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
448 ui.write(b' %s\n' % c)
34960
762ea8a1f5e7 debug: print parsed bundle2 capabilities with debugcapabilities
Boris Feld <boris.feld@octobus.net>
parents: 34959
diff changeset
449 b2caps = bundle2.bundle2caps(peer)
762ea8a1f5e7 debug: print parsed bundle2 capabilities with debugcapabilities
Boris Feld <boris.feld@octobus.net>
parents: 34959
diff changeset
450 if b2caps:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
451 ui.writenoi18n(b'Bundle2 capabilities:\n')
43106
d783f945a701 py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43094
diff changeset
452 for key, values in sorted(pycompat.iteritems(b2caps)):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
453 ui.write(b' %s\n' % key)
34960
762ea8a1f5e7 debug: print parsed bundle2 capabilities with debugcapabilities
Boris Feld <boris.feld@octobus.net>
parents: 34959
diff changeset
454 for v in values:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
455 ui.write(b' %s\n' % v)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
456
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
457
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
458 @command(b'debugcheckstate', [], b'')
30503
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
459 def debugcheckstate(ui, repo):
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
460 """validate the correctness of the current dirstate"""
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
461 parent1, parent2 = repo.dirstate.parents()
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
462 m1 = repo[parent1].manifest()
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
463 m2 = repo[parent2].manifest()
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
464 errors = 0
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
465 for f in repo.dirstate:
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
466 state = repo.dirstate[f]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
467 if state in b"nr" and f not in m1:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
468 ui.warn(_(b"%s in state %s, but not in manifest1\n") % (f, state))
30503
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
469 errors += 1
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
470 if state in b"a" and f in m1:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
471 ui.warn(_(b"%s in state %s, but also in manifest1\n") % (f, state))
30503
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
472 errors += 1
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
473 if state in b"m" and f not in m1 and f not in m2:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
474 ui.warn(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
475 _(b"%s in state %s, but not in either manifest\n") % (f, state)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
476 )
30503
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
477 errors += 1
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
478 for f in m1:
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
479 state = repo.dirstate[f]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
480 if state not in b"nrm":
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
481 ui.warn(_(b"%s in manifest1, but listed as state %s") % (f, state))
30503
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
482 errors += 1
6bfb333a6f2f debugcommands: move 'debugcheckstate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30502
diff changeset
483 if errors:
43635
72b454fae92e debugcommands: don't shadow the error module
Augie Fackler <augie@google.com>
parents: 43633
diff changeset
484 errstr = _(b".hg/dirstate inconsistent with current parent's manifest")
72b454fae92e debugcommands: don't shadow the error module
Augie Fackler <augie@google.com>
parents: 43633
diff changeset
485 raise error.Abort(errstr)
30504
c3bdc27121d1 debugcommands: move 'debugcommands' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30503
diff changeset
486
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
487
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
488 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
489 b'debugcolor',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
490 [(b'', b'style', None, _(b'show all configured styles'))],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
491 b'hg debugcolor',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
492 )
31120
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
493 def debugcolor(ui, repo, **opts):
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
494 """show available color, effects or style"""
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
495 ui.writenoi18n(b'color mode: %s\n' % stringutil.pprint(ui._colormode))
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
496 if opts.get('style'):
31120
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
497 return _debugdisplaystyle(ui)
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
498 else:
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
499 return _debugdisplaycolor(ui)
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
500
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
501
31120
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
502 def _debugdisplaycolor(ui):
31121
8fc55bbd2235 color: cleanup 'debugcolor' logic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31120
diff changeset
503 ui = ui.copy()
8fc55bbd2235 color: cleanup 'debugcolor' logic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31120
diff changeset
504 ui._styles.clear()
31689
57a22f699179 color: stop mutating the default effects map
Matt Harbison <matt_harbison@yahoo.com>
parents: 31634
diff changeset
505 for effect in color._activeeffects(ui).keys():
31121
8fc55bbd2235 color: cleanup 'debugcolor' logic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31120
diff changeset
506 ui._styles[effect] = effect
8fc55bbd2235 color: cleanup 'debugcolor' logic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31120
diff changeset
507 if ui._terminfoparams:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
508 for k, v in ui.configitems(b'color'):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
509 if k.startswith(b'color.'):
31121
8fc55bbd2235 color: cleanup 'debugcolor' logic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31120
diff changeset
510 ui._styles[k] = k[6:]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
511 elif k.startswith(b'terminfo.'):
31121
8fc55bbd2235 color: cleanup 'debugcolor' logic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31120
diff changeset
512 ui._styles[k] = k[9:]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
513 ui.write(_(b'available colors:\n'))
31121
8fc55bbd2235 color: cleanup 'debugcolor' logic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31120
diff changeset
514 # sort label with a '_' after the other to group '_background' entry.
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
515 items = sorted(ui._styles.items(), key=lambda i: (b'_' in i[0], i[0], i[1]))
31121
8fc55bbd2235 color: cleanup 'debugcolor' logic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31120
diff changeset
516 for colorname, label in items:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
517 ui.write(b'%s\n' % colorname, label=label)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
518
31120
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
519
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
520 def _debugdisplaystyle(ui):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
521 ui.write(_(b'available style:\n'))
37823
0e9ddab2bac2 debugcolor: fix crash by empty styles (issue5856)
Yuya Nishihara <yuya@tcha.org>
parents: 37722
diff changeset
522 if not ui._styles:
0e9ddab2bac2 debugcolor: fix crash by empty styles (issue5856)
Yuya Nishihara <yuya@tcha.org>
parents: 37722
diff changeset
523 return
31120
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
524 width = max(len(s) for s in ui._styles)
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
525 for label, effects in sorted(ui._styles.items()):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
526 ui.write(b'%s' % label, label=label)
31120
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
527 if effects:
c4e8fa2b1c40 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31074
diff changeset
528 # 50
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
529 ui.write(b': ')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
530 ui.write(b' ' * (max(0, width - len(label))))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
531 ui.write(b', '.join(ui.label(e, e) for e in effects.split()))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
532 ui.write(b'\n')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
533
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
534
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
535 @command(b'debugcreatestreamclonebundle', [], b'FILE')
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
536 def debugcreatestreamclonebundle(ui, repo, fname):
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
537 """create a stream clone bundle file
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
538
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
539 Stream bundles are special bundles that are essentially archives of
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
540 revlog files. They are commonly used for cloning very quickly.
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
541 """
32745
23734c0e361f debugcommands: issue warning when repo has secret changesets (issue5589)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32694
diff changeset
542 # TODO we may want to turn this into an abort when this functionality
23734c0e361f debugcommands: issue warning when repo has secret changesets (issue5589)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32694
diff changeset
543 # is moved into `hg bundle`.
23734c0e361f debugcommands: issue warning when repo has secret changesets (issue5589)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32694
diff changeset
544 if phases.hassecret(repo):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
545 ui.warn(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
546 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
547 b'(warning: stream clone bundle will contain secret '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
548 b'revisions)\n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
549 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
550 )
32745
23734c0e361f debugcommands: issue warning when repo has secret changesets (issue5589)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32694
diff changeset
551
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
552 requirements, gen = streamclone.generatebundlev1(repo)
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
553 changegroup.writechunks(ui, gen, fname)
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
554
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
555 ui.write(_(b'bundle requirements: %s\n') % b', '.join(sorted(requirements)))
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
556
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
557
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
558 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
559 b'debugdag',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
560 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
561 (b't', b'tags', None, _(b'use tags as labels')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
562 (b'b', b'branches', None, _(b'annotate with branch names')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
563 (b'', b'dots', None, _(b'use dots for runs')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
564 (b's', b'spaces', None, _(b'separate elements by spaces')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
565 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
566 _(b'[OPTION]... [FILE [REV]...]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
567 optionalrepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
568 )
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
569 def debugdag(ui, repo, file_=None, *revs, **opts):
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
570 """format the changelog or an index DAG as a concise textual description
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
571
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
572 If you pass a revlog index, the revlog's DAG is emitted. If you list
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
573 revision numbers, they get labeled in the output as rN.
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
574
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
575 Otherwise, the changelog DAG of the current repo is emitted.
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
576 """
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
577 spaces = opts.get('spaces')
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
578 dots = opts.get('dots')
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
579 if file_:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
580 rlog = revlog.revlog(vfsmod.vfs(encoding.getcwd(), audit=False), file_)
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
581 revs = set((int(r) for r in revs))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
582
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
583 def events():
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
584 for r in rlog:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
585 yield b'n', (r, list(p for p in rlog.parentrevs(r) if p != -1))
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
586 if r in revs:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
587 yield b'l', (r, b"r%i" % r)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
588
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
589 elif repo:
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
590 cl = repo.changelog
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
591 tags = opts.get('tags')
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
592 branches = opts.get('branches')
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
593 if tags:
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
594 labels = {}
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
595 for l, n in repo.tags().items():
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
596 labels.setdefault(cl.rev(n), []).append(l)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
597
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
598 def events():
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
599 b = b"default"
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
600 for r in cl:
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
601 if branches:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
602 newb = cl.read(cl.node(r))[5][b'branch']
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
603 if newb != b:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
604 yield b'a', newb
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
605 b = newb
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
606 yield b'n', (r, list(p for p in cl.parentrevs(r) if p != -1))
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
607 if tags:
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
608 ls = labels.get(r)
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
609 if ls:
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
610 for l in ls:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
611 yield b'l', (r, l)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
612
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
613 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
614 raise error.Abort(_(b'need repo for changelog dag'))
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
615
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
616 for line in dagparser.dagtextlines(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
617 events(),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
618 addspaces=spaces,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
619 wraplabels=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
620 wrapannotations=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
621 wrapnonlinear=dots,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
622 usedots=dots,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
623 maxlinewidth=70,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
624 ):
30514
625ccc95fa96 debugcommands: move 'debugdag' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30505
diff changeset
625 ui.write(line)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
626 ui.write(b"\n")
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
627
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
628
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
629 @command(b'debugdata', cmdutil.debugrevlogopts, _(b'-c|-m|FILE REV'))
30515
cdd1885d0f2f debugcommands: move 'debugrevlogopts' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30514
diff changeset
630 def debugdata(ui, repo, file_, rev=None, **opts):
cdd1885d0f2f debugcommands: move 'debugrevlogopts' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30514
diff changeset
631 """dump the contents of a data file revision"""
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
632 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
633 if opts.get(b'changelog') or opts.get(b'manifest') or opts.get(b'dir'):
30515
cdd1885d0f2f debugcommands: move 'debugrevlogopts' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30514
diff changeset
634 if rev is not None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
635 raise error.CommandError(b'debugdata', _(b'invalid arguments'))
30515
cdd1885d0f2f debugcommands: move 'debugrevlogopts' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30514
diff changeset
636 file_, rev = None, file_
cdd1885d0f2f debugcommands: move 'debugrevlogopts' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30514
diff changeset
637 elif rev is None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
638 raise error.CommandError(b'debugdata', _(b'invalid arguments'))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
639 r = cmdutil.openstorage(repo, b'debugdata', file_, opts)
30515
cdd1885d0f2f debugcommands: move 'debugrevlogopts' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30514
diff changeset
640 try:
42773
127d57e950e0 rawdata: update callers in debugcommands
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42651
diff changeset
641 ui.write(r.rawdata(r.lookup(rev)))
30515
cdd1885d0f2f debugcommands: move 'debugrevlogopts' into the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30514
diff changeset
642 except KeyError:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
643 raise error.Abort(_(b'invalid revision identifier %s') % rev)
30516
ef1353c283e3 debugcommands: move 'debugdate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30515
diff changeset
644
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
645
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
646 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
647 b'debugdate',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
648 [(b'e', b'extended', None, _(b'try extended date formats'))],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
649 _(b'[-e] DATE [RANGE]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
650 norepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
651 optionalrepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
652 )
30516
ef1353c283e3 debugcommands: move 'debugdate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30515
diff changeset
653 def debugdate(ui, date, range=None, **opts):
ef1353c283e3 debugcommands: move 'debugdate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30515
diff changeset
654 """parse and display a date"""
43503
313e3a279828 cleanup: remove pointless r-prefixes on double-quoted strings
Augie Fackler <augie@google.com>
parents: 43238
diff changeset
655 if opts["extended"]:
43878
38d6aa768310 debugcommands: finish moving `extendeddateformats` from util to dateutil
Matt Harbison <matt_harbison@yahoo.com>
parents: 43704
diff changeset
656 d = dateutil.parsedate(date, dateutil.extendeddateformats)
30516
ef1353c283e3 debugcommands: move 'debugdate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30515
diff changeset
657 else:
36607
c6061cadb400 util: extract all date-related utils in utils/dateutil module
Boris Feld <boris.feld@octobus.net>
parents: 36587
diff changeset
658 d = dateutil.parsedate(date)
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
659 ui.writenoi18n(b"internal: %d %d\n" % d)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
660 ui.writenoi18n(b"standard: %s\n" % dateutil.datestr(d))
30516
ef1353c283e3 debugcommands: move 'debugdate' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30515
diff changeset
661 if range:
36607
c6061cadb400 util: extract all date-related utils in utils/dateutil module
Boris Feld <boris.feld@octobus.net>
parents: 36587
diff changeset
662 m = dateutil.matchdate(range)
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
663 ui.writenoi18n(b"match: %s\n" % m(d[0]))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
664
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
665
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
666 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
667 b'debugdeltachain',
32375
04baab18d60a commands: move templates of common command options to cmdutil (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32371
diff changeset
668 cmdutil.debugrevlogopts + cmdutil.formatteropts,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
669 _(b'-c|-m|FILE'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
670 optionalrepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
671 )
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
672 def debugdeltachain(ui, repo, file_=None, **opts):
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
673 """dump information about delta chains in a revlog
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
674
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
675 Output can be templatized. Available template keywords are:
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
676
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
677 :``rev``: revision number
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
678 :``chainid``: delta chain identifier (numbered by unique base)
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
679 :``chainlen``: delta chain length to this revision
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
680 :``prevrev``: previous revision in delta chain
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
681 :``deltatype``: role of delta / how it was computed
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
682 :``compsize``: compressed size of revision
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
683 :``uncompsize``: uncompressed size of revision
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
684 :``chainsize``: total size of compressed revisions in chain
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
685 :``chainratio``: total chain size divided by uncompressed revision size
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
686 (new delta chains typically start at ratio 2.00)
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
687 :``lindist``: linear distance from base revision in delta chain to end
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
688 of this revision
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
689 :``extradist``: total size of revisions not part of this delta chain from
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
690 base of delta chain to end of this revision; a measurement
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
691 of how much extra data we need to read/seek across to read
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
692 the delta chain for this revision
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
693 :``extraratio``: extradist divided by chainsize; another representation of
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
694 how much unrelated data is needed to load this delta chain
35059
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
695
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
696 If the repository is configured to use the sparse read, additional keywords
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
697 are available:
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
698
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
699 :``readsize``: total size of data read from the disk for a revision
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
700 (sum of the sizes of all the blocks)
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
701 :``largestblock``: size of the largest block of data read from the disk
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
702 :``readdensity``: density of useful bytes in the data read from the disk
35678
43154a76f392 debugdeltachain: display how many chunks would be read in sparse-read mode
Paul Morelle <paul.morelle@octobus.net>
parents: 35585
diff changeset
703 :``srchunks``: in how many data hunks the whole revision would be read
35059
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
704
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
705 The sparse read can be enabled with experimental.sparse-read = True
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
706 """
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
707 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
708 r = cmdutil.openrevlog(repo, b'debugdeltachain', file_, opts)
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
709 index = r.index
38115
b17fa9041695 debugdeltachain: r.start and r.length can be retrieved outside the loop
Paul Morelle <paul.morelle@octobus.net>
parents: 37977
diff changeset
710 start = r.start
b17fa9041695 debugdeltachain: r.start and r.length can be retrieved outside the loop
Paul Morelle <paul.morelle@octobus.net>
parents: 37977
diff changeset
711 length = r.length
32315
67026d65a4fc revlog: rename constants (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32265
diff changeset
712 generaldelta = r.version & revlog.FLAG_GENERALDELTA
35059
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
713 withsparseread = getattr(r, '_withsparseread', False)
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
714
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
715 def revinfo(rev):
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
716 e = index[rev]
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
717 compsize = e[1]
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
718 uncompsize = e[2]
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
719 chainsize = 0
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
720
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
721 if generaldelta:
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
722 if e[3] == e[5]:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
723 deltatype = b'p1'
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
724 elif e[3] == e[6]:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
725 deltatype = b'p2'
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
726 elif e[3] == rev - 1:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
727 deltatype = b'prev'
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
728 elif e[3] == rev:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
729 deltatype = b'base'
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
730 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
731 deltatype = b'other'
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
732 else:
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
733 if e[3] == rev:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
734 deltatype = b'base'
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
735 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
736 deltatype = b'prev'
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
737
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
738 chain = r._deltachain(rev)[0]
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
739 for iterrev in chain:
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
740 e = index[iterrev]
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
741 chainsize += e[1]
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
742
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
743 return compsize, uncompsize, deltatype, chain, chainsize
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
744
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
745 fm = ui.formatter(b'debugdeltachain', opts)
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
746
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
747 fm.plain(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
748 b' rev chain# chainlen prev delta '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
749 b'size rawsize chainsize ratio lindist extradist '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
750 b'extraratio'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
751 )
35059
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
752 if withsparseread:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
753 fm.plain(b' readsize largestblk rddensity srchunks')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
754 fm.plain(b'\n')
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
755
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
756 chainbases = {}
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
757 for rev in r:
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
758 comp, uncomp, deltatype, chain, chainsize = revinfo(rev)
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
759 chainbase = chain[0]
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
760 chainid = chainbases.setdefault(chainbase, len(chainbases) + 1)
35059
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
761 basestart = start(chainbase)
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
762 revstart = start(rev)
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
763 lineardist = revstart + comp - basestart
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
764 extradist = lineardist - chainsize
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
765 try:
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
766 prevrev = chain[-2]
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
767 except IndexError:
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
768 prevrev = -1
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
769
38646
93313f66b69b debugdeltachain: avoid division by zero when a chain is empty
Paul Morelle <paul.morelle@octobus.net>
parents: 38612
diff changeset
770 if uncomp != 0:
93313f66b69b debugdeltachain: avoid division by zero when a chain is empty
Paul Morelle <paul.morelle@octobus.net>
parents: 38612
diff changeset
771 chainratio = float(chainsize) / float(uncomp)
93313f66b69b debugdeltachain: avoid division by zero when a chain is empty
Paul Morelle <paul.morelle@octobus.net>
parents: 38612
diff changeset
772 else:
93313f66b69b debugdeltachain: avoid division by zero when a chain is empty
Paul Morelle <paul.morelle@octobus.net>
parents: 38612
diff changeset
773 chainratio = chainsize
93313f66b69b debugdeltachain: avoid division by zero when a chain is empty
Paul Morelle <paul.morelle@octobus.net>
parents: 38612
diff changeset
774
93313f66b69b debugdeltachain: avoid division by zero when a chain is empty
Paul Morelle <paul.morelle@octobus.net>
parents: 38612
diff changeset
775 if chainsize != 0:
93313f66b69b debugdeltachain: avoid division by zero when a chain is empty
Paul Morelle <paul.morelle@octobus.net>
parents: 38612
diff changeset
776 extraratio = float(extradist) / float(chainsize)
93313f66b69b debugdeltachain: avoid division by zero when a chain is empty
Paul Morelle <paul.morelle@octobus.net>
parents: 38612
diff changeset
777 else:
93313f66b69b debugdeltachain: avoid division by zero when a chain is empty
Paul Morelle <paul.morelle@octobus.net>
parents: 38612
diff changeset
778 extraratio = extradist
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
779
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
780 fm.startitem()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
781 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
782 b'rev chainid chainlen prevrev deltatype compsize '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
783 b'uncompsize chainsize chainratio lindist extradist '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
784 b'extraratio',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
785 b'%7d %7d %8d %8d %7s %10d %10d %10d %9.5f %9d %9d %10.5f',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
786 rev,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
787 chainid,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
788 len(chain),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
789 prevrev,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
790 deltatype,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
791 comp,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
792 uncomp,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
793 chainsize,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
794 chainratio,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
795 lineardist,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
796 extradist,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
797 extraratio,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
798 rev=rev,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
799 chainid=chainid,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
800 chainlen=len(chain),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
801 prevrev=prevrev,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
802 deltatype=deltatype,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
803 compsize=comp,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
804 uncompsize=uncomp,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
805 chainsize=chainsize,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
806 chainratio=chainratio,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
807 lindist=lineardist,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
808 extradist=extradist,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
809 extraratio=extraratio,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
810 )
35059
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
811 if withsparseread:
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
812 readsize = 0
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
813 largestblock = 0
35728
22a877215ea1 debugdeltachain: cleanup the double call to _slicechunk
Paul Morelle <paul.morelle@octobus.net>
parents: 35678
diff changeset
814 srchunks = 0
22a877215ea1 debugdeltachain: cleanup the double call to _slicechunk
Paul Morelle <paul.morelle@octobus.net>
parents: 35678
diff changeset
815
39330
655b5b465953 revlog: split functionality related to deltas computation in a new module
Boris Feld <boris.feld@octobus.net>
parents: 39282
diff changeset
816 for revschunk in deltautil.slicechunk(r, chain):
35728
22a877215ea1 debugdeltachain: cleanup the double call to _slicechunk
Paul Morelle <paul.morelle@octobus.net>
parents: 35678
diff changeset
817 srchunks += 1
35059
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
818 blkend = start(revschunk[-1]) + length(revschunk[-1])
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
819 blksize = blkend - start(revschunk[0])
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
820
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
821 readsize += blksize
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
822 if largestblock < blksize:
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
823 largestblock = blksize
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
824
38647
0f4c2c70e26e debugdeltachain: protect against 0 readsize
Boris Feld <boris.feld@octobus.net>
parents: 38646
diff changeset
825 if readsize:
0f4c2c70e26e debugdeltachain: protect against 0 readsize
Boris Feld <boris.feld@octobus.net>
parents: 38646
diff changeset
826 readdensity = float(chainsize) / float(readsize)
0f4c2c70e26e debugdeltachain: protect against 0 readsize
Boris Feld <boris.feld@octobus.net>
parents: 38646
diff changeset
827 else:
0f4c2c70e26e debugdeltachain: protect against 0 readsize
Boris Feld <boris.feld@octobus.net>
parents: 38646
diff changeset
828 readdensity = 1
35059
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
829
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
830 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
831 b'readsize largestblock readdensity srchunks',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
832 b' %10d %10d %9.5f %8d',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
833 readsize,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
834 largestblock,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
835 readdensity,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
836 srchunks,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
837 readsize=readsize,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
838 largestblock=largestblock,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
839 readdensity=readdensity,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
840 srchunks=srchunks,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
841 )
35059
5cbbef8d2a57 debugdeltachain: output information about sparse read if enabled
Paul Morelle <paul.morelle@octobus.net>
parents: 34960
diff changeset
842
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
843 fm.plain(b'\n')
30541
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
844
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
845 fm.end()
342d0cb4f446 debugcommands: sort command order
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30529
diff changeset
846
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
847
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
848 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
849 b'debugdirstate|debugstate',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
850 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
851 (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
852 b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
853 b'nodates',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
854 None,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
855 _(b'do not display the saved mtime (DEPRECATED)'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
856 ),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
857 (b'', b'dates', True, _(b'display the saved mtime')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
858 (b'', b'datesort', None, _(b'sort by saved mtime')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
859 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
860 _(b'[OPTION]...'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
861 )
30954
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
862 def debugstate(ui, repo, **opts):
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
863 """show the contents of the current dirstate"""
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
864
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
865 nodates = not opts['dates']
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
866 if opts.get('nodates') is not None:
39760
7e99b02768ef debugdirstate: deprecate --nodates in favor of --no-dates
Martin von Zweigbergk <martinvonz@google.com>
parents: 39561
diff changeset
867 nodates = True
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
868 datesort = opts.get('datesort')
30954
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
869
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
870 if datesort:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
871 keyfunc = lambda x: (x[1][3], x[0]) # sort by mtime, then by filename
30954
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
872 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
873 keyfunc = None # sort by filename
43106
d783f945a701 py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43094
diff changeset
874 for file_, ent in sorted(pycompat.iteritems(repo.dirstate), key=keyfunc):
30954
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
875 if ent[3] == -1:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
876 timestr = b'unset '
30954
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
877 elif nodates:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
878 timestr = b'set '
30954
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
879 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
880 timestr = time.strftime(
43503
313e3a279828 cleanup: remove pointless r-prefixes on double-quoted strings
Augie Fackler <augie@google.com>
parents: 43238
diff changeset
881 "%Y-%m-%d %H:%M:%S ", time.localtime(ent[3])
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
882 )
35204
d4b108fdf423 py3: use encoding.strtolocal() to convert string to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35151
diff changeset
883 timestr = encoding.strtolocal(timestr)
30954
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
884 if ent[1] & 0o20000:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
885 mode = b'lnk'
30954
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
886 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
887 mode = b'%3o' % (ent[1] & 0o777 & ~util.umask)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
888 ui.write(b"%c %s %10d %s%s\n" % (ent[0], mode, ent[2], timestr, file_))
30954
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
889 for f in repo.dirstate.copies():
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
890 ui.write(_(b"copy: %s -> %s\n") % (repo.dirstate.copied(f), f))
30954
dad968920130 debugcommands: move 'debugstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30953
diff changeset
891
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
892
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
893 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
894 b'debugdiscovery',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
895 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
896 (b'', b'old', None, _(b'use old-style discovery')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
897 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
898 b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
899 b'nonheads',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
900 None,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
901 _(b'use old-style discovery with non-heads included'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
902 ),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
903 (b'', b'rev', [], b'restrict discovery to this set of revs'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
904 (b'', b'seed', b'12323', b'specify the random seed use for discovery'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
905 ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
906 + cmdutil.remoteopts,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
907 _(b'[--rev REV] [OTHER]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
908 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
909 def debugdiscovery(ui, repo, remoteurl=b"default", **opts):
30517
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
910 """runs the changeset discovery protocol in isolation"""
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
911 opts = pycompat.byteskwargs(opts)
35417
2105bdd9462a debugdiscovery: drop reference to invalid --branch option
Martin von Zweigbergk <martinvonz@google.com>
parents: 35401
diff changeset
912 remoteurl, branches = hg.parseurl(ui.expandpath(remoteurl))
30517
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
913 remote = hg.peer(repo, opts, remoteurl)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
914 ui.status(_(b'comparing with %s\n') % util.hidepassword(remoteurl))
30517
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
915
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
916 # make sure tests are repeatable
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
917 random.seed(int(opts[b'seed']))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
918
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
919 if opts.get(b'old'):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
920
42031
d31d8c5279c6 debugdiscovery: small internal refactoring
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42030
diff changeset
921 def doit(pushedrevs, remoteheads, remote=remote):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
922 if not util.safehasattr(remote, b'branches'):
30517
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
923 # enable in-client legacy support
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
924 remote = localrepo.locallegacypeer(remote.local())
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
925 common, _in, hds = treediscovery.findcommonincoming(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
926 repo, remote, force=True
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
927 )
30517
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
928 common = set(common)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
929 if not opts.get(b'nonheads'):
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
930 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
931 b"unpruned common: %s\n"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
932 % b" ".join(sorted(short(n) for n in common))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
933 )
39163
26f3d075f36e debugcommands: use a revset instead of dagutil
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39161
diff changeset
934
26f3d075f36e debugcommands: use a revset instead of dagutil
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39161
diff changeset
935 clnode = repo.changelog.node
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
936 common = repo.revs(b'heads(::%ln)', common)
39163
26f3d075f36e debugcommands: use a revset instead of dagutil
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39161
diff changeset
937 common = {clnode(r) for r in common}
42031
d31d8c5279c6 debugdiscovery: small internal refactoring
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42030
diff changeset
938 return common, hds
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
939
42031
d31d8c5279c6 debugdiscovery: small internal refactoring
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42030
diff changeset
940 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
941
42031
d31d8c5279c6 debugdiscovery: small internal refactoring
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42030
diff changeset
942 def doit(pushedrevs, remoteheads, remote=remote):
35304
f77121b6bf1b setdiscover: allow to ignore part of the local graph
Boris Feld <boris.feld@octobus.net>
parents: 35204
diff changeset
943 nodes = None
f77121b6bf1b setdiscover: allow to ignore part of the local graph
Boris Feld <boris.feld@octobus.net>
parents: 35204
diff changeset
944 if pushedrevs:
f77121b6bf1b setdiscover: allow to ignore part of the local graph
Boris Feld <boris.feld@octobus.net>
parents: 35204
diff changeset
945 revs = scmutil.revrange(repo, pushedrevs)
f77121b6bf1b setdiscover: allow to ignore part of the local graph
Boris Feld <boris.feld@octobus.net>
parents: 35204
diff changeset
946 nodes = [repo[r].node() for r in revs]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
947 common, any, hds = setdiscovery.findcommonheads(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
948 ui, repo, remote, ancestorsof=nodes
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
949 )
42031
d31d8c5279c6 debugdiscovery: small internal refactoring
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42030
diff changeset
950 return common, hds
30517
a3ec6db36315 debugcommands: move 'debugdiscovery' in the module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30516
diff changeset
951
35419
fed2c040764e debugdiscovery: drop reference to non-existent --remote-head option
Martin von Zweigbergk <martinvonz@google.com>
parents: 35418
diff changeset
952 remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches, revs=None)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
953 localrevs = opts[b'rev']
43238
101ae8bbfa02 cleanup: hgdemandimport.tracing accepts strings, not bytes
Augie Fackler <augie@google.com>
parents: 43136
diff changeset
954 with util.timedcm('debug-discovery') as t:
42035
eec20025ada3 debugdiscovery: display time elapsed during the discovery step
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42034
diff changeset
955 common, hds = doit(localrevs, remoterevs)
42031
d31d8c5279c6 debugdiscovery: small internal refactoring
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42030
diff changeset
956
42032
63165e4a76da debugdiscovery: display more statistic about the common set
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42031
diff changeset
957 # compute all statistics
42031
d31d8c5279c6 debugdiscovery: small internal refactoring
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42030
diff changeset
958 common = set(common)
d31d8c5279c6 debugdiscovery: small internal refactoring
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42030
diff changeset
959 rheads = set(hds)
d31d8c5279c6 debugdiscovery: small internal refactoring
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42030
diff changeset
960 lheads = set(repo.heads())
42032
63165e4a76da debugdiscovery: display more statistic about the common set
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42031
diff changeset
961
63165e4a76da debugdiscovery: display more statistic about the common set
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42031
diff changeset
962 data = {}
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
963 data[b'elapsed'] = t.elapsed
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
964 data[b'nb-common'] = len(common)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
965 data[b'nb-common-local'] = len(common & lheads)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
966 data[b'nb-common-remote'] = len(common & rheads)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
967 data[b'nb-common-both'] = len(common & rheads & lheads)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
968 data[b'nb-local'] = len(lheads)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
969 data[b'nb-local-missing'] = data[b'nb-local'] - data[b'nb-common-local']
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
970 data[b'nb-remote'] = len(rheads)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
971 data[b'nb-remote-unknown'] = data[b'nb-remote'] - data[b'nb-common-remote']
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
972 data[b'nb-revs'] = len(repo.revs(b'all()'))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
973 data[b'nb-revs-common'] = len(repo.revs(b'::%ln', common))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
974 data[b'nb-revs-missing'] = data[b'nb-revs'] - data[b'nb-revs-common']
42032
63165e4a76da debugdiscovery: display more statistic about the common set
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42031
diff changeset
975
63165e4a76da debugdiscovery: display more statistic about the common set
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42031
diff changeset
976 # display discovery summary
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
977 ui.writenoi18n(b"elapsed time: %(elapsed)f seconds\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
978 ui.writenoi18n(b"heads summary:\n")
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
979 ui.writenoi18n(b" total common heads: %(nb-common)9d\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
980 ui.writenoi18n(b" also local heads: %(nb-common-local)9d\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
981 ui.writenoi18n(b" also remote heads: %(nb-common-remote)9d\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
982 ui.writenoi18n(b" both: %(nb-common-both)9d\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
983 ui.writenoi18n(b" local heads: %(nb-local)9d\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
984 ui.writenoi18n(b" common: %(nb-common-local)9d\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
985 ui.writenoi18n(b" missing: %(nb-local-missing)9d\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
986 ui.writenoi18n(b" remote heads: %(nb-remote)9d\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
987 ui.writenoi18n(b" common: %(nb-common-remote)9d\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
988 ui.writenoi18n(b" unknown: %(nb-remote-unknown)9d\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
989 ui.writenoi18n(b"local changesets: %(nb-revs)9d\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
990 ui.writenoi18n(b" common: %(nb-revs-common)9d\n" % data)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
991 ui.writenoi18n(b" missing: %(nb-revs-missing)9d\n" % data)
42032
63165e4a76da debugdiscovery: display more statistic about the common set
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42031
diff changeset
992
42034
fd8d13ea1bcc debugdiscovery: only list common heads on verbose
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42033
diff changeset
993 if ui.verbose:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
994 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
995 b"common heads: %s\n" % b" ".join(sorted(short(n) for n in common))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
996 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
997
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
998
35562
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
999 _chunksize = 4 << 10
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1000
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1001
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1002 @command(
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1003 b'debugdownload', [(b'o', b'output', b'', _(b'path')),], optionalrepo=True
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1004 )
35730
05d415790761 debugdownload: read repository hgrc if there is one
Boris Feld <boris.feld@octobus.net>
parents: 35728
diff changeset
1005 def debugdownload(ui, repo, url, output=None, **opts):
35562
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1006 """download a resource using Mercurial logic and config
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1007 """
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1008 fh = urlmod.open(ui, url, output)
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1009
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1010 dest = ui
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1011 if output:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1012 dest = open(output, b"wb", _chunksize)
35562
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1013 try:
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1014 data = fh.read(_chunksize)
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1015 while data:
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1016 dest.write(data)
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1017 data = fh.read(_chunksize)
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1018 finally:
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1019 if output:
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1020 dest.close()
6580cf751418 debug: add a 'debugdownload' command
Boris Feld <boris.feld@octobus.net>
parents: 35514
diff changeset
1021
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1022
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1023 @command(b'debugextensions', cmdutil.formatteropts, [], optionalrepo=True)
37977
8ba0344f9fb1 debugextensions: process extensions loaded from the local repository too
Matt Harbison <matt_harbison@yahoo.com>
parents: 37942
diff changeset
1024 def debugextensions(ui, repo, **opts):
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1025 '''show information about active extensions'''
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
1026 opts = pycompat.byteskwargs(opts)
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1027 exts = extensions.extensions(ui)
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1028 hgver = util.version()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1029 fm = ui.formatter(b'debugextensions', opts)
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1030 for extname, extmod in sorted(exts, key=operator.itemgetter(0)):
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1031 isinternal = extensions.ismoduleinternal(extmod)
43687
f1dabf99db17 debugextensions: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43686
diff changeset
1032 extsource = None
f1dabf99db17 debugextensions: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43686
diff changeset
1033
f1dabf99db17 debugextensions: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43686
diff changeset
1034 if util.safehasattr(extmod, '__file__'):
f1dabf99db17 debugextensions: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43686
diff changeset
1035 extsource = pycompat.fsencode(extmod.__file__)
f1dabf99db17 debugextensions: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43686
diff changeset
1036 elif getattr(sys, 'oxidized', False):
f1dabf99db17 debugextensions: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43686
diff changeset
1037 extsource = pycompat.sysexecutable
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1038 if isinternal:
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1039 exttestedwith = [] # never expose magic string to users
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1040 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1041 exttestedwith = getattr(extmod, 'testedwith', b'').split()
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1042 extbuglink = getattr(extmod, 'buglink', None)
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1043
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1044 fm.startitem()
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1045
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1046 if ui.quiet or ui.verbose:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1047 fm.write(b'name', b'%s\n', extname)
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1048 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1049 fm.write(b'name', b'%s', extname)
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1050 if isinternal or hgver in exttestedwith:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1051 fm.plain(b'\n')
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1052 elif not exttestedwith:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1053 fm.plain(_(b' (untested!)\n'))
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1054 else:
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1055 lasttestedversion = exttestedwith[-1]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1056 fm.plain(b' (%s!)\n' % lasttestedversion)
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1057
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1058 fm.condwrite(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1059 ui.verbose and extsource,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1060 b'source',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1061 _(b' location: %s\n'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1062 extsource or b"",
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1063 )
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1064
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1065 if ui.verbose:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1066 fm.plain(_(b' bundled: %s\n') % [b'no', b'yes'][isinternal])
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1067 fm.data(bundled=isinternal)
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1068
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1069 fm.condwrite(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1070 ui.verbose and exttestedwith,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1071 b'testedwith',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1072 _(b' tested with: %s\n'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1073 fm.formatlist(exttestedwith, name=b'ver'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1074 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1075
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1076 fm.condwrite(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1077 ui.verbose and extbuglink,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1078 b'buglink',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1079 _(b' bug reporting: %s\n'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1080 extbuglink or b"",
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1081 )
30518
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1082
a8b17859684a debugcommands: move 'debugextensions' to the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30517
diff changeset
1083 fm.end()
30524
1ee358c3ed26 debugcommands: move 'debugfileset' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30519
diff changeset
1084
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1085
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1086 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1087 b'debugfileset',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1088 [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1089 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1090 b'r',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1091 b'rev',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1092 b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1093 _(b'apply the filespec on this revision'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1094 _(b'REV'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1095 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1096 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1097 b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1098 b'all-files',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1099 False,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1100 _(b'test files from all revisions and working directory'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1101 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1102 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1103 b's',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1104 b'show-matcher',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1105 None,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1106 _(b'print internal representation of matcher'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1107 ),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1108 (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1109 b'p',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1110 b'show-stage',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1111 [],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1112 _(b'print parsed tree at the given stage'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1113 _(b'NAME'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1114 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1115 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1116 _(b'[-r REV] [--all-files] [OPTION]... FILESPEC'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1117 )
30524
1ee358c3ed26 debugcommands: move 'debugfileset' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30519
diff changeset
1118 def debugfileset(ui, repo, expr, **opts):
1ee358c3ed26 debugcommands: move 'debugfileset' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30519
diff changeset
1119 '''parse and apply a fileset specification'''
38972
4d992e3f10ba debugcommands: force import of fileset in debugfileset
Augie Fackler <augie@google.com>
parents: 38829
diff changeset
1120 from . import fileset
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1121
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1122 fileset.symbols # force import of fileset so we have predicates to optimize
38610
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1123 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1124 ctx = scmutil.revsingle(repo, opts.get(b'rev'), None)
38801
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1125
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1126 stages = [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1127 (b'parsed', pycompat.identity),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1128 (b'analyzed', filesetlang.analyze),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1129 (b'optimized', filesetlang.optimize),
38801
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1130 ]
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1131 stagenames = set(n for n, f in stages)
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1132
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1133 showalways = set()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1134 if ui.verbose and not opts[b'show_stage']:
38801
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1135 # show parsed tree by --verbose (deprecated)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1136 showalways.add(b'parsed')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1137 if opts[b'show_stage'] == [b'all']:
38801
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1138 showalways.update(stagenames)
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1139 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1140 for n in opts[b'show_stage']:
38801
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1141 if n not in stagenames:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1142 raise error.Abort(_(b'invalid stage name: %s') % n)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1143 showalways.update(opts[b'show_stage'])
38801
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1144
38805
b9162ea1b815 fileset: extract language processing part to new module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 38802
diff changeset
1145 tree = filesetlang.parse(expr)
38801
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1146 for n, f in stages:
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1147 tree = f(tree)
1d1c1645d7b9 debugfileset: backport --show-stage option from debugrevspec
Yuya Nishihara <yuya@tcha.org>
parents: 38783
diff changeset
1148 if n in showalways:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1149 if opts[b'show_stage'] or n != b'parsed':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1150 ui.write(b"* %s:\n" % n)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1151 ui.write(filesetlang.prettyformat(tree), b"\n")
30524
1ee358c3ed26 debugcommands: move 'debugfileset' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30519
diff changeset
1152
38610
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1153 files = set()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1154 if opts[b'all_files']:
38610
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1155 for r in repo:
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1156 c = repo[r]
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1157 files.update(c.files())
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1158 files.update(c.substate)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1159 if opts[b'all_files'] or ctx.rev() is None:
38610
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1160 wctx = repo[None]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1161 files.update(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1162 repo.dirstate.walk(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1163 scmutil.matchall(repo),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1164 subrepos=list(wctx.substate),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1165 unknown=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1166 ignored=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1167 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1168 )
38610
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1169 files.update(wctx.substate)
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1170 else:
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1171 files.update(ctx.files())
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1172 files.update(ctx.substate)
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1173
44009
e685fac56693 match: resolve filesets against the passed `cwd`, not the current one
Matt Harbison <matt_harbison@yahoo.com>
parents: 43972
diff changeset
1174 m = ctx.matchfileset(repo.getcwd(), expr)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1175 if opts[b'show_matcher'] or (opts[b'show_matcher'] is None and ui.verbose):
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1176 ui.writenoi18n(b'* matcher:\n', stringutil.prettyrepr(m), b'\n')
38610
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1177 for f in sorted(files):
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1178 if not m(f):
3d8ef60569d8 fileset: make debugfileset filter repository files
Yuya Nishihara <yuya@tcha.org>
parents: 38599
diff changeset
1179 continue
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1180 ui.write(b"%s\n" % f)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1181
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1182
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1183 @command(b'debugformat', [] + cmdutil.formatteropts)
35336
c3e4f196b6e0 debugformat: add a 'debugformat' command
Boris Feld <boris.feld@octobus.net>
parents: 35304
diff changeset
1184 def debugformat(ui, repo, **opts):
35337
cfb403b92f43 debugformat: add data about the config when verbose
Boris Feld <boris.feld@octobus.net>
parents: 35336
diff changeset
1185 """display format information about the current repository
cfb403b92f43 debugformat: add data about the config when verbose
Boris Feld <boris.feld@octobus.net>
parents: 35336
diff changeset
1186
cfb403b92f43 debugformat: add data about the config when verbose
Boris Feld <boris.feld@octobus.net>
parents: 35336
diff changeset
1187 Use --verbose to get extra information about current config value and
cfb403b92f43 debugformat: add data about the config when verbose
Boris Feld <boris.feld@octobus.net>
parents: 35336
diff changeset
1188 Mercurial default."""
35401
cd3392cb5818 py3: handle keyword arguments correctly in debugcommands.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35400
diff changeset
1189 opts = pycompat.byteskwargs(opts)
35336
c3e4f196b6e0 debugformat: add a 'debugformat' command
Boris Feld <boris.feld@octobus.net>
parents: 35304
diff changeset
1190 maxvariantlength = max(len(fv.name) for fv in upgrade.allformatvariant)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1191 maxvariantlength = max(len(b'format-variant'), maxvariantlength)
35336
c3e4f196b6e0 debugformat: add a 'debugformat' command
Boris Feld <boris.feld@octobus.net>
parents: 35304
diff changeset
1192
c3e4f196b6e0 debugformat: add a 'debugformat' command
Boris Feld <boris.feld@octobus.net>
parents: 35304
diff changeset
1193 def makeformatname(name):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1194 return b'%s:' + (b' ' * (maxvariantlength - len(name)))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1195
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1196 fm = ui.formatter(b'debugformat', opts)
35378
9144e898cad5 debugformat: embed raw values in JSON and template output
Yuya Nishihara <yuya@tcha.org>
parents: 35377
diff changeset
1197 if fm.isplain():
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1198
35378
9144e898cad5 debugformat: embed raw values in JSON and template output
Yuya Nishihara <yuya@tcha.org>
parents: 35377
diff changeset
1199 def formatvalue(value):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1200 if util.safehasattr(value, b'startswith'):
35378
9144e898cad5 debugformat: embed raw values in JSON and template output
Yuya Nishihara <yuya@tcha.org>
parents: 35377
diff changeset
1201 return value
9144e898cad5 debugformat: embed raw values in JSON and template output
Yuya Nishihara <yuya@tcha.org>
parents: 35377
diff changeset
1202 if value:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1203 return b'yes'
35378
9144e898cad5 debugformat: embed raw values in JSON and template output
Yuya Nishihara <yuya@tcha.org>
parents: 35377
diff changeset
1204 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1205 return b'no'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1206
35378
9144e898cad5 debugformat: embed raw values in JSON and template output
Yuya Nishihara <yuya@tcha.org>
parents: 35377
diff changeset
1207 else:
9144e898cad5 debugformat: embed raw values in JSON and template output
Yuya Nishihara <yuya@tcha.org>
parents: 35377
diff changeset
1208 formatvalue = pycompat.identity
35336
c3e4f196b6e0 debugformat: add a 'debugformat' command
Boris Feld <boris.feld@octobus.net>
parents: 35304
diff changeset
1209
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1210 fm.plain(b'format-variant')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1211 fm.plain(b' ' * (maxvariantlength - len(b'format-variant')))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1212 fm.plain(b' repo')
35337
cfb403b92f43 debugformat: add data about the config when verbose
Boris Feld <boris.feld@octobus.net>
parents: 35336
diff changeset
1213 if ui.verbose:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1214 fm.plain(b' config default')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1215 fm.plain(b'\n')
35336
c3e4f196b6e0 debugformat: add a 'debugformat' command
Boris Feld <boris.feld@octobus.net>
parents: 35304
diff changeset
1216 for fv in upgrade.allformatvariant:
35377
c0b6fa74e007 debugformat: flush formatter output per item
Yuya Nishihara <yuya@tcha.org>
parents: 35339
diff changeset
1217 fm.startitem()
35336
c3e4f196b6e0 debugformat: add a 'debugformat' command
Boris Feld <boris.feld@octobus.net>
parents: 35304
diff changeset
1218 repovalue = fv.fromrepo(repo)
35337
cfb403b92f43 debugformat: add data about the config when verbose
Boris Feld <boris.feld@octobus.net>
parents: 35336
diff changeset
1219 configvalue = fv.fromconfig(repo)
35336
c3e4f196b6e0 debugformat: add a 'debugformat' command
Boris Feld <boris.feld@octobus.net>
parents: 35304
diff changeset
1220
35338
bd326f3e0e14 debugformat: update label depending on value difference
Boris Feld <boris.feld@octobus.net>
parents: 35337
diff changeset
1221 if repovalue != configvalue:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1222 namelabel = b'formatvariant.name.mismatchconfig'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1223 repolabel = b'formatvariant.repo.mismatchconfig'
35338
bd326f3e0e14 debugformat: update label depending on value difference
Boris Feld <boris.feld@octobus.net>
parents: 35337
diff changeset
1224 elif repovalue != fv.default:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1225 namelabel = b'formatvariant.name.mismatchdefault'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1226 repolabel = b'formatvariant.repo.mismatchdefault'
35338
bd326f3e0e14 debugformat: update label depending on value difference
Boris Feld <boris.feld@octobus.net>
parents: 35337
diff changeset
1227 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1228 namelabel = b'formatvariant.name.uptodate'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1229 repolabel = b'formatvariant.repo.uptodate'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1230
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1231 fm.write(b'name', makeformatname(fv.name), fv.name, label=namelabel)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1232 fm.write(b'repo', b' %3s', formatvalue(repovalue), label=repolabel)
35338
bd326f3e0e14 debugformat: update label depending on value difference
Boris Feld <boris.feld@octobus.net>
parents: 35337
diff changeset
1233 if fv.default != configvalue:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1234 configlabel = b'formatvariant.config.special'
35338
bd326f3e0e14 debugformat: update label depending on value difference
Boris Feld <boris.feld@octobus.net>
parents: 35337
diff changeset
1235 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1236 configlabel = b'formatvariant.config.default'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1237 fm.condwrite(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1238 ui.verbose,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1239 b'config',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1240 b' %6s',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1241 formatvalue(configvalue),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1242 label=configlabel,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1243 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1244 fm.condwrite(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1245 ui.verbose,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1246 b'default',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1247 b' %7s',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1248 formatvalue(fv.default),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1249 label=b'formatvariant.default',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1250 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1251 fm.plain(b'\n')
35377
c0b6fa74e007 debugformat: flush formatter output per item
Yuya Nishihara <yuya@tcha.org>
parents: 35339
diff changeset
1252 fm.end()
35336
c3e4f196b6e0 debugformat: add a 'debugformat' command
Boris Feld <boris.feld@octobus.net>
parents: 35304
diff changeset
1253
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1254
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1255 @command(b'debugfsinfo', [], _(b'[PATH]'), norepo=True)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1256 def debugfsinfo(ui, path=b"."):
30525
86ebd2f61c31 debugcommands: move 'debugfsinfo' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30524
diff changeset
1257 """show information detected about current filesystem"""
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1258 ui.writenoi18n(b'path: %s\n' % path)
43094
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1259 ui.writenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1260 b'mounted on: %s\n' % (util.getfsmountpoint(path) or b'(unknown)')
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1261 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1262 ui.writenoi18n(b'exec: %s\n' % (util.checkexec(path) and b'yes' or b'no'))
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1263 ui.writenoi18n(b'fstype: %s\n' % (util.getfstype(path) or b'(unknown)'))
43094
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1264 ui.writenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1265 b'symlink: %s\n' % (util.checklink(path) and b'yes' or b'no')
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1266 )
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1267 ui.writenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1268 b'hardlink: %s\n' % (util.checknlink(path) and b'yes' or b'no')
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1269 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1270 casesensitive = b'(unknown)'
31634
35738db2037a debugfsinfo: improve case-sensitive testing
Jun Wu <quark@fb.com>
parents: 31633
diff changeset
1271 try:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1272 with pycompat.namedtempfile(prefix=b'.debugfsinfo', dir=path) as f:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1273 casesensitive = util.fscasesensitive(f.name) and b'yes' or b'no'
31634
35738db2037a debugfsinfo: improve case-sensitive testing
Jun Wu <quark@fb.com>
parents: 31633
diff changeset
1274 except OSError:
35738db2037a debugfsinfo: improve case-sensitive testing
Jun Wu <quark@fb.com>
parents: 31633
diff changeset
1275 pass
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1276 ui.writenoi18n(b'case-sensitive: %s\n' % casesensitive)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1277
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1278
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1279 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1280 b'debuggetbundle',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1281 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1282 (b'H', b'head', [], _(b'id of head node'), _(b'ID')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1283 (b'C', b'common', [], _(b'id of common node'), _(b'ID')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1284 (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1285 b't',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1286 b'type',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1287 b'bzip2',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1288 _(b'bundle compression type to use'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1289 _(b'TYPE'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1290 ),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1291 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1292 _(b'REPO FILE [-H|-C ID]...'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1293 norepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1294 )
30526
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1295 def debuggetbundle(ui, repopath, bundlepath, head=None, common=None, **opts):
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1296 """retrieves a bundle from a repo
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1297
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1298 Every ID must be a full-length hex node id string. Saves the bundle to the
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1299 given file.
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1300 """
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
1301 opts = pycompat.byteskwargs(opts)
30526
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1302 repo = hg.peer(ui, opts, repopath)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1303 if not repo.capable(b'getbundle'):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1304 raise error.Abort(b"getbundle() not supported by target repository")
30526
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1305 args = {}
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1306 if common:
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
1307 args['common'] = [bin(s) for s in common]
30526
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1308 if head:
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
1309 args['heads'] = [bin(s) for s in head]
30526
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1310 # TODO: get desired bundlecaps from command line.
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
1311 args['bundlecaps'] = None
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1312 bundle = repo.getbundle(b'debug', **args)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1313
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1314 bundletype = opts.get(b'type', b'bzip2').lower()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1315 btypes = {
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1316 b'none': b'HG10UN',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1317 b'bzip2': b'HG10BZ',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1318 b'gzip': b'HG10GZ',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1319 b'bundle2': b'HG20',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1320 }
30526
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1321 bundletype = btypes.get(bundletype)
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1322 if bundletype not in bundle2.bundletypes:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1323 raise error.Abort(_(b'unknown bundle type specified with --type'))
30526
9c10905f4b48 debugcommands: move 'debuggetbundle' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30525
diff changeset
1324 bundle2.writebundle(ui, bundle, bundlepath, bundletype)
30527
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1325
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1326
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1327 @command(b'debugignore', [], b'[FILE]')
30527
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1328 def debugignore(ui, repo, *files, **opts):
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1329 """display the combined ignore pattern and information about ignored files
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1330
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1331 With no argument display the combined ignore pattern.
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1332
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1333 Given space separated file names, shows if the given file is ignored and
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1334 if so, show the ignore rule (file and line number) that matched it.
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1335 """
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1336 ignore = repo.dirstate._ignore
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1337 if not files:
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1338 # Show all the patterns
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1339 ui.write(b"%s\n" % pycompat.byterepr(ignore))
30527
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1340 else:
33507
e9672de52a23 debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents: 33493
diff changeset
1341 m = scmutil.match(repo[None], pats=files)
41636
be8741d42836 debugignore: respect ui.relative-paths
Martin von Zweigbergk <martinvonz@google.com>
parents: 41515
diff changeset
1342 uipathfn = scmutil.getuipathfn(repo, legacyrelativevalue=True)
33507
e9672de52a23 debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents: 33493
diff changeset
1343 for f in m.files():
30527
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1344 nf = util.normpath(f)
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1345 ignored = None
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1346 ignoredata = None
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1347 if nf != b'.':
30527
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1348 if ignore(nf):
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1349 ignored = nf
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1350 ignoredata = repo.dirstate._ignorefileandline(nf)
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1351 else:
43633
0b7733719d21 utils: move finddirs() to pathutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 43506
diff changeset
1352 for p in pathutil.finddirs(nf):
30527
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1353 if ignore(p):
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1354 ignored = p
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1355 ignoredata = repo.dirstate._ignorefileandline(p)
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1356 break
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1357 if ignored:
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1358 if ignored == nf:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1359 ui.write(_(b"%s is ignored\n") % uipathfn(f))
30527
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1360 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1361 ui.write(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1362 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1363 b"%s is ignored because of "
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1364 b"containing directory %s\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1365 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1366 % (uipathfn(f), ignored)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1367 )
30527
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1368 ignorefile, lineno, line = ignoredata
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1369 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1370 _(b"(ignore rule in %s, line %d: '%s')\n")
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1371 % (ignorefile, lineno, line)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1372 )
30527
243ecbd4f5c9 debugcommands: move 'debugignore' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30526
diff changeset
1373 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1374 ui.write(_(b"%s is not ignored\n") % uipathfn(f))
30528
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1375
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1376
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1377 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1378 b'debugindex',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1379 cmdutil.debugrevlogopts + cmdutil.formatteropts,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1380 _(b'-c|-m|FILE'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1381 )
30528
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1382 def debugindex(ui, repo, file_=None, **opts):
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1383 """dump index data for a storage primitive"""
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
1384 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1385 store = cmdutil.openstorage(repo, b'debugindex', file_, opts)
30528
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1386
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1387 if ui.debugflag:
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1388 shortfn = hex
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1389 else:
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1390 shortfn = short
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1391
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1392 idlen = 12
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1393 for i in store:
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1394 idlen = len(shortfn(store.node(i)))
30528
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1395 break
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1396
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1397 fm = ui.formatter(b'debugindex', opts)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1398 fm.plain(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1399 b' rev linkrev %s %s p2\n'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1400 % (b'nodeid'.ljust(idlen), b'p1'.ljust(idlen))
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1401 )
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1402
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1403 for rev in store:
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1404 node = store.node(rev)
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1405 parents = store.parents(node)
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1406
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1407 fm.startitem()
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1408 fm.write(b'rev', b'%6d ', rev)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1409 fm.write(b'linkrev', b'%7d ', store.linkrev(rev))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1410 fm.write(b'node', b'%s ', shortfn(node))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1411 fm.write(b'p1', b'%s ', shortfn(parents[0]))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1412 fm.write(b'p2', b'%s', shortfn(parents[1]))
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1413 fm.plain(b'\n')
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1414
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
1415 fm.end()
30528
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1416
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1417
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1418 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1419 b'debugindexdot',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1420 cmdutil.debugrevlogopts,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1421 _(b'-c|-m|FILE'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1422 optionalrepo=True,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1423 )
30528
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1424 def debugindexdot(ui, repo, file_=None, **opts):
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1425 """dump an index DAG as a graphviz dot file"""
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
1426 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1427 r = cmdutil.openstorage(repo, b'debugindexdot', file_, opts)
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1428 ui.writenoi18n(b"digraph G {\n")
30528
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1429 for i in r:
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1430 node = r.node(i)
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1431 pp = r.parents(node)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1432 ui.write(b"\t%d -> %d\n" % (r.rev(pp[0]), i))
30528
22683f2f8100 debugcommands: move 'debugindex' and 'debugindexdot' in the new module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30527
diff changeset
1433 if pp[1] != nullid:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1434 ui.write(b"\t%d -> %d\n" % (r.rev(pp[1]), i))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1435 ui.write(b"}\n")
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1436
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1437
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1438 @command(b'debugindexstats', [])
39980
d71e0ba34d9b debugcommands: add a debugindexstats command
Martin von Zweigbergk <martinvonz@google.com>
parents: 39956
diff changeset
1439 def debugindexstats(ui, repo):
d71e0ba34d9b debugcommands: add a debugindexstats command
Martin von Zweigbergk <martinvonz@google.com>
parents: 39956
diff changeset
1440 """show stats related to the changelog index"""
d71e0ba34d9b debugcommands: add a debugindexstats command
Martin von Zweigbergk <martinvonz@google.com>
parents: 39956
diff changeset
1441 repo.changelog.shortest(nullid, 1)
40365
4f37af86d5d5 debugcommands: avoid stack trace from debugindexstats in pure mode
Martin von Zweigbergk <martinvonz@google.com>
parents: 40174
diff changeset
1442 index = repo.changelog.index
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1443 if not util.safehasattr(index, b'stats'):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1444 raise error.Abort(_(b'debugindexstats only works with native code'))
40365
4f37af86d5d5 debugcommands: avoid stack trace from debugindexstats in pure mode
Martin von Zweigbergk <martinvonz@google.com>
parents: 40174
diff changeset
1445 for k, v in sorted(index.stats().items()):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1446 ui.write(b'%s: %d\n' % (k, v))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1447
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1448
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1449 @command(b'debuginstall', [] + cmdutil.formatteropts, b'', norepo=True)
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1450 def debuginstall(ui, **opts):
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1451 '''test Mercurial installation
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1452
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1453 Returns 0 on success.
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1454 '''
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
1455 opts = pycompat.byteskwargs(opts)
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1456
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1457 problems = 0
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1458
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1459 fm = ui.formatter(b'debuginstall', opts)
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1460 fm.startitem()
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1461
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1462 # encoding
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1463 fm.write(b'encoding', _(b"checking encoding (%s)...\n"), encoding.encoding)
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1464 err = None
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1465 try:
34129
902219a99901 debuginstall: use codecs.lookup() to detect invalid encoding
Yuya Nishihara <yuya@tcha.org>
parents: 34120
diff changeset
1466 codecs.lookup(pycompat.sysstr(encoding.encoding))
902219a99901 debuginstall: use codecs.lookup() to detect invalid encoding
Yuya Nishihara <yuya@tcha.org>
parents: 34120
diff changeset
1467 except LookupError as inst:
37084
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37057
diff changeset
1468 err = stringutil.forcebytestr(inst)
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1469 problems += 1
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1470 fm.condwrite(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1471 err,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1472 b'encodingerror',
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43116
diff changeset
1473 _(b" %s\n (check that your locale is properly set)\n"),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1474 err,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1475 )
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1476
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1477 # Python
43686
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1478 pythonlib = None
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1479 if util.safehasattr(os, '__file__'):
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1480 pythonlib = os.path.dirname(pycompat.fsencode(os.__file__))
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1481 elif getattr(sys, 'oxidized', False):
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1482 pythonlib = pycompat.sysexecutable
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1483
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1484 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1485 b'pythonexe',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1486 _(b"checking Python executable (%s)\n"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1487 pycompat.sysexecutable or _(b"unknown"),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1488 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1489 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1490 b'pythonver',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1491 _(b"checking Python version (%s)\n"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1492 (b"%d.%d.%d" % sys.version_info[:3]),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1493 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1494 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1495 b'pythonlib',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1496 _(b"checking Python lib (%s)...\n"),
43686
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1497 pythonlib or _(b"unknown"),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1498 )
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1499
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1500 security = set(sslutil.supportedprotocols)
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1501 if sslutil.hassni:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1502 security.add(b'sni')
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1503
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1504 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1505 b'pythonsecurity',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1506 _(b"checking Python security support (%s)\n"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1507 fm.formatlist(sorted(security), name=b'protocol', fmt=b'%s', sep=b','),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1508 )
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1509
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1510 # These are warnings, not errors. So don't increment problem count. This
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1511 # may change in the future.
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1512 if b'tls1.2' not in security:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1513 fm.plain(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1514 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1515 b' TLS 1.2 not supported by Python install; '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1516 b'network connections lack modern security\n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1517 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1518 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1519 if b'sni' not in security:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1520 fm.plain(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1521 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1522 b' SNI not supported by Python install; may have '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1523 b'connectivity issues with some servers\n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1524 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1525 )
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1526
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1527 # TODO print CA cert info
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1528
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1529 # hg version
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1530 hgver = util.version()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1531 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1532 b'hgver', _(b"checking Mercurial version (%s)\n"), hgver.split(b'+')[0]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1533 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1534 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1535 b'hgverextra',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1536 _(b"checking Mercurial custom build (%s)\n"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1537 b'+'.join(hgver.split(b'+')[1:]),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1538 )
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1539
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1540 # compiled modules
43686
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1541 hgmodules = None
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1542 if util.safehasattr(sys.modules[__name__], '__file__'):
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1543 hgmodules = os.path.dirname(pycompat.fsencode(__file__))
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1544 elif getattr(sys, 'oxidized', False):
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1545 hgmodules = pycompat.sysexecutable
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1546
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1547 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1548 b'hgmodulepolicy', _(b"checking module policy (%s)\n"), policy.policy
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1549 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1550 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1551 b'hgmodules',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1552 _(b"checking installed modules (%s)...\n"),
43686
1fb19665c166 debuginstall: gracefully handle missing __file__ attributes
Matt Harbison <matt_harbison@yahoo.com>
parents: 43635
diff changeset
1553 hgmodules or _(b"unknown"),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1554 )
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1555
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1556 rustandc = policy.policy in (b'rust+c', b'rust+c-allow')
42451
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1557 rustext = rustandc # for now, that's the only case
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1558 cext = policy.policy in (b'c', b'allow') or rustandc
42451
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1559 nopure = cext or rustext
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1560 if nopure:
32209
85dc5a25f1fc debuginstall: check C extensions only if they are loadable per policy
Yuya Nishihara <yuya@tcha.org>
parents: 31864
diff changeset
1561 err = None
85dc5a25f1fc debuginstall: check C extensions only if they are loadable per policy
Yuya Nishihara <yuya@tcha.org>
parents: 31864
diff changeset
1562 try:
42451
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1563 if cext:
43703
a9b14ef701d1 debugcommands: suppress import errors for pytype
Augie Fackler <augie@google.com>
parents: 43687
diff changeset
1564 from .cext import ( # pytype: disable=import-error
42451
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1565 base85,
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1566 bdiff,
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1567 mpatch,
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1568 osutil,
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1569 )
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1570
42451
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1571 # quiet pyflakes
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1572 dir(bdiff), dir(mpatch), dir(base85), dir(osutil)
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1573 if rustext:
43703
a9b14ef701d1 debugcommands: suppress import errors for pytype
Augie Fackler <augie@google.com>
parents: 43687
diff changeset
1574 from .rustext import ( # pytype: disable=import-error
42451
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1575 ancestor,
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1576 dirstate,
810f66b468cd rust: module policy with importrust
Georges Racinet <georges.racinet@octobus.net>
parents: 42145
diff changeset
1577 )
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1578
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1579 dir(ancestor), dir(dirstate) # quiet pyflakes
32209
85dc5a25f1fc debuginstall: check C extensions only if they are loadable per policy
Yuya Nishihara <yuya@tcha.org>
parents: 31864
diff changeset
1580 except Exception as inst:
37084
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37057
diff changeset
1581 err = stringutil.forcebytestr(inst)
32209
85dc5a25f1fc debuginstall: check C extensions only if they are loadable per policy
Yuya Nishihara <yuya@tcha.org>
parents: 31864
diff changeset
1582 problems += 1
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1583 fm.condwrite(err, b'extensionserror', b" %s\n", err)
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1584
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1585 compengines = util.compengines._engines.values()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1586 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1587 b'compengines',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1588 _(b'checking registered compression engines (%s)\n'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1589 fm.formatlist(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1590 sorted(e.name() for e in compengines),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1591 name=b'compengine',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1592 fmt=b'%s',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1593 sep=b', ',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1594 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1595 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1596 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1597 b'compenginesavail',
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43116
diff changeset
1598 _(b'checking available compression engines (%s)\n'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1599 fm.formatlist(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1600 sorted(e.name() for e in compengines if e.available()),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1601 name=b'compengine',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1602 fmt=b'%s',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1603 sep=b', ',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1604 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1605 )
42041
3e47d1ec9da5 util: extract compression code in `mercurial.utils.compression`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42035
diff changeset
1606 wirecompengines = compression.compengines.supportedwireengines(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1607 compression.SERVERROLE
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1608 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1609 fm.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1610 b'compenginesserver',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1611 _(
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1612 b'checking available compression engines '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1613 b'for wire protocol (%s)\n'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1614 ),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1615 fm.formatlist(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1616 [e.name() for e in wirecompengines if e.wireprotosupport()],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1617 name=b'compengine',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1618 fmt=b'%s',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1619 sep=b', ',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1620 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1621 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1622 re2 = b'missing'
35448
8251c4c4abdc debuginstall: add a line about re2 availability
Boris Feld <boris.feld@octobus.net>
parents: 35424
diff changeset
1623 if util._re2:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1624 re2 = b'available'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1625 fm.plain(_(b'checking "re2" regexp engine (%s)\n') % re2)
35448
8251c4c4abdc debuginstall: add a line about re2 availability
Boris Feld <boris.feld@octobus.net>
parents: 35424
diff changeset
1626 fm.data(re2=bool(util._re2))
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1627
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1628 # templates
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1629 p = templater.templatepaths()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1630 fm.write(b'templatedirs', b'checking templates (%s)...\n', b' '.join(p))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1631 fm.condwrite(not p, b'', _(b" no template directories found\n"))
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1632 if p:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1633 m = templater.templatepath(b"map-cmdline.default")
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1634 if m:
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1635 # template found, check if it is working
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1636 err = None
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1637 try:
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1638 templater.templater.frommapfile(m)
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1639 except Exception as inst:
37084
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37057
diff changeset
1640 err = stringutil.forcebytestr(inst)
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1641 p = None
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1642 fm.condwrite(err, b'defaulttemplateerror', b" %s\n", err)
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1643 else:
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1644 p = None
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1645 fm.condwrite(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1646 p, b'defaulttemplate', _(b"checking default template (%s)\n"), m
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1647 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1648 fm.condwrite(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1649 not m,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1650 b'defaulttemplatenotfound',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1651 _(b" template '%s' not found\n"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1652 b"default",
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1653 )
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1654 if not p:
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1655 problems += 1
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1656 fm.condwrite(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1657 not p, b'', _(b" (templates seem to have been installed incorrectly)\n")
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1658 )
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1659
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1660 # editor
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1661 editor = ui.geteditor()
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1662 editor = util.expandpath(editor)
37120
a8a902d7176e procutil: bulk-replace function calls to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37084
diff changeset
1663 editorbin = procutil.shellsplit(editor)[0]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1664 fm.write(b'editor', _(b"checking commit editor... (%s)\n"), editorbin)
37120
a8a902d7176e procutil: bulk-replace function calls to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37084
diff changeset
1665 cmdpath = procutil.findexe(editorbin)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1666 fm.condwrite(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1667 not cmdpath and editor == b'vi',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1668 b'vinotfound',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1669 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1670 b" No commit editor set and can't find %s in PATH\n"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1671 b" (specify a commit editor in your configuration"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1672 b" file)\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1673 ),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1674 not cmdpath and editor == b'vi' and editorbin,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1675 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1676 fm.condwrite(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1677 not cmdpath and editor != b'vi',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1678 b'editornotfound',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1679 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1680 b" Can't find editor '%s' in PATH\n"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1681 b" (specify a commit editor in your configuration"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1682 b" file)\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1683 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1684 not cmdpath and editorbin,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1685 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1686 if not cmdpath and editor != b'vi':
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1687 problems += 1
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1688
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1689 # check username
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1690 username = None
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1691 err = None
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1692 try:
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1693 username = ui.username()
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1694 except error.Abort as e:
37084
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37057
diff changeset
1695 err = stringutil.forcebytestr(e)
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1696 problems += 1
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1697
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1698 fm.condwrite(
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1699 username, b'username', _(b"checking username (%s)\n"), username
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1700 )
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1701 fm.condwrite(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1702 err,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1703 b'usernameerror',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1704 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1705 b"checking username...\n %s\n"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1706 b" (specify a username in your configuration file)\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1707 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1708 err,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1709 )
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1710
42651
7f1df7019497 debugcommands: add support for extensions adding their own debug info
Augie Fackler <augie@google.com>
parents: 42580
diff changeset
1711 for name, mod in extensions.extensions():
7f1df7019497 debugcommands: add support for extensions adding their own debug info
Augie Fackler <augie@google.com>
parents: 42580
diff changeset
1712 handler = getattr(mod, 'debuginstall', None)
7f1df7019497 debugcommands: add support for extensions adding their own debug info
Augie Fackler <augie@google.com>
parents: 42580
diff changeset
1713 if handler is not None:
7f1df7019497 debugcommands: add support for extensions adding their own debug info
Augie Fackler <augie@google.com>
parents: 42580
diff changeset
1714 problems += handler(ui, fm)
7f1df7019497 debugcommands: add support for extensions adding their own debug info
Augie Fackler <augie@google.com>
parents: 42580
diff changeset
1715
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1716 fm.condwrite(not problems, b'', _(b"no problems detected\n"))
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1717 if not problems:
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1718 fm.data(problems=problems)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1719 fm.condwrite(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1720 problems,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1721 b'problems',
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43116
diff changeset
1722 _(b"%d problems detected, please check your install!\n"),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1723 problems,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1724 )
30918
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1725 fm.end()
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1726
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1727 return problems
fec3dbaa7f83 debugcommands: extract debuginstall in the debugcommands module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30775
diff changeset
1728
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1729
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1730 @command(b'debugknown', [], _(b'REPO ID...'), norepo=True)
30919
e1fa5fe9f9d4 debugcommands: move 'debugknown' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30918
diff changeset
1731 def debugknown(ui, repopath, *ids, **opts):
e1fa5fe9f9d4 debugcommands: move 'debugknown' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30918
diff changeset
1732 """test whether node ids are known to a repo
e1fa5fe9f9d4 debugcommands: move 'debugknown' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30918
diff changeset
1733
e1fa5fe9f9d4 debugcommands: move 'debugknown' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30918
diff changeset
1734 Every ID must be a full-length hex node id string. Returns a list of 0s
e1fa5fe9f9d4 debugcommands: move 'debugknown' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30918
diff changeset
1735 and 1s indicating unknown/known.
e1fa5fe9f9d4 debugcommands: move 'debugknown' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30918
diff changeset
1736 """
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
1737 opts = pycompat.byteskwargs(opts)
30919
e1fa5fe9f9d4 debugcommands: move 'debugknown' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30918
diff changeset
1738 repo = hg.peer(ui, opts, repopath)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1739 if not repo.capable(b'known'):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1740 raise error.Abort(b"known() not supported by target repository")
30919
e1fa5fe9f9d4 debugcommands: move 'debugknown' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30918
diff changeset
1741 flags = repo.known([bin(s) for s in ids])
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1742 ui.write(b"%s\n" % (b"".join([f and b"1" or b"0" for f in flags])))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1743
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1744
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1745 @command(b'debuglabelcomplete', [], _(b'LABEL...'))
30935
e46533c3201e debugcommands: move 'debuglabelcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30919
diff changeset
1746 def debuglabelcomplete(ui, repo, *args):
e46533c3201e debugcommands: move 'debuglabelcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30919
diff changeset
1747 '''backwards compatibility with old bash completion scripts (DEPRECATED)'''
31402
ea0395eec67b debuglabelcomplete: fix to call debugnamecomplete in new location
Kyle Lippincott <spectral@google.com>
parents: 31239
diff changeset
1748 debugnamecomplete(ui, repo, *args)
30935
e46533c3201e debugcommands: move 'debuglabelcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30919
diff changeset
1749
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1750
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1751 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1752 b'debuglocks',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1753 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1754 (b'L', b'force-lock', None, _(b'free the store lock (DANGEROUS)')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1755 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1756 b'W',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1757 b'force-wlock',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1758 None,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1759 _(b'free the working state lock (DANGEROUS)'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1760 ),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1761 (b's', b'set-lock', None, _(b'set the store lock until stopped')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1762 (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1763 b'S',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1764 b'set-wlock',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1765 None,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1766 _(b'set the working state lock until stopped'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1767 ),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1768 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1769 _(b'[OPTION]...'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1770 )
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1771 def debuglocks(ui, repo, **opts):
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1772 """show or modify state of locks
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1773
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1774 By default, this command will show which locks are held. This
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1775 includes the user and process holding the lock, the amount of time
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1776 the lock has been held, and the machine name where the process is
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1777 running if it's not local.
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1778
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1779 Locks protect the integrity of Mercurial's data, so should be
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1780 treated with care. System crashes or other interruptions may cause
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1781 locks to not be properly released, though Mercurial will usually
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1782 detect and remove such stale locks automatically.
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1783
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1784 However, detecting stale locks may not always be possible (for
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1785 instance, on a shared filesystem). Removing locks may also be
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1786 blocked by filesystem permissions.
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1787
35395
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1788 Setting a lock will prevent other commands from changing the data.
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1789 The command will wait until an interruption (SIGINT, SIGTERM, ...) occurs.
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1790 The set locks are removed when the command exits.
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1791
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1792 Returns 0 if no locks are held.
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1793
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1794 """
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1795
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
1796 if opts.get('force_lock'):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1797 repo.svfs.unlink(b'lock')
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
1798 if opts.get('force_wlock'):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1799 repo.vfs.unlink(b'wlock')
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
1800 if opts.get('force_lock') or opts.get('force_wlock'):
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1801 return 0
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1802
35395
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1803 locks = []
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1804 try:
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
1805 if opts.get('set_wlock'):
35395
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1806 try:
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1807 locks.append(repo.wlock(False))
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1808 except error.LockHeld:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1809 raise error.Abort(_(b'wlock is already held'))
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
1810 if opts.get('set_lock'):
35395
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1811 try:
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1812 locks.append(repo.lock(False))
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1813 except error.LockHeld:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1814 raise error.Abort(_(b'lock is already held'))
35395
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1815 if len(locks):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1816 ui.promptchoice(_(b"ready to release the lock (y)? $$ &Yes"))
35395
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1817 return 0
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1818 finally:
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1819 release(*locks)
12055fb3ba30 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net>
parents: 35394
diff changeset
1820
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1821 now = time.time()
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1822 held = 0
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1823
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1824 def report(vfs, name, method):
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1825 # this causes stale locks to get reaped for more accurate reporting
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1826 try:
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1827 l = method(False)
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1828 except error.LockHeld:
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1829 l = None
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1830
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1831 if l:
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1832 l.release()
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1833 else:
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1834 try:
36781
ffa3026d4196 cleanup: use stat_result[stat.ST_MTIME] instead of stat_result.st_mtime
Augie Fackler <augie@google.com>
parents: 36778
diff changeset
1835 st = vfs.lstat(name)
ffa3026d4196 cleanup: use stat_result[stat.ST_MTIME] instead of stat_result.st_mtime
Augie Fackler <augie@google.com>
parents: 36778
diff changeset
1836 age = now - st[stat.ST_MTIME]
ffa3026d4196 cleanup: use stat_result[stat.ST_MTIME] instead of stat_result.st_mtime
Augie Fackler <augie@google.com>
parents: 36778
diff changeset
1837 user = util.username(st.st_uid)
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1838 locker = vfs.readlock(name)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1839 if b":" in locker:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1840 host, pid = locker.split(b':')
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1841 if host == socket.gethostname():
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1842 locker = b'user %s, process %s' % (user or b'None', pid)
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1843 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1844 locker = b'user %s, process %s, host %s' % (
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1845 user or b'None',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1846 pid,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1847 host,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1848 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1849 ui.writenoi18n(b"%-6s %s (%ds)\n" % (name + b":", locker, age))
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1850 return 1
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1851 except OSError as e:
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1852 if e.errno != errno.ENOENT:
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1853 raise
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1854
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1855 ui.writenoi18n(b"%-6s free\n" % (name + b":"))
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1856 return 0
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1857
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1858 held += report(repo.svfs, b"lock", repo.lock)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1859 held += report(repo.vfs, b"wlock", repo.wlock)
30938
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1860
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1861 return held
23c801570449 debugcommands: move 'debuglocks' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30937
diff changeset
1862
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1863
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1864 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1865 b'debugmanifestfulltextcache',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1866 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1867 (b'', b'clear', False, _(b'clear the cache')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1868 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1869 b'a',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1870 b'add',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1871 [],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1872 _(b'add the given manifest nodes to the cache'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1873 _(b'NODE'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1874 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1875 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1876 b'',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1877 )
41958
1fe278aa4ad5 manifestcache: support multiple cache addition in one debug command run
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41947
diff changeset
1878 def debugmanifestfulltextcache(ui, repo, add=(), **opts):
38781
0a57945aaf7f manifest: persist the manifestfulltext cache
Martijn Pieters <mj@zopatista.com>
parents: 38707
diff changeset
1879 """show, clear or amend the contents of the manifest fulltext cache"""
41942
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1880
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1881 def getcache():
39244
73cf21b2e8a6 manifest: add getstorage() to manifestlog and use it globally
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39163
diff changeset
1882 r = repo.manifestlog.getstorage(b'')
38781
0a57945aaf7f manifest: persist the manifestfulltext cache
Martijn Pieters <mj@zopatista.com>
parents: 38707
diff changeset
1883 try:
41942
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1884 return r._fulltextcache
38781
0a57945aaf7f manifest: persist the manifestfulltext cache
Martijn Pieters <mj@zopatista.com>
parents: 38707
diff changeset
1885 except AttributeError:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1886 msg = _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1887 b"Current revlog implementation doesn't appear to have a "
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1888 b"manifest fulltext cache\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1889 )
41942
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1890 raise error.Abort(msg)
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1891
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
1892 if opts.get('clear'):
41964
d121823072b8 manifestcache: protect write with `wlock` instead of `lock`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41959
diff changeset
1893 with repo.wlock():
41942
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1894 cache = getcache()
41947
b74ef67573e5 manifestcache: actually honor --clear
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41943
diff changeset
1895 cache.clear(clear_persisted_data=True)
b74ef67573e5 manifestcache: actually honor --clear
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41943
diff changeset
1896 return
38781
0a57945aaf7f manifest: persist the manifestfulltext cache
Martijn Pieters <mj@zopatista.com>
parents: 38707
diff changeset
1897
41942
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1898 if add:
41964
d121823072b8 manifestcache: protect write with `wlock` instead of `lock`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41959
diff changeset
1899 with repo.wlock():
41958
1fe278aa4ad5 manifestcache: support multiple cache addition in one debug command run
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41947
diff changeset
1900 m = repo.manifestlog
1fe278aa4ad5 manifestcache: support multiple cache addition in one debug command run
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41947
diff changeset
1901 store = m.getstorage(b'')
1fe278aa4ad5 manifestcache: support multiple cache addition in one debug command run
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41947
diff changeset
1902 for n in add:
1fe278aa4ad5 manifestcache: support multiple cache addition in one debug command run
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41947
diff changeset
1903 try:
1fe278aa4ad5 manifestcache: support multiple cache addition in one debug command run
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41947
diff changeset
1904 manifest = m[store.lookup(n)]
1fe278aa4ad5 manifestcache: support multiple cache addition in one debug command run
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41947
diff changeset
1905 except error.LookupError as e:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1906 raise error.Abort(e, hint=b"Check your manifest node id")
41958
1fe278aa4ad5 manifestcache: support multiple cache addition in one debug command run
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41947
diff changeset
1907 manifest.read() # stores revisision in cache too
41943
1e75311d78f7 manifestcache: do not display data when using --add
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41942
diff changeset
1908 return
38781
0a57945aaf7f manifest: persist the manifestfulltext cache
Martijn Pieters <mj@zopatista.com>
parents: 38707
diff changeset
1909
41942
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1910 cache = getcache()
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1911 if not len(cache):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1912 ui.write(_(b'cache empty\n'))
41942
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1913 else:
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1914 ui.write(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1915 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1916 b'cache contains %d manifest entries, in order of most to '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1917 b'least recent:\n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1918 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1919 % (len(cache),)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1920 )
41942
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1921 totalsize = 0
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1922 for nodeid in cache:
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1923 # Use cache.get to not update the LRU order
41959
e3307243d188 manifestcache: stop altering the lru cache order while displaying it
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41958
diff changeset
1924 data = cache.peek(nodeid)
41942
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1925 size = len(data)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1926 totalsize += size + 24 # 20 bytes nodeid, 4 bytes size
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1927 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1928 _(b'id: %s, size %s\n') % (hex(nodeid), util.bytecount(size))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1929 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1930 ondisk = cache._opener.stat(b'manifestfulltextcache').st_size
41942
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1931 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1932 _(b'total cache data size %s, on-disk %s\n')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1933 % (util.bytecount(totalsize), util.bytecount(ondisk))
41942
fbee66c90cef manifestcache: only lock the repository if the debug command touch the cache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41941
diff changeset
1934 )
38781
0a57945aaf7f manifest: persist the manifestfulltext cache
Martijn Pieters <mj@zopatista.com>
parents: 38707
diff changeset
1935
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1936
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1937 @command(b'debugmergestate', [], b'')
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1938 def debugmergestate(ui, repo, *args):
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1939 """print merge state
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1940
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1941 Use --verbose to print out information about whether v1 or v2 merge state
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1942 was chosen."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1943
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1944 def _hashornull(h):
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1945 if h == nullhex:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1946 return b'null'
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1947 else:
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1948 return h
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1949
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1950 def printrecords(version):
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1951 ui.writenoi18n(b'* version %d records\n' % version)
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1952 if version == 1:
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1953 records = v1records
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1954 else:
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1955 records = v2records
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1956
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1957 for rtype, record in records:
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1958 # pretty print some record types
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1959 if rtype == b'L':
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1960 ui.writenoi18n(b'local: %s\n' % record)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1961 elif rtype == b'O':
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1962 ui.writenoi18n(b'other: %s\n' % record)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1963 elif rtype == b'm':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1964 driver, mdstate = record.split(b'\0', 1)
43094
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1965 ui.writenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1966 b'merge driver: %s (state "%s")\n' % (driver, mdstate)
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1967 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1968 elif rtype in b'FDC':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1969 r = record.split(b'\0')
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1970 f, state, hash, lfile, afile, anode, ofile = r[0:7]
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1971 if version == 1:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1972 onode = b'not stored in v1 format'
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1973 flags = r[7]
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1974 else:
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1975 onode, flags = r[7:9]
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1976 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1977 b'file: %s (record type "%s", state "%s", hash %s)\n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1978 % (f, rtype, state, _hashornull(hash))
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1979 )
43094
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1980 ui.writenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1981 b' local path: %s (flags "%s")\n' % (lfile, flags)
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
1982 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1983 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1984 b' ancestor path: %s (node %s)\n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1985 % (afile, _hashornull(anode))
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1986 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1987 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1988 b' other path: %s (node %s)\n'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1989 % (ofile, _hashornull(onode))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
1990 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1991 elif rtype == b'f':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1992 filename, rawextras = record.split(b'\0', 1)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1993 extras = rawextras.split(b'\0')
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1994 i = 0
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1995 extrastrings = []
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1996 while i < len(extras):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1997 extrastrings.append(b'%s = %s' % (extras[i], extras[i + 1]))
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1998 i += 2
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
1999
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2000 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2001 b'file extras: %s (%s)\n'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2002 % (filename, b', '.join(extrastrings))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2003 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2004 elif rtype == b'l':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2005 labels = record.split(b'\0', 2)
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2006 labels = [l for l in labels if len(l) > 0]
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2007 ui.writenoi18n(b'labels:\n')
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2008 ui.write((b' local: %s\n' % labels[0]))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2009 ui.write((b' other: %s\n' % labels[1]))
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2010 if len(labels) > 2:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2011 ui.write((b' base: %s\n' % labels[2]))
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2012 else:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2013 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2014 b'unrecognized entry: %s\t%s\n'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2015 % (rtype, record.replace(b'\0', b'\t'))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2016 )
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2017
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2018 # Avoid mergestate.read() since it may raise an exception for unsupported
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2019 # merge state records. We shouldn't be doing this, but this is OK since this
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2020 # command is pretty low-level.
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2021 ms = mergemod.mergestate(repo)
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2022
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2023 # sort so that reasonable information is on top
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2024 v1records = ms._readrecordsv1()
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2025 v2records = ms._readrecordsv2()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2026 order = b'LOml'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2027
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2028 def key(r):
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2029 idx = order.find(r[0])
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2030 if idx == -1:
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2031 return (1, r[1])
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2032 else:
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2033 return (0, idx)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2034
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2035 v1records.sort(key=key)
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2036 v2records.sort(key=key)
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2037
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2038 if not v1records and not v2records:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2039 ui.writenoi18n(b'no merge state found\n')
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2040 elif not v2records:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2041 ui.notenoi18n(b'no version 2 merge state\n')
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2042 printrecords(1)
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2043 elif ms._v1v2match(v1records, v2records):
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2044 ui.notenoi18n(b'v1 and v2 states match: using v2\n')
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2045 printrecords(2)
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2046 else:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2047 ui.notenoi18n(b'v1 and v2 states mismatch: using v1\n')
30936
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2048 printrecords(1)
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2049 if ui.verbose:
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2050 printrecords(2)
8de38479d60b debugcommands: move 'debugmergestate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30935
diff changeset
2051
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2052
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2053 @command(b'debugnamecomplete', [], _(b'NAME...'))
30937
a9aa67ba3f96 debugcommands: move 'debugnamecomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30936
diff changeset
2054 def debugnamecomplete(ui, repo, *args):
a9aa67ba3f96 debugcommands: move 'debugnamecomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30936
diff changeset
2055 '''complete "names" - tags, open branch names, bookmark names'''
a9aa67ba3f96 debugcommands: move 'debugnamecomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30936
diff changeset
2056
a9aa67ba3f96 debugcommands: move 'debugnamecomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30936
diff changeset
2057 names = set()
a9aa67ba3f96 debugcommands: move 'debugnamecomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30936
diff changeset
2058 # since we previously only listed open branches, we will handle that
a9aa67ba3f96 debugcommands: move 'debugnamecomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30936
diff changeset
2059 # specially (after this for loop)
43106
d783f945a701 py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43094
diff changeset
2060 for name, ns in pycompat.iteritems(repo.names):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2061 if name != b'branches':
30937
a9aa67ba3f96 debugcommands: move 'debugnamecomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30936
diff changeset
2062 names.update(ns.listnames(repo))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2063 names.update(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2064 tag
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2065 for (tag, heads, tip, closed) in repo.branchmap().iterbranches()
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2066 if not closed
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2067 )
30937
a9aa67ba3f96 debugcommands: move 'debugnamecomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30936
diff changeset
2068 completions = set()
a9aa67ba3f96 debugcommands: move 'debugnamecomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30936
diff changeset
2069 if not args:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2070 args = [b'']
30937
a9aa67ba3f96 debugcommands: move 'debugnamecomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30936
diff changeset
2071 for a in args:
a9aa67ba3f96 debugcommands: move 'debugnamecomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30936
diff changeset
2072 completions.update(n for n in names if n.startswith(a))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2073 ui.write(b'\n'.join(sorted(completions)))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2074 ui.write(b'\n')
30937
a9aa67ba3f96 debugcommands: move 'debugnamecomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30936
diff changeset
2075
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2077 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2078 b'debugobsolete',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2079 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2080 (b'', b'flags', 0, _(b'markers flag')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2081 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2082 b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2083 b'record-parents',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2084 False,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2085 _(b'record parent information for the precursor'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2086 ),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2087 (b'r', b'rev', [], _(b'display markers relevant to REV')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2088 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2089 b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2090 b'exclusive',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2091 False,
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43116
diff changeset
2092 _(b'restrict display to markers only relevant to REV'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2093 ),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2094 (b'', b'index', False, _(b'display index of the marker')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2095 (b'', b'delete', [], _(b'delete markers specified by indices')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2096 ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2097 + cmdutil.commitopts2
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2098 + cmdutil.formatteropts,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2099 _(b'[OBSOLETED [REPLACEMENT ...]]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2100 )
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2101 def debugobsolete(ui, repo, precursor=None, *successors, **opts):
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2102 """create arbitrary obsolete marker
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2103
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2104 With no arguments, displays the list of obsolescence markers."""
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2105
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
2106 opts = pycompat.byteskwargs(opts)
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
2107
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2108 def parsenodeid(s):
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2109 try:
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2110 # We do not use revsingle/revrange functions here to accept
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2111 # arbitrary node identifiers, possibly not present in the
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2112 # local repository.
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2113 n = bin(s)
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2114 if len(n) != len(nullid):
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2115 raise TypeError()
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2116 return n
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2117 except TypeError:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2118 raise error.Abort(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2119 b'changeset references must be full hexadecimal '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2120 b'node identifiers'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2121 )
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2122
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2123 if opts.get(b'delete'):
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2124 indices = []
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2125 for v in opts.get(b'delete'):
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2126 try:
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2127 indices.append(int(v))
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2128 except ValueError:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2129 raise error.Abort(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2130 _(b'invalid index value: %r') % v,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2131 hint=_(b'use integers for indices'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2132 )
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2133
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2134 if repo.currenttransaction():
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2135 raise error.Abort(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43116
diff changeset
2136 _(b'cannot delete obsmarkers in the middle of transaction.')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2137 )
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2138
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2139 with repo.lock():
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2140 n = repair.deleteobsmarkers(repo.obsstore, indices)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2141 ui.write(_(b'deleted %i obsolescence markers\n') % n)
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2142
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2143 return
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2144
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2145 if precursor is not None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2146 if opts[b'rev']:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2147 raise error.Abort(b'cannot select revision when creating marker')
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2148 metadata = {}
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2149 metadata[b'user'] = encoding.fromlocal(opts[b'user'] or ui.username())
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2150 succs = tuple(parsenodeid(succ) for succ in successors)
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2151 l = repo.lock()
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2152 try:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2153 tr = repo.transaction(b'debugobsolete')
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2154 try:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2155 date = opts.get(b'date')
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2156 if date:
36607
c6061cadb400 util: extract all date-related utils in utils/dateutil module
Boris Feld <boris.feld@octobus.net>
parents: 36587
diff changeset
2157 date = dateutil.parsedate(date)
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2158 else:
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2159 date = None
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2160 prec = parsenodeid(precursor)
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2161 parents = None
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2162 if opts[b'record_parents']:
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2163 if prec not in repo.unfiltered():
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2164 raise error.Abort(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2165 b'cannot used --record-parents on '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2166 b'unknown changesets'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2167 )
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2168 parents = repo.unfiltered()[prec].parents()
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2169 parents = tuple(p.node() for p in parents)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2170 repo.obsstore.create(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2171 tr,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2172 prec,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2173 succs,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2174 opts[b'flags'],
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2175 parents=parents,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2176 date=date,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2177 metadata=metadata,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2178 ui=ui,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2179 )
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2180 tr.close()
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2181 except ValueError as exc:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2182 raise error.Abort(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2183 _(b'bad obsmarker input: %s') % pycompat.bytestr(exc)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2184 )
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2185 finally:
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2186 tr.release()
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2187 finally:
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2188 l.release()
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2189 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2190 if opts[b'rev']:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2191 revs = scmutil.revrange(repo, opts[b'rev'])
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2192 nodes = [repo[r].node() for r in revs]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2193 markers = list(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2194 obsutil.getmarkers(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2195 repo, nodes=nodes, exclusive=opts[b'exclusive']
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2196 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2197 )
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2198 markers.sort(key=lambda x: x._data)
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2199 else:
33149
a14e2e7f7d1f obsutil: move 'getmarkers' to the new modules
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33148
diff changeset
2200 markers = obsutil.getmarkers(repo)
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2201
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2202 markerstoiter = markers
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2203 isrelevant = lambda m: True
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2204 if opts.get(b'rev') and opts.get(b'index'):
33149
a14e2e7f7d1f obsutil: move 'getmarkers' to the new modules
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33148
diff changeset
2205 markerstoiter = obsutil.getmarkers(repo)
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2206 markerset = set(markers)
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2207 isrelevant = lambda m: m in markerset
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2208
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2209 fm = ui.formatter(b'debugobsolete', opts)
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2210 for i, m in enumerate(markerstoiter):
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2211 if not isrelevant(m):
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2212 # marker can be irrelevant when we're iterating over a set
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2213 # of markers (markerstoiter) which is bigger than the set
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2214 # of markers we want to display (markers)
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2215 # this can happen if both --index and --rev options are
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2216 # provided and thus we need to iterate over all of the markers
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2217 # to get the correct indices, but only display the ones that
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2218 # are relevant to --rev value
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2219 continue
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2220 fm.startitem()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2221 ind = i if opts.get(b'index') else None
30939
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2222 cmdutil.showmarker(fm, m, index=ind)
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2223 fm.end()
9e39d196cdf5 debugcommands: move 'debugobsolete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30938
diff changeset
2224
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2225
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2226 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2227 b'debugp1copies',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2228 [(b'r', b'rev', b'', _(b'revision to debug'), _(b'REV'))],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2229 _(b'[-r REV]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2230 )
41755
a4358f7345b4 context: introduce p[12]copies() methods and debugp[12]copies commands
Martin von Zweigbergk <martinvonz@google.com>
parents: 41749
diff changeset
2231 def debugp1copies(ui, repo, **opts):
a4358f7345b4 context: introduce p[12]copies() methods and debugp[12]copies commands
Martin von Zweigbergk <martinvonz@google.com>
parents: 41749
diff changeset
2232 """dump copy information compared to p1"""
a4358f7345b4 context: introduce p[12]copies() methods and debugp[12]copies commands
Martin von Zweigbergk <martinvonz@google.com>
parents: 41749
diff changeset
2233
a4358f7345b4 context: introduce p[12]copies() methods and debugp[12]copies commands
Martin von Zweigbergk <martinvonz@google.com>
parents: 41749
diff changeset
2234 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2235 ctx = scmutil.revsingle(repo, opts.get(b'rev'), default=None)
41755
a4358f7345b4 context: introduce p[12]copies() methods and debugp[12]copies commands
Martin von Zweigbergk <martinvonz@google.com>
parents: 41749
diff changeset
2236 for dst, src in ctx.p1copies().items():
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2237 ui.write(b'%s -> %s\n' % (src, dst))
41755
a4358f7345b4 context: introduce p[12]copies() methods and debugp[12]copies commands
Martin von Zweigbergk <martinvonz@google.com>
parents: 41749
diff changeset
2238
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2239
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2240 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2241 b'debugp2copies',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2242 [(b'r', b'rev', b'', _(b'revision to debug'), _(b'REV'))],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2243 _(b'[-r REV]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2244 )
41755
a4358f7345b4 context: introduce p[12]copies() methods and debugp[12]copies commands
Martin von Zweigbergk <martinvonz@google.com>
parents: 41749
diff changeset
2245 def debugp1copies(ui, repo, **opts):
a4358f7345b4 context: introduce p[12]copies() methods and debugp[12]copies commands
Martin von Zweigbergk <martinvonz@google.com>
parents: 41749
diff changeset
2246 """dump copy information compared to p2"""
a4358f7345b4 context: introduce p[12]copies() methods and debugp[12]copies commands
Martin von Zweigbergk <martinvonz@google.com>
parents: 41749
diff changeset
2247
a4358f7345b4 context: introduce p[12]copies() methods and debugp[12]copies commands
Martin von Zweigbergk <martinvonz@google.com>
parents: 41749
diff changeset
2248 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2249 ctx = scmutil.revsingle(repo, opts.get(b'rev'), default=None)
41755
a4358f7345b4 context: introduce p[12]copies() methods and debugp[12]copies commands
Martin von Zweigbergk <martinvonz@google.com>
parents: 41749
diff changeset
2250 for dst, src in ctx.p2copies().items():
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2251 ui.write(b'%s -> %s\n' % (src, dst))
41755
a4358f7345b4 context: introduce p[12]copies() methods and debugp[12]copies commands
Martin von Zweigbergk <martinvonz@google.com>
parents: 41749
diff changeset
2252
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2253
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2254 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2255 b'debugpathcomplete',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2256 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2257 (b'f', b'full', None, _(b'complete an entire path')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2258 (b'n', b'normal', None, _(b'show only normal files')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2259 (b'a', b'added', None, _(b'show only added files')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2260 (b'r', b'removed', None, _(b'show only removed files')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2261 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2262 _(b'FILESPEC...'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2263 )
30940
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2264 def debugpathcomplete(ui, repo, *specs, **opts):
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2265 '''complete part or all of a tracked path
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2266
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2267 This command supports shells that offer path name completion. It
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2268 currently completes only files already known to the dirstate.
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2269
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2270 Completion extends only to the next path segment unless
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2271 --full is specified, in which case entire paths are used.'''
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2272
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2273 def complete(path, acceptable):
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2274 dirstate = repo.dirstate
39818
24e493ec2229 py3: rename pycompat.getcwd() to encoding.getcwd() (API)
Matt Harbison <matt_harbison@yahoo.com>
parents: 39760
diff changeset
2275 spec = os.path.normpath(os.path.join(encoding.getcwd(), path))
30940
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2276 rootdir = repo.root + pycompat.ossep
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2277 if spec != repo.root and not spec.startswith(rootdir):
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2278 return [], []
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2279 if os.path.isdir(spec):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2280 spec += b'/'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2281 spec = spec[len(rootdir) :]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2282 fixpaths = pycompat.ossep != b'/'
30940
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2283 if fixpaths:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2284 spec = spec.replace(pycompat.ossep, b'/')
30940
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2285 speclen = len(spec)
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
2286 fullpaths = opts['full']
30940
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2287 files, dirs = set(), set()
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2288 adddir, addfile = dirs.add, files.add
43106
d783f945a701 py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43094
diff changeset
2289 for f, st in pycompat.iteritems(dirstate):
30940
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2290 if f.startswith(spec) and st[0] in acceptable:
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2291 if fixpaths:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2292 f = f.replace(b'/', pycompat.ossep)
30940
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2293 if fullpaths:
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2294 addfile(f)
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2295 continue
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2296 s = f.find(pycompat.ossep, speclen)
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2297 if s >= 0:
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2298 adddir(f[:s])
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2299 else:
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2300 addfile(f)
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2301 return files, dirs
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2302
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2303 acceptable = b''
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
2304 if opts['normal']:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2305 acceptable += b'nm'
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
2306 if opts['added']:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2307 acceptable += b'a'
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
2308 if opts['removed']:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2309 acceptable += b'r'
30940
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2310 cwd = repo.getcwd()
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2311 if not specs:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2312 specs = [b'.']
30940
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2313
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2314 files, dirs = set(), set()
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2315 for spec in specs:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2316 f, d = complete(spec, acceptable or b'nmar')
30940
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2317 files.update(f)
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2318 dirs.update(d)
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2319 files.update(dirs)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2320 ui.write(b'\n'.join(repo.pathto(p, cwd) for p in sorted(files)))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2321 ui.write(b'\n')
30940
c8081ea63591 debugcommands: move 'debugpathcomplete' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30939
diff changeset
2322
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2323
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2324 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2325 b'debugpathcopies',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2326 cmdutil.walkopts,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2327 b'hg debugpathcopies REV1 REV2 [FILE]',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2328 inferrepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2329 )
41515
7dc160a57025 debugcommands: add a debugpathcopies command
Martin von Zweigbergk <martinvonz@google.com>
parents: 41365
diff changeset
2330 def debugpathcopies(ui, repo, rev1, rev2, *pats, **opts):
7dc160a57025 debugcommands: add a debugpathcopies command
Martin von Zweigbergk <martinvonz@google.com>
parents: 41365
diff changeset
2331 """show copies between two revisions"""
7dc160a57025 debugcommands: add a debugpathcopies command
Martin von Zweigbergk <martinvonz@google.com>
parents: 41365
diff changeset
2332 ctx1 = scmutil.revsingle(repo, rev1)
7dc160a57025 debugcommands: add a debugpathcopies command
Martin von Zweigbergk <martinvonz@google.com>
parents: 41365
diff changeset
2333 ctx2 = scmutil.revsingle(repo, rev2)
7dc160a57025 debugcommands: add a debugpathcopies command
Martin von Zweigbergk <martinvonz@google.com>
parents: 41365
diff changeset
2334 m = scmutil.match(ctx1, pats, opts)
41749
f96988680afe debugpathcopies: sort output so it's deterministic
Martin von Zweigbergk <martinvonz@google.com>
parents: 41691
diff changeset
2335 for dst, src in sorted(copies.pathcopies(ctx1, ctx2, m).items()):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2336 ui.write(b'%s -> %s\n' % (src, dst))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2337
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2338
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2339 @command(b'debugpeer', [], _(b'PATH'), norepo=True)
35929
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2340 def debugpeer(ui, path):
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2341 """establish a connection to a peer repository"""
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2342 # Always enable peer request logging. Requires --debug to display
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2343 # though.
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2344 overrides = {
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2345 (b'devel', b'debug.peer-request'): True,
35929
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2346 }
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2347
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2348 with ui.configoverride(overrides):
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2349 peer = hg.peer(ui, {}, path)
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2350
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2351 local = peer.local() is not None
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2352 canpush = peer.canpush()
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2353
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2354 ui.write(_(b'url: %s\n') % peer.url())
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2355 ui.write(_(b'local: %s\n') % (_(b'yes') if local else _(b'no')))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2356 ui.write(_(b'pushable: %s\n') % (_(b'yes') if canpush else _(b'no')))
35929
5f029d03cf71 debugcommands: introduce debugpeer command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35902
diff changeset
2357
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2358
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2359 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2360 b'debugpickmergetool',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2361 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2362 (b'r', b'rev', b'', _(b'check for files in this revision'), _(b'REV')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2363 (b'', b'changedelete', None, _(b'emulate merging change and delete')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2364 ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2365 + cmdutil.walkopts
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2366 + cmdutil.mergetoolopts,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2367 _(b'[PATTERN]...'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2368 inferrepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2369 )
32256
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2370 def debugpickmergetool(ui, repo, *pats, **opts):
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2371 """examine which merge tool is chosen for specified file
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2372
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2373 As described in :hg:`help merge-tools`, Mercurial examines
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2374 configurations below in this order to decide which merge tool is
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2375 chosen for specified file.
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2376
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2377 1. ``--tool`` option
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2378 2. ``HGMERGE`` environment variable
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2379 3. configurations in ``merge-patterns`` section
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2380 4. configuration of ``ui.merge``
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2381 5. configurations in ``merge-tools`` section
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2382 6. ``hgmerge`` tool (for historical reason only)
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2383 7. default tool for fallback (``:merge`` or ``:prompt``)
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2384
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2385 This command writes out examination result in the style below::
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2386
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2387 FILE = MERGETOOL
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2388
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2389 By default, all files known in the first parent context of the
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2390 working directory are examined. Use file patterns and/or -I/-X
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2391 options to limit target files. -r/--rev is also useful to examine
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2392 files in another context without actual updating to it.
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2393
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2394 With --debug, this command shows warning messages while matching
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2395 against ``merge-patterns`` and so on, too. It is recommended to
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2396 use this option with explicit file patterns and/or -I/-X options,
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2397 because this option increases amount of output per file according
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2398 to configurations in hgrc.
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2399
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2400 With -v/--verbose, this command shows configurations below at
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2401 first (only if specified).
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2402
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2403 - ``--tool`` option
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2404 - ``HGMERGE`` environment variable
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2405 - configuration of ``ui.merge``
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2406
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2407 If merge tool is chosen before matching against
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2408 ``merge-patterns``, this command can't show any helpful
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2409 information, even with --debug. In such case, information above is
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2410 useful to know why a merge tool is chosen.
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2411 """
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
2412 opts = pycompat.byteskwargs(opts)
32256
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2413 overrides = {}
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2414 if opts[b'tool']:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2415 overrides[(b'ui', b'forcemerge')] = opts[b'tool']
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2416 ui.notenoi18n(b'with --tool %r\n' % (pycompat.bytestr(opts[b'tool'])))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2417
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2418 with ui.configoverride(overrides, b'debugmergepatterns'):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2419 hgmerge = encoding.environ.get(b"HGMERGE")
32256
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2420 if hgmerge is not None:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2421 ui.notenoi18n(b'with HGMERGE=%r\n' % (pycompat.bytestr(hgmerge)))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2422 uimerge = ui.config(b"ui", b"merge")
32256
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2423 if uimerge:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2424 ui.notenoi18n(b'with ui.merge=%r\n' % (pycompat.bytestr(uimerge)))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2425
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2426 ctx = scmutil.revsingle(repo, opts.get(b'rev'))
32256
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2427 m = scmutil.match(ctx, pats, opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2428 changedelete = opts[b'changedelete']
32256
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2429 for path in ctx.walk(m):
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2430 fctx = ctx[path]
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2431 try:
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2432 if not ui.debugflag:
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2433 ui.pushbuffer(error=True)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2434 tool, toolpath = filemerge._picktool(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2435 repo,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2436 ui,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2437 path,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2438 fctx.isbinary(),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2439 b'l' in fctx.flags(),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2440 changedelete,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2441 )
32256
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2442 finally:
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2443 if not ui.debugflag:
9bc36198338e debugcommands: add debugpickmergetool to examine which merge tool is chosen
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32229
diff changeset
2444 ui.popbuffer()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2445 ui.write(b'%s = %s\n' % (path, tool))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2446
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2447
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2448 @command(b'debugpushkey', [], _(b'REPO NAMESPACE [KEY OLD NEW]'), norepo=True)
30946
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2449 def debugpushkey(ui, repopath, namespace, *keyinfo, **opts):
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2450 '''access the pushkey key/value protocol
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2451
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2452 With two args, list the keys in the given namespace.
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2453
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2454 With five args, set a key to new if it currently is set to old.
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2455 Reports success or failure.
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2456 '''
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2457
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2458 target = hg.peer(ui, {}, repopath)
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2459 if keyinfo:
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2460 key, old, new = keyinfo
37647
516b5a5edae3 exchange: use command executor for pushkey
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37645
diff changeset
2461 with target.commandexecutor() as e:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2462 r = e.callcommand(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2463 b'pushkey',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2464 {
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2465 b'namespace': namespace,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2466 b'key': key,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2467 b'old': old,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2468 b'new': new,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2469 },
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2470 ).result()
37647
516b5a5edae3 exchange: use command executor for pushkey
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37645
diff changeset
2471
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2472 ui.status(pycompat.bytestr(r) + b'\n')
30946
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2473 return not r
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2474 else:
43106
d783f945a701 py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43094
diff changeset
2475 for k, v in sorted(pycompat.iteritems(target.listkeys(namespace))):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2476 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2477 b"%s\t%s\n" % (stringutil.escapestr(k), stringutil.escapestr(v))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2478 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2479
30946
7103122495e2 debugcommands: move 'debugpushkey' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30940
diff changeset
2480
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2481 @command(b'debugpvec', [], _(b'A B'))
30947
3c766ca89377 debugcommands: move 'debugpvec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30946
diff changeset
2482 def debugpvec(ui, repo, a, b=None):
3c766ca89377 debugcommands: move 'debugpvec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30946
diff changeset
2483 ca = scmutil.revsingle(repo, a)
3c766ca89377 debugcommands: move 'debugpvec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30946
diff changeset
2484 cb = scmutil.revsingle(repo, b)
3c766ca89377 debugcommands: move 'debugpvec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30946
diff changeset
2485 pa = pvec.ctxpvec(ca)
3c766ca89377 debugcommands: move 'debugpvec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30946
diff changeset
2486 pb = pvec.ctxpvec(cb)
3c766ca89377 debugcommands: move 'debugpvec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30946
diff changeset
2487 if pa == pb:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2488 rel = b"="
30947
3c766ca89377 debugcommands: move 'debugpvec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30946
diff changeset
2489 elif pa > pb:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2490 rel = b">"
30947
3c766ca89377 debugcommands: move 'debugpvec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30946
diff changeset
2491 elif pa < pb:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2492 rel = b"<"
30947
3c766ca89377 debugcommands: move 'debugpvec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30946
diff changeset
2493 elif pa | pb:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2494 rel = b"|"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2495 ui.write(_(b"a: %s\n") % pa)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2496 ui.write(_(b"b: %s\n") % pb)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2497 ui.write(_(b"depth(a): %d depth(b): %d\n") % (pa._depth, pb._depth))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2498 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2499 _(b"delta: %d hdist: %d distance: %d relation: %s\n")
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2500 % (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2501 abs(pa._depth - pb._depth),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2502 pvec._hamming(pa._vec, pb._vec),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2503 pa.distance(pb),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2504 rel,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2505 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2506 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2507
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2508
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2509 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2510 b'debugrebuilddirstate|debugrebuildstate',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2511 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2512 (b'r', b'rev', b'', _(b'revision to rebuild to'), _(b'REV')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2513 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2514 b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2515 b'minimal',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2516 None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2517 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2518 b'only rebuild files that are inconsistent with '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2519 b'the working copy parent'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2520 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2521 ),
30948
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2522 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2523 _(b'[-r REV]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2524 )
30948
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2525 def debugrebuilddirstate(ui, repo, rev, **opts):
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2526 """rebuild the dirstate as it would look like for the given revision
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2527
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2528 If no revision is specified the first current parent will be used.
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2529
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2530 The dirstate will be set to the files of the given revision.
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2531 The actual working directory content or existing dirstate
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2532 information such as adds or removes is not considered.
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2533
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2534 ``minimal`` will only rebuild the dirstate status for files that claim to be
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2535 tracked but are not in the parent manifest, or that exist in the parent
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2536 manifest but are not in the dirstate. It will not change adds, removes, or
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2537 modified files that are in the working copy parent.
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2538
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2539 One use of this command is to make the next :hg:`status` invocation
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2540 check the actual file content.
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2541 """
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2542 ctx = scmutil.revsingle(repo, rev)
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2543 with repo.wlock():
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2544 dirstate = repo.dirstate
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2545 changedfiles = None
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2546 # See command doc for what minimal does.
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
2547 if opts.get('minimal'):
30948
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2548 manifestfiles = set(ctx.manifest().keys())
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2549 dirstatefiles = set(dirstate)
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2550 manifestonly = manifestfiles - dirstatefiles
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2551 dsonly = dirstatefiles - manifestfiles
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2552 dsnotadded = set(f for f in dsonly if dirstate[f] != b'a')
30948
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2553 changedfiles = manifestonly | dsnotadded
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2554
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2555 dirstate.rebuild(ctx.node(), ctx.manifest(), changedfiles)
cc2b537b1966 debugcommands: move 'debugrebuilddirstate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30947
diff changeset
2556
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2557
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2558 @command(b'debugrebuildfncache', [], b'')
30949
e7d7335819f4 debugcommands: move 'debugrebuildfncache' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30948
diff changeset
2559 def debugrebuildfncache(ui, repo):
e7d7335819f4 debugcommands: move 'debugrebuildfncache' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30948
diff changeset
2560 """rebuild the fncache file"""
e7d7335819f4 debugcommands: move 'debugrebuildfncache' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30948
diff changeset
2561 repair.rebuildfncache(ui, repo)
e7d7335819f4 debugcommands: move 'debugrebuildfncache' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30948
diff changeset
2562
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2563
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2564 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2565 b'debugrename',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2566 [(b'r', b'rev', b'', _(b'revision to debug'), _(b'REV'))],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2567 _(b'[-r REV] [FILE]...'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2568 )
41690
ea72da71ad69 debugrename: don't require at least one path
Martin von Zweigbergk <martinvonz@google.com>
parents: 41671
diff changeset
2569 def debugrename(ui, repo, *pats, **opts):
30950
7236f949ce3f debugcommands: move 'debugrename' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30949
diff changeset
2570 """dump rename information"""
7236f949ce3f debugcommands: move 'debugrename' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30949
diff changeset
2571
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
2572 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2573 ctx = scmutil.revsingle(repo, opts.get(b'rev'))
41690
ea72da71ad69 debugrename: don't require at least one path
Martin von Zweigbergk <martinvonz@google.com>
parents: 41671
diff changeset
2574 m = scmutil.match(ctx, pats, opts)
30950
7236f949ce3f debugcommands: move 'debugrename' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30949
diff changeset
2575 for abs in ctx.walk(m):
7236f949ce3f debugcommands: move 'debugrename' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30949
diff changeset
2576 fctx = ctx[abs]
7236f949ce3f debugcommands: move 'debugrename' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30949
diff changeset
2577 o = fctx.filelog().renamed(fctx.filenode())
41659
ecf7f4ef52fb debugwalk: avoid match.rel() and use repo.pathto() instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 41636
diff changeset
2578 rel = repo.pathto(abs)
30950
7236f949ce3f debugcommands: move 'debugrename' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30949
diff changeset
2579 if o:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2580 ui.write(_(b"%s renamed from %s:%s\n") % (rel, o[0], hex(o[1])))
30950
7236f949ce3f debugcommands: move 'debugrename' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30949
diff changeset
2581 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2582 ui.write(_(b"%s not renamed\n") % rel)
30950
7236f949ce3f debugcommands: move 'debugrename' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30949
diff changeset
2583
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2584
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2585 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2586 b'debugrevlog',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2587 cmdutil.debugrevlogopts + [(b'd', b'dump', False, _(b'dump index data'))],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2588 _(b'-c|-m|FILE'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2589 optionalrepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2590 )
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2591 def debugrevlog(ui, repo, file_=None, **opts):
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2592 """show data and statistics about a revlog"""
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
2593 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2594 r = cmdutil.openrevlog(repo, b'debugrevlog', file_, opts)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2595
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2596 if opts.get(b"dump"):
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2597 numrevs = len(r)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2598 ui.write(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2599 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2600 b"# rev p1rev p2rev start end deltastart base p1 p2"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2601 b" rawsize totalsize compression heads chainlen\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2602 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2603 )
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2604 ts = 0
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2605 heads = set()
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2606
38783
e7aa113b14f7 global: use pycompat.xrange()
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38781
diff changeset
2607 for rev in pycompat.xrange(numrevs):
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2608 dbase = r.deltaparent(rev)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2609 if dbase == -1:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2610 dbase = rev
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2611 cbase = r.chainbase(rev)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2612 clen = r.chainlen(rev)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2613 p1, p2 = r.parentrevs(rev)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2614 rs = r.rawsize(rev)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2615 ts = ts + rs
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2616 heads -= set(r.parentrevs(rev))
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2617 heads.add(rev)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2618 try:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2619 compression = ts / r.end(rev)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2620 except ZeroDivisionError:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2621 compression = 0
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2622 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2623 b"%5d %5d %5d %5d %5d %10d %4d %4d %4d %7d %9d "
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2624 b"%11d %5d %8d\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2625 % (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2626 rev,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2627 p1,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2628 p2,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2629 r.start(rev),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2630 r.end(rev),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2631 r.start(dbase),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2632 r.start(cbase),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2633 r.start(p1),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2634 r.start(p2),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2635 rs,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2636 ts,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2637 compression,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2638 len(heads),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2639 clen,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2640 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2641 )
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2642 return 0
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2643
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2644 v = r.version
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2645 format = v & 0xFFFF
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2646 flags = []
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2647 gdelta = False
32315
67026d65a4fc revlog: rename constants (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32265
diff changeset
2648 if v & revlog.FLAG_INLINE_DATA:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2649 flags.append(b'inline')
32315
67026d65a4fc revlog: rename constants (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32265
diff changeset
2650 if v & revlog.FLAG_GENERALDELTA:
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2651 gdelta = True
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2652 flags.append(b'generaldelta')
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2653 if not flags:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2654 flags = [b'(none)']
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2655
39080
5c99486fcfe1 debugrevlog: document some of the variable used
Boris Feld <boris.feld@octobus.net>
parents: 39065
diff changeset
2656 ### tracks merge vs single parent
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2657 nummerges = 0
39080
5c99486fcfe1 debugrevlog: document some of the variable used
Boris Feld <boris.feld@octobus.net>
parents: 39065
diff changeset
2658
5c99486fcfe1 debugrevlog: document some of the variable used
Boris Feld <boris.feld@octobus.net>
parents: 39065
diff changeset
2659 ### tracks ways the "delta" are build
39081
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2660 # nodelta
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2661 numempty = 0
39082
a456c603a83d debugrevlog: display details about empty revision
Boris Feld <boris.feld@octobus.net>
parents: 39081
diff changeset
2662 numemptytext = 0
a456c603a83d debugrevlog: display details about empty revision
Boris Feld <boris.feld@octobus.net>
parents: 39081
diff changeset
2663 numemptydelta = 0
39080
5c99486fcfe1 debugrevlog: document some of the variable used
Boris Feld <boris.feld@octobus.net>
parents: 39065
diff changeset
2664 # full file content
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2665 numfull = 0
39151
07b82f55f351 debugrevlog: include information about intermediate snapshots
Boris Feld <boris.feld@octobus.net>
parents: 39148
diff changeset
2666 # intermediate snapshot against a prior snapshot
07b82f55f351 debugrevlog: include information about intermediate snapshots
Boris Feld <boris.feld@octobus.net>
parents: 39148
diff changeset
2667 numsemi = 0
39153
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2668 # snapshot count per depth
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2669 numsnapdepth = collections.defaultdict(lambda: 0)
39080
5c99486fcfe1 debugrevlog: document some of the variable used
Boris Feld <boris.feld@octobus.net>
parents: 39065
diff changeset
2670 # delta against previous revision
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2671 numprev = 0
39080
5c99486fcfe1 debugrevlog: document some of the variable used
Boris Feld <boris.feld@octobus.net>
parents: 39065
diff changeset
2672 # delta against first or second parent (not prev)
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2673 nump1 = 0
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2674 nump2 = 0
39080
5c99486fcfe1 debugrevlog: document some of the variable used
Boris Feld <boris.feld@octobus.net>
parents: 39065
diff changeset
2675 # delta against neither prev nor parents
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2676 numother = 0
39080
5c99486fcfe1 debugrevlog: document some of the variable used
Boris Feld <boris.feld@octobus.net>
parents: 39065
diff changeset
2677 # delta against prev that are also first or second parent
5c99486fcfe1 debugrevlog: document some of the variable used
Boris Feld <boris.feld@octobus.net>
parents: 39065
diff changeset
2678 # (details of `numprev`)
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2679 nump1prev = 0
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2680 nump2prev = 0
39080
5c99486fcfe1 debugrevlog: document some of the variable used
Boris Feld <boris.feld@octobus.net>
parents: 39065
diff changeset
2681
5c99486fcfe1 debugrevlog: document some of the variable used
Boris Feld <boris.feld@octobus.net>
parents: 39065
diff changeset
2682 # data about delta chain of each revs
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2683 chainlengths = []
33057
03eefca3ed33 debugrevlog: also display the largest delta chain span
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33031
diff changeset
2684 chainbases = []
03eefca3ed33 debugrevlog: also display the largest delta chain span
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33031
diff changeset
2685 chainspans = []
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2686
39080
5c99486fcfe1 debugrevlog: document some of the variable used
Boris Feld <boris.feld@octobus.net>
parents: 39065
diff changeset
2687 # data about each revision
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2688 datasize = [None, 0, 0]
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2689 fullsize = [None, 0, 0]
39151
07b82f55f351 debugrevlog: include information about intermediate snapshots
Boris Feld <boris.feld@octobus.net>
parents: 39148
diff changeset
2690 semisize = [None, 0, 0]
39153
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2691 # snapshot count per depth
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2692 snapsizedepth = collections.defaultdict(lambda: [None, 0, 0])
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2693 deltasize = [None, 0, 0]
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2694 chunktypecounts = {}
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2695 chunktypesizes = {}
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2696
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2697 def addsize(size, l):
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2698 if l[0] is None or size < l[0]:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2699 l[0] = size
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2700 if size > l[1]:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2701 l[1] = size
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2702 l[2] += size
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2703
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2704 numrevs = len(r)
38783
e7aa113b14f7 global: use pycompat.xrange()
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38781
diff changeset
2705 for rev in pycompat.xrange(numrevs):
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2706 p1, p2 = r.parentrevs(rev)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2707 delta = r.deltaparent(rev)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2708 if format > 0:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2709 addsize(r.rawsize(rev), datasize)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2710 if p2 != nullrev:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2711 nummerges += 1
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2712 size = r.length(rev)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2713 if delta == nullrev:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2714 chainlengths.append(0)
33057
03eefca3ed33 debugrevlog: also display the largest delta chain span
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33031
diff changeset
2715 chainbases.append(r.start(rev))
03eefca3ed33 debugrevlog: also display the largest delta chain span
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33031
diff changeset
2716 chainspans.append(size)
39081
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2717 if size == 0:
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2718 numempty += 1
39082
a456c603a83d debugrevlog: display details about empty revision
Boris Feld <boris.feld@octobus.net>
parents: 39081
diff changeset
2719 numemptytext += 1
39081
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2720 else:
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2721 numfull += 1
39153
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2722 numsnapdepth[0] += 1
39081
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2723 addsize(size, fullsize)
39153
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2724 addsize(size, snapsizedepth[0])
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2725 else:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2726 chainlengths.append(chainlengths[delta] + 1)
33057
03eefca3ed33 debugrevlog: also display the largest delta chain span
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33031
diff changeset
2727 baseaddr = chainbases[delta]
03eefca3ed33 debugrevlog: also display the largest delta chain span
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33031
diff changeset
2728 revaddr = r.start(rev)
03eefca3ed33 debugrevlog: also display the largest delta chain span
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33031
diff changeset
2729 chainbases.append(baseaddr)
03eefca3ed33 debugrevlog: also display the largest delta chain span
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33031
diff changeset
2730 chainspans.append((revaddr - baseaddr) + size)
39081
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2731 if size == 0:
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2732 numempty += 1
39082
a456c603a83d debugrevlog: display details about empty revision
Boris Feld <boris.feld@octobus.net>
parents: 39081
diff changeset
2733 numemptydelta += 1
39151
07b82f55f351 debugrevlog: include information about intermediate snapshots
Boris Feld <boris.feld@octobus.net>
parents: 39148
diff changeset
2734 elif r.issnapshot(rev):
07b82f55f351 debugrevlog: include information about intermediate snapshots
Boris Feld <boris.feld@octobus.net>
parents: 39148
diff changeset
2735 addsize(size, semisize)
07b82f55f351 debugrevlog: include information about intermediate snapshots
Boris Feld <boris.feld@octobus.net>
parents: 39148
diff changeset
2736 numsemi += 1
39153
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2737 depth = r.snapshotdepth(rev)
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2738 numsnapdepth[depth] += 1
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2739 addsize(size, snapsizedepth[depth])
39081
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2740 else:
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2741 addsize(size, deltasize)
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2742 if delta == rev - 1:
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2743 numprev += 1
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2744 if delta == p1:
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2745 nump1prev += 1
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2746 elif delta == p2:
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2747 nump2prev += 1
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2748 elif delta == p1:
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2749 nump1 += 1
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2750 elif delta == p2:
39081
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2751 nump2 += 1
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2752 elif delta != nullrev:
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2753 numother += 1
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2754
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2755 # Obtain data on the raw chunks in the revlog.
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2756 if util.safehasattr(r, b'_getsegmentforrevs'):
39148
1464183343b3 debugrevlog: fix for non-manifest object
Boris Feld <boris.feld@octobus.net>
parents: 39082
diff changeset
2757 segment = r._getsegmentforrevs(rev, rev)[1]
1464183343b3 debugrevlog: fix for non-manifest object
Boris Feld <boris.feld@octobus.net>
parents: 39082
diff changeset
2758 else:
1464183343b3 debugrevlog: fix for non-manifest object
Boris Feld <boris.feld@octobus.net>
parents: 39082
diff changeset
2759 segment = r._revlog._getsegmentforrevs(rev, rev)[1]
32229
75e93d95aae6 revlog: rename _chunkraw to _getsegmentforrevs()
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32209
diff changeset
2760 if segment:
33106
2f812b0d1936 py3: pass the memoryview object into bytes() to get the value
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33102
diff changeset
2761 chunktype = bytes(segment[0:1])
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2762 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2763 chunktype = b'empty'
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2764
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2765 if chunktype not in chunktypecounts:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2766 chunktypecounts[chunktype] = 0
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2767 chunktypesizes[chunktype] = 0
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2768
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2769 chunktypecounts[chunktype] += 1
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2770 chunktypesizes[chunktype] += size
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2771
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2772 # Adjust size min value for empty cases
39151
07b82f55f351 debugrevlog: include information about intermediate snapshots
Boris Feld <boris.feld@octobus.net>
parents: 39148
diff changeset
2773 for size in (datasize, fullsize, semisize, deltasize):
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2774 if size[0] is None:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2775 size[0] = 0
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2776
39151
07b82f55f351 debugrevlog: include information about intermediate snapshots
Boris Feld <boris.feld@octobus.net>
parents: 39148
diff changeset
2777 numdeltas = numrevs - numfull - numempty - numsemi
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2778 numoprev = numprev - nump1prev - nump2prev
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2779 totalrawsize = datasize[2]
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2780 datasize[2] /= numrevs
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2781 fulltotal = fullsize[2]
42554
30033d56758f debugrevlog: fix average size computation for empty data (issue6167)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42145
diff changeset
2782 if numfull == 0:
30033d56758f debugrevlog: fix average size computation for empty data (issue6167)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42145
diff changeset
2783 fullsize[2] = 0
30033d56758f debugrevlog: fix average size computation for empty data (issue6167)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42145
diff changeset
2784 else:
30033d56758f debugrevlog: fix average size computation for empty data (issue6167)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42145
diff changeset
2785 fullsize[2] /= numfull
39151
07b82f55f351 debugrevlog: include information about intermediate snapshots
Boris Feld <boris.feld@octobus.net>
parents: 39148
diff changeset
2786 semitotal = semisize[2]
39153
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2787 snaptotal = {}
40029
e2697acd9381 cleanup: some Yoda conditions, this patch removes
Martin von Zweigbergk <martinvonz@google.com>
parents: 40017
diff changeset
2788 if numsemi > 0:
39151
07b82f55f351 debugrevlog: include information about intermediate snapshots
Boris Feld <boris.feld@octobus.net>
parents: 39148
diff changeset
2789 semisize[2] /= numsemi
39153
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2790 for depth in snapsizedepth:
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2791 snaptotal[depth] = snapsizedepth[depth][2]
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2792 snapsizedepth[depth][2] /= numsnapdepth[depth]
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2793
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2794 deltatotal = deltasize[2]
39081
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2795 if numdeltas > 0:
195ed920653e debugrevlog: track empty revlog entries
Boris Feld <boris.feld@octobus.net>
parents: 39080
diff changeset
2796 deltasize[2] /= numdeltas
39151
07b82f55f351 debugrevlog: include information about intermediate snapshots
Boris Feld <boris.feld@octobus.net>
parents: 39148
diff changeset
2797 totalsize = fulltotal + semitotal + deltatotal
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2798 avgchainlen = sum(chainlengths) / numrevs
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2799 maxchainlen = max(chainlengths)
33057
03eefca3ed33 debugrevlog: also display the largest delta chain span
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 33031
diff changeset
2800 maxchainspan = max(chainspans)
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2801 compratio = 1
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2802 if totalsize:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2803 compratio = totalrawsize / totalsize
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2804
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2805 basedfmtstr = b'%%%dd\n'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2806 basepcfmtstr = b'%%%dd %s(%%5.2f%%%%)\n'
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2807
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2808 def dfmtstr(max):
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2809 return basedfmtstr % len(str(max))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2810
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2811 def pcfmtstr(max, padding=0):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2812 return basepcfmtstr % (len(str(max)), b' ' * padding)
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2813
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2814 def pcfmt(value, total):
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2815 if total:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2816 return (value, 100 * float(value) / total)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2817 else:
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2818 return value, 100.0
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2819
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2820 ui.writenoi18n(b'format : %d\n' % format)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2821 ui.writenoi18n(b'flags : %s\n' % b', '.join(flags))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2822
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2823 ui.write(b'\n')
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2824 fmt = pcfmtstr(totalsize)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2825 fmt2 = dfmtstr(totalsize)
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2826 ui.writenoi18n(b'revisions : ' + fmt2 % numrevs)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2827 ui.writenoi18n(b' merges : ' + fmt % pcfmt(nummerges, numrevs))
43094
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2828 ui.writenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2829 b' normal : ' + fmt % pcfmt(numrevs - nummerges, numrevs)
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2830 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2831 ui.writenoi18n(b'revisions : ' + fmt2 % numrevs)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2832 ui.writenoi18n(b' empty : ' + fmt % pcfmt(numempty, numrevs))
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2833 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2834 b' text : '
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2835 + fmt % pcfmt(numemptytext, numemptytext + numemptydelta)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2836 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2837 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2838 b' delta : '
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2839 + fmt % pcfmt(numemptydelta, numemptytext + numemptydelta)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2840 )
43094
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2841 ui.writenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2842 b' snapshot : ' + fmt % pcfmt(numfull + numsemi, numrevs)
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2843 )
39153
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2844 for depth in sorted(numsnapdepth):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2845 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2846 (b' lvl-%-3d : ' % depth)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2847 + fmt % pcfmt(numsnapdepth[depth], numrevs)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2848 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2849 ui.writenoi18n(b' deltas : ' + fmt % pcfmt(numdeltas, numrevs))
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2850 ui.writenoi18n(b'revision size : ' + fmt2 % totalsize)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2851 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2852 b' snapshot : ' + fmt % pcfmt(fulltotal + semitotal, totalsize)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2853 )
39153
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2854 for depth in sorted(numsnapdepth):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2855 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2856 (b' lvl-%-3d : ' % depth)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2857 + fmt % pcfmt(snaptotal[depth], totalsize)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2858 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2859 ui.writenoi18n(b' deltas : ' + fmt % pcfmt(deltatotal, totalsize))
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2860
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2861 def fmtchunktype(chunktype):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2862 if chunktype == b'empty':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2863 return b' %s : ' % chunktype
33107
e88fdec9cb9e py3: use pycompat.bytestr() to convert str to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33106
diff changeset
2864 elif chunktype in pycompat.bytestr(string.ascii_letters):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2865 return b' 0x%s (%s) : ' % (hex(chunktype), chunktype)
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2866 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2867 return b' 0x%s : ' % hex(chunktype)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2868
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2869 ui.write(b'\n')
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2870 ui.writenoi18n(b'chunks : ' + fmt2 % numrevs)
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2871 for chunktype in sorted(chunktypecounts):
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2872 ui.write(fmtchunktype(chunktype))
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2873 ui.write(fmt % pcfmt(chunktypecounts[chunktype], numrevs))
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2874 ui.writenoi18n(b'chunks size : ' + fmt2 % totalsize)
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2875 for chunktype in sorted(chunktypecounts):
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2876 ui.write(fmtchunktype(chunktype))
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2877 ui.write(fmt % pcfmt(chunktypesizes[chunktype], totalsize))
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2878
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2879 ui.write(b'\n')
33062
e21b750c9b9e debugrevlog: align chain length, reach, and compression ratio
Yuya Nishihara <yuya@tcha.org>
parents: 33057
diff changeset
2880 fmt = dfmtstr(max(avgchainlen, maxchainlen, maxchainspan, compratio))
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2881 ui.writenoi18n(b'avg chain length : ' + fmt % avgchainlen)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2882 ui.writenoi18n(b'max chain length : ' + fmt % maxchainlen)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2883 ui.writenoi18n(b'max chain reach : ' + fmt % maxchainspan)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2884 ui.writenoi18n(b'compression ratio : ' + fmt % compratio)
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2885
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2886 if format > 0:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2887 ui.write(b'\n')
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2888 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2889 b'uncompressed data size (min/max/avg) : %d / %d / %d\n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2890 % tuple(datasize)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2891 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2892 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2893 b'full revision size (min/max/avg) : %d / %d / %d\n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2894 % tuple(fullsize)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2895 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2896 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2897 b'inter-snapshot size (min/max/avg) : %d / %d / %d\n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2898 % tuple(semisize)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2899 )
39153
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2900 for depth in sorted(snapsizedepth):
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2901 if depth == 0:
9d6fab487c13 debugrevlog: display snapshot details per depth
Boris Feld <boris.feld@octobus.net>
parents: 39151
diff changeset
2902 continue
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2903 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2904 b' level-%-3d (min/max/avg) : %d / %d / %d\n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2905 % ((depth,) + tuple(snapsizedepth[depth]))
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2906 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2907 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2908 b'delta size (min/max/avg) : %d / %d / %d\n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2909 % tuple(deltasize)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2910 )
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2911
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2912 if numdeltas > 0:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2913 ui.write(b'\n')
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2914 fmt = pcfmtstr(numdeltas)
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2915 fmt2 = pcfmtstr(numdeltas, 4)
43094
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2916 ui.writenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2917 b'deltas against prev : ' + fmt % pcfmt(numprev, numdeltas)
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2918 )
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2919 if numprev > 0:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2920 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2921 b' where prev = p1 : ' + fmt2 % pcfmt(nump1prev, numprev)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2922 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2923 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2924 b' where prev = p2 : ' + fmt2 % pcfmt(nump2prev, numprev)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2925 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2926 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2927 b' other : ' + fmt2 % pcfmt(numoprev, numprev)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2928 )
30951
f44b96aef81b debugcommands: move 'debugrevlog' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30950
diff changeset
2929 if gdelta:
43094
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2930 ui.writenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2931 b'deltas against p1 : ' + fmt % pcfmt(nump1, numdeltas)
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2932 )
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2933 ui.writenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2934 b'deltas against p2 : ' + fmt % pcfmt(nump2, numdeltas)
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
2935 )
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2936 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2937 b'deltas against other : ' + fmt % pcfmt(numother, numdeltas)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2938 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2939
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2940
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2941 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2942 b'debugrevlogindex',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2943 cmdutil.debugrevlogopts
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2944 + [(b'f', b'format', 0, _(b'revlog format'), _(b'FORMAT'))],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2945 _(b'[-f FORMAT] -c|-m|FILE'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2946 optionalrepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2947 )
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2948 def debugrevlogindex(ui, repo, file_=None, **opts):
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2949 """dump the contents of a revlog index"""
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2950 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2951 r = cmdutil.openrevlog(repo, b'debugrevlogindex', file_, opts)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2952 format = opts.get(b'format', 0)
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2953 if format not in (0, 1):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2954 raise error.Abort(_(b"unknown format %d") % format)
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2955
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2956 if ui.debugflag:
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2957 shortfn = hex
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2958 else:
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2959 shortfn = short
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2960
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2961 # There might not be anything in r, so have a sane default
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2962 idlen = 12
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2963 for i in r:
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2964 idlen = len(shortfn(r.node(i)))
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2965 break
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2966
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2967 if format == 0:
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2968 if ui.verbose:
43116
defabf63e969 debugcommands: add a few more writenoi18n()
Martin von Zweigbergk <martinvonz@google.com>
parents: 43106
diff changeset
2969 ui.writenoi18n(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43116
diff changeset
2970 b" rev offset length linkrev %s %s p2\n"
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2971 % (b"nodeid".ljust(idlen), b"p1".ljust(idlen))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2972 )
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2973 else:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2974 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2975 b" rev linkrev %s %s p2\n"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2976 % (b"nodeid".ljust(idlen), b"p1".ljust(idlen))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2977 )
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2978 elif format == 1:
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2979 if ui.verbose:
43116
defabf63e969 debugcommands: add a few more writenoi18n()
Martin von Zweigbergk <martinvonz@google.com>
parents: 43106
diff changeset
2980 ui.writenoi18n(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2981 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2982 b" rev flag offset length size link p1"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2983 b" p2 %s\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2984 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2985 % b"nodeid".rjust(idlen)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2986 )
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2987 else:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
2988 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2989 b" rev flag size link p1 p2 %s\n"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
2990 % b"nodeid".rjust(idlen)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
2991 )
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2992
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2993 for i in r:
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2994 node = r.node(i)
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2995 if format == 0:
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2996 try:
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2997 pp = r.parents(node)
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2998 except Exception:
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
2999 pp = [nullid, nullid]
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
3000 if ui.verbose:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3001 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3002 b"% 6d % 9d % 7d % 7d %s %s %s\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3003 % (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3004 i,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3005 r.start(i),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3006 r.length(i),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3007 r.linkrev(i),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3008 shortfn(node),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3009 shortfn(pp[0]),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3010 shortfn(pp[1]),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3011 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3012 )
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
3013 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3014 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3015 b"% 6d % 7d %s %s %s\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3016 % (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3017 i,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3018 r.linkrev(i),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3019 shortfn(node),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3020 shortfn(pp[0]),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3021 shortfn(pp[1]),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3022 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3023 )
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
3024 elif format == 1:
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
3025 pr = r.parentrevs(i)
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
3026 if ui.verbose:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3027 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3028 b"% 6d %04x % 8d % 8d % 8d % 6d % 6d % 6d %s\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3029 % (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3030 i,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3031 r.flags(i),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3032 r.start(i),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3033 r.length(i),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3034 r.rawsize(i),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3035 r.linkrev(i),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3036 pr[0],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3037 pr[1],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3038 shortfn(node),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3039 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3040 )
39282
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39281
diff changeset
3041 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3042 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3043 b"% 6d %04x % 8d % 6d % 6d % 6d %s\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3044 % (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3045 i,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3046 r.flags(i),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3047 r.rawsize(i),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3048 r.linkrev(i),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3049 pr[0],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3050 pr[1],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3051 shortfn(node),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3052 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3053 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3054
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3055
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3056 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3057 b'debugrevspec',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3058 [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3059 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3060 b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3061 b'optimize',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3062 None,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3063 _(b'print parsed tree after optimizing (DEPRECATED)'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3064 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3065 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3066 b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3067 b'show-revs',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3068 True,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3069 _(b'print list of result revisions (default)'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3070 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3071 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3072 b's',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3073 b'show-set',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3074 None,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3075 _(b'print internal representation of result set'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3076 ),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3077 (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3078 b'p',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3079 b'show-stage',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3080 [],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3081 _(b'print parsed tree at the given stage'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3082 _(b'NAME'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3083 ),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3084 (b'', b'no-optimized', False, _(b'evaluate tree without optimization')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3085 (b'', b'verify-optimized', False, _(b'verify optimized result')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3086 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3087 b'REVSPEC',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3088 )
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3089 def debugrevspec(ui, repo, expr, **opts):
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3090 """parse and apply a revision specification
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3091
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3092 Use -p/--show-stage option to print the parsed tree at the given stages.
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3093 Use -p all to print tree at every stage.
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3094
32797
bcca357bb792 debugrevspec: add option to suppress list of computed revisions
Yuya Nishihara <yuya@tcha.org>
parents: 32796
diff changeset
3095 Use --no-show-revs option with -s or -p to print only the set
bcca357bb792 debugrevspec: add option to suppress list of computed revisions
Yuya Nishihara <yuya@tcha.org>
parents: 32796
diff changeset
3096 representation or the parsed tree respectively.
bcca357bb792 debugrevspec: add option to suppress list of computed revisions
Yuya Nishihara <yuya@tcha.org>
parents: 32796
diff changeset
3097
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3098 Use --verify-optimized to compare the optimized result with the unoptimized
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3099 one. Returns 1 if the optimized result differs.
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3100 """
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
3101 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3102 aliases = ui.configitems(b'revsetalias')
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3103 stages = [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3104 (b'parsed', lambda tree: tree),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3105 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3106 b'expanded',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3107 lambda tree: revsetlang.expandaliases(tree, aliases, ui.warn),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3108 ),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3109 (b'concatenated', revsetlang.foldconcat),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3110 (b'analyzed', revsetlang.analyze),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3111 (b'optimized', revsetlang.optimize),
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3112 ]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3113 if opts[b'no_optimized']:
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3114 stages = stages[:-1]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3115 if opts[b'verify_optimized'] and opts[b'no_optimized']:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3116 raise error.Abort(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43116
diff changeset
3117 _(b'cannot use --verify-optimized with --no-optimized')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3118 )
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3119 stagenames = set(n for n, f in stages)
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3120
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3121 showalways = set()
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3122 showchanged = set()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3123 if ui.verbose and not opts[b'show_stage']:
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3124 # show parsed tree by --verbose (deprecated)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3125 showalways.add(b'parsed')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3126 showchanged.update([b'expanded', b'concatenated'])
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3127 if opts[b'optimize']:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3128 showalways.add(b'optimized')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3129 if opts[b'show_stage'] and opts[b'optimize']:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3130 raise error.Abort(_(b'cannot use --optimize with --show-stage'))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3131 if opts[b'show_stage'] == [b'all']:
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3132 showalways.update(stagenames)
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3133 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3134 for n in opts[b'show_stage']:
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3135 if n not in stagenames:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3136 raise error.Abort(_(b'invalid stage name: %s') % n)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3137 showalways.update(opts[b'show_stage'])
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3138
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3139 treebystage = {}
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3140 printedtree = None
37350
e32dfff71529 revset: use revsymbol() for checking if a symbol is valid
Martin von Zweigbergk <martinvonz@google.com>
parents: 37322
diff changeset
3141 tree = revsetlang.parse(expr, lookup=revset.lookupfn(repo))
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3142 for n, f in stages:
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3143 treebystage[n] = tree = f(tree)
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3144 if n in showalways or (n in showchanged and tree != printedtree):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3145 if opts[b'show_stage'] or n != b'parsed':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3146 ui.write(b"* %s:\n" % n)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3147 ui.write(revsetlang.prettyformat(tree), b"\n")
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3148 printedtree = tree
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3149
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3150 if opts[b'verify_optimized']:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3151 arevs = revset.makematcher(treebystage[b'analyzed'])(repo)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3152 brevs = revset.makematcher(treebystage[b'optimized'])(repo)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3153 if opts[b'show_set'] or (opts[b'show_set'] is None and ui.verbose):
43094
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
3154 ui.writenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
3155 b"* analyzed set:\n", stringutil.prettyrepr(arevs), b"\n"
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
3156 )
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
3157 ui.writenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
3158 b"* optimized set:\n", stringutil.prettyrepr(brevs), b"\n"
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
3159 )
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3160 arevs = list(arevs)
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3161 brevs = list(brevs)
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3162 if arevs == brevs:
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3163 return 0
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3164 ui.writenoi18n(b'--- analyzed\n', label=b'diff.file_a')
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3165 ui.writenoi18n(b'+++ optimized\n', label=b'diff.file_b')
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3166 sm = difflib.SequenceMatcher(None, arevs, brevs)
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3167 for tag, alo, ahi, blo, bhi in sm.get_opcodes():
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
3168 if tag in ('delete', 'replace'):
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3169 for c in arevs[alo:ahi]:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3170 ui.write(b'-%d\n' % c, label=b'diff.deleted')
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
3171 if tag in ('insert', 'replace'):
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3172 for c in brevs[blo:bhi]:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3173 ui.write(b'+%d\n' % c, label=b'diff.inserted')
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
3174 if tag == 'equal':
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3175 for c in arevs[alo:ahi]:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3176 ui.write(b' %d\n' % c)
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3177 return 1
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3178
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3179 func = revset.makematcher(tree)
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3180 revs = func(repo)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3181 if opts[b'show_set'] or (opts[b'show_set'] is None and ui.verbose):
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3182 ui.writenoi18n(b"* set:\n", stringutil.prettyrepr(revs), b"\n")
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3183 if not opts[b'show_revs']:
32797
bcca357bb792 debugrevspec: add option to suppress list of computed revisions
Yuya Nishihara <yuya@tcha.org>
parents: 32796
diff changeset
3184 return
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3185 for c in revs:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3186 ui.write(b"%d\n" % c)
30952
85c3c879c43a debugcommands: move 'debugrevspec' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30951
diff changeset
3187
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3188
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3189 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3190 b'debugserve',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3191 [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3192 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3193 b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3194 b'sshstdio',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3195 False,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3196 _(b'run an SSH server bound to process handles'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3197 ),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3198 (b'', b'logiofd', b'', _(b'file descriptor to log server I/O to')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3199 (b'', b'logiofile', b'', _(b'file to log server I/O to')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3200 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3201 b'',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3202 )
36527
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3203 def debugserve(ui, repo, **opts):
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3204 """run a server with advanced settings
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3205
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3206 This command is similar to :hg:`serve`. It exists partially as a
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3207 workaround to the fact that ``hg serve --stdio`` must have specific
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3208 arguments for security reasons.
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3209 """
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3210 opts = pycompat.byteskwargs(opts)
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3211
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3212 if not opts[b'sshstdio']:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3213 raise error.Abort(_(b'only --sshstdio is currently supported'))
36527
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3214
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3215 logfh = None
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3216
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3217 if opts[b'logiofd'] and opts[b'logiofile']:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3218 raise error.Abort(_(b'cannot use both --logiofd and --logiofile'))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3219
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3220 if opts[b'logiofd']:
36527
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3221 # Line buffered because output is line based.
38313
275cc461b854 debugcommands: work around logiofd being a pipe and unseekable
Augie Fackler <augie@google.com>
parents: 38263
diff changeset
3222 try:
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
3223 logfh = os.fdopen(int(opts[b'logiofd']), 'ab', 1)
38313
275cc461b854 debugcommands: work around logiofd being a pipe and unseekable
Augie Fackler <augie@google.com>
parents: 38263
diff changeset
3224 except OSError as e:
275cc461b854 debugcommands: work around logiofd being a pipe and unseekable
Augie Fackler <augie@google.com>
parents: 38263
diff changeset
3225 if e.errno != errno.ESPIPE:
275cc461b854 debugcommands: work around logiofd being a pipe and unseekable
Augie Fackler <augie@google.com>
parents: 38263
diff changeset
3226 raise
275cc461b854 debugcommands: work around logiofd being a pipe and unseekable
Augie Fackler <augie@google.com>
parents: 38263
diff changeset
3227 # can't seek a pipe, so `ab` mode fails on py3
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
3228 logfh = os.fdopen(int(opts[b'logiofd']), 'wb', 1)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3229 elif opts[b'logiofile']:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3230 logfh = open(opts[b'logiofile'], b'ab', 1)
36527
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3231
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3232 s = wireprotoserver.sshserver(ui, repo, logfh=logfh)
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3233 s.serve_forever()
44dc34b8d17b debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36492
diff changeset
3234
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3235
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3236 @command(b'debugsetparents', [], _(b'REV1 [REV2]'))
30953
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3237 def debugsetparents(ui, repo, rev1, rev2=None):
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3238 """manually set the parents of the current working directory
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3239
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3240 This is useful for writing repository conversion tools, but should
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3241 be used with care. For example, neither the working directory nor the
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3242 dirstate is updated, so file status may be incorrect after running this
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3243 command.
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3244
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3245 Returns 0 on success.
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3246 """
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3247
37143
8bac14ce5778 debugsetparents: avoid using "r1/r2" variable names for nodeids
Martin von Zweigbergk <martinvonz@google.com>
parents: 37120
diff changeset
3248 node1 = scmutil.revsingle(repo, rev1).node()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3249 node2 = scmutil.revsingle(repo, rev2, b'null').node()
30953
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3250
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3251 with repo.wlock():
37143
8bac14ce5778 debugsetparents: avoid using "r1/r2" variable names for nodeids
Martin von Zweigbergk <martinvonz@google.com>
parents: 37120
diff changeset
3252 repo.setparents(node1, node2)
30953
5b09e9bc0902 debugcommands: move 'debugsetparents' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30952
diff changeset
3253
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3254
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3255 @command(b'debugsidedata', cmdutil.debugrevlogopts, _(b'-c|-m|FILE REV'))
43041
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3256 def debugsidedata(ui, repo, file_, rev=None, **opts):
43136
ba5b062a1388 debugsidedata: small doc improvement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43117
diff changeset
3257 """dump the side data for a cl/manifest/file revision
ba5b062a1388 debugsidedata: small doc improvement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43117
diff changeset
3258
ba5b062a1388 debugsidedata: small doc improvement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43117
diff changeset
3259 Use --verbose to dump the sidedata content."""
43041
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3260 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3261 if opts.get(b'changelog') or opts.get(b'manifest') or opts.get(b'dir'):
43041
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3262 if rev is not None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3263 raise error.CommandError(b'debugdata', _(b'invalid arguments'))
43041
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3264 file_, rev = None, file_
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3265 elif rev is None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3266 raise error.CommandError(b'debugdata', _(b'invalid arguments'))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3267 r = cmdutil.openstorage(repo, b'debugdata', file_, opts)
43041
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3268 r = getattr(r, '_revlog', r)
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3269 try:
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3270 sidedata = r.sidedata(r.lookup(rev))
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3271 except KeyError:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3272 raise error.Abort(_(b'invalid revision identifier %s') % rev)
43041
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3273 if sidedata:
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3274 sidedata = list(sidedata.items())
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3275 sidedata.sort()
43116
defabf63e969 debugcommands: add a few more writenoi18n()
Martin von Zweigbergk <martinvonz@google.com>
parents: 43106
diff changeset
3276 ui.writenoi18n(b'%d sidedata entries\n' % len(sidedata))
43041
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3277 for key, value in sidedata:
43116
defabf63e969 debugcommands: add a few more writenoi18n()
Martin von Zweigbergk <martinvonz@google.com>
parents: 43106
diff changeset
3278 ui.writenoi18n(b' entry-%04o size %d\n' % (key, len(value)))
43041
559ac8411f12 sidedata: add a debugsidedata command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42926
diff changeset
3279 if ui.verbose:
43116
defabf63e969 debugcommands: add a few more writenoi18n()
Martin von Zweigbergk <martinvonz@google.com>
parents: 43106
diff changeset
3280 ui.writenoi18n(b' %s\n' % stringutil.pprint(value))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3281
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3282
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3283 @command(b'debugssl', [], b'[SOURCE]', optionalrepo=True)
33493
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3284 def debugssl(ui, repo, source=None, **opts):
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3285 '''test a secure connection to a server
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3286
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3287 This builds the certificate chain for the server on Windows, installing the
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3288 missing intermediates and trusted root via Windows Update if necessary. It
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3289 does nothing on other platforms.
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3290
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3291 If SOURCE is omitted, the 'default' path will be used. If a URL is given,
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3292 that server is used. See :hg:`help urls` for more information.
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3293
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3294 If the update succeeds, retry the original operation. Otherwise, the cause
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3295 of the SSL error is likely another issue.
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3296 '''
34645
75979c8d4572 codemod: use pycompat.iswindows
Jun Wu <quark@fb.com>
parents: 34320
diff changeset
3297 if not pycompat.iswindows:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3298 raise error.Abort(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43116
diff changeset
3299 _(b'certificate chain building is only possible on Windows')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3300 )
33493
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3301
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3302 if not source:
34027
3c3066367d72 debugssl: allow a URL to be specified without a local repository
Matt Harbison <matt_harbison@yahoo.com>
parents: 33553
diff changeset
3303 if not repo:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3304 raise error.Abort(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3305 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3306 b"there is no Mercurial repository here, and no "
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3307 b"server specified"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3308 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3309 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3310 source = b"default"
33493
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3311
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3312 source, branches = hg.parseurl(ui.expandpath(source))
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3313 url = util.url(source)
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3314
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3315 defaultport = {b'https': 443, b'ssh': 22}
35425
88572b7e50fd debugssl: convert port number to int (issue5757)
Yuya Nishihara <yuya@tcha.org>
parents: 34645
diff changeset
3316 if url.scheme in defaultport:
88572b7e50fd debugssl: convert port number to int (issue5757)
Yuya Nishihara <yuya@tcha.org>
parents: 34645
diff changeset
3317 try:
88572b7e50fd debugssl: convert port number to int (issue5757)
Yuya Nishihara <yuya@tcha.org>
parents: 34645
diff changeset
3318 addr = (url.host, int(url.port or defaultport[url.scheme]))
88572b7e50fd debugssl: convert port number to int (issue5757)
Yuya Nishihara <yuya@tcha.org>
parents: 34645
diff changeset
3319 except ValueError:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3320 raise error.Abort(_(b"malformed port number in URL"))
33493
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3321 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3322 raise error.Abort(_(b"only https and ssh connections are supported"))
33493
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3323
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3324 from . import win32
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3325
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3326 s = ssl.wrap_socket(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3327 socket.socket(),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3328 ssl_version=ssl.PROTOCOL_TLS,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3329 cert_reqs=ssl.CERT_NONE,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3330 ca_certs=None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3331 )
33493
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3332
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3333 try:
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3334 s.connect(addr)
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3335 cert = s.getpeercert(True)
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3336
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3337 ui.status(_(b'checking the certificate chain for %s\n') % url.host)
33493
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3338
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3339 complete = win32.checkcertificatechain(cert, build=False)
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3340
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3341 if not complete:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3342 ui.status(_(b'certificate chain is incomplete, updating... '))
33493
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3343
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3344 if not win32.checkcertificatechain(cert):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3345 ui.status(_(b'failed.\n'))
33493
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3346 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3347 ui.status(_(b'done.\n'))
33493
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3348 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3349 ui.status(_(b'full certificate chain is available\n'))
33493
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3350 finally:
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3351 s.close()
9a9f95214f46 debug: add a method to check the state of, and built an SSL cert chain
Matt Harbison <matt_harbison@yahoo.com>
parents: 33438
diff changeset
3352
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3353
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3354 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3355 b'debugsub',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3356 [(b'r', b'rev', b'', _(b'revision to check'), _(b'REV'))],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3357 _(b'[-r REV] [REV]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3358 )
30955
8e38fa360a12 debugcommands: move 'debugsub' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30954
diff changeset
3359 def debugsub(ui, repo, rev=None):
8e38fa360a12 debugcommands: move 'debugsub' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30954
diff changeset
3360 ctx = scmutil.revsingle(repo, rev, None)
8e38fa360a12 debugcommands: move 'debugsub' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30954
diff changeset
3361 for k, v in sorted(ctx.substate.items()):
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3362 ui.writenoi18n(b'path %s\n' % k)
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3363 ui.writenoi18n(b' source %s\n' % v[0])
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3364 ui.writenoi18n(b' revision %s\n' % v[1])
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3365
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3366
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3367 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3368 b'debugsuccessorssets',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3369 [(b'', b'closest', False, _(b'return closest successors sets only'))],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3370 _(b'[REV]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3371 )
33274
68f3e819d41d obsolete: closest divergent support
Boris Feld <boris.feld@octobus.net>
parents: 33273
diff changeset
3372 def debugsuccessorssets(ui, repo, *revs, **opts):
30956
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3373 """show set of successors for revision
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3374
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3375 A successors set of changeset A is a consistent group of revisions that
33274
68f3e819d41d obsolete: closest divergent support
Boris Feld <boris.feld@octobus.net>
parents: 33273
diff changeset
3376 succeed A. It contains non-obsolete changesets only unless closests
68f3e819d41d obsolete: closest divergent support
Boris Feld <boris.feld@octobus.net>
parents: 33273
diff changeset
3377 successors set is set.
30956
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3378
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3379 In most cases a changeset A has a single successors set containing a single
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3380 successor (changeset A replaced by A').
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3381
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3382 A changeset that is made obsolete with no successors are called "pruned".
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3383 Such changesets have no successors sets at all.
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3384
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3385 A changeset that has been "split" will have a successors set containing
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3386 more than one successor.
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3387
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3388 A changeset that has been rewritten in multiple different ways is called
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3389 "divergent". Such changesets have multiple successor sets (each of which
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3390 may also be split, i.e. have multiple successors).
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3391
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3392 Results are displayed as follows::
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3393
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3394 <rev1>
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3395 <successors-1A>
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3396 <rev2>
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3397 <successors-2A>
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3398 <successors-2B1> <successors-2B2> <successors-2B3>
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3399
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3400 Here rev2 has two possible (i.e. divergent) successors sets. The first
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3401 holds one element, whereas the second holds three (i.e. the changeset has
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3402 been split).
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3403 """
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3404 # passed to successorssets caching computation from one call to another
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3405 cache = {}
36123
8eb13f5d5d3f py3: convert context to bytes instead of str
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35929
diff changeset
3406 ctx2str = bytes
30956
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3407 node2str = short
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3408 for rev in scmutil.revrange(repo, revs):
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3409 ctx = repo[rev]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3410 ui.write(b'%s\n' % ctx2str(ctx))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3411 for succsset in obsutil.successorssets(
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
3412 repo, ctx.node(), closest=opts['closest'], cache=cache
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3413 ):
30956
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3414 if succsset:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3415 ui.write(b' ')
30956
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3416 ui.write(node2str(succsset[0]))
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3417 for node in succsset[1:]:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3418 ui.write(b' ')
30956
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3419 ui.write(node2str(node))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3420 ui.write(b'\n')
30956
db30c6bfeb70 debugcommands: move 'debugsuccessorssets' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30955
diff changeset
3421
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3422
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3423 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3424 b'debugtemplate',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3425 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3426 (b'r', b'rev', [], _(b'apply template on changesets'), _(b'REV')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3427 (b'D', b'define', [], _(b'define template keyword'), _(b'KEY=VALUE')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3428 ],
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3429 _(b'[-r REV]... [-D KEY=VALUE]... TEMPLATE'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3430 optionalrepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3431 )
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3432 def debugtemplate(ui, repo, tmpl, **opts):
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3433 """parse and apply a template
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3434
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3435 If -r/--rev is given, the template is processed as a log template and
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3436 applied to the given changesets. Otherwise, it is processed as a generic
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3437 template.
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3438
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3439 Use --verbose to print the parsed tree.
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3440 """
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3441 revs = None
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
3442 if opts['rev']:
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3443 if repo is None:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3444 raise error.RepoError(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43116
diff changeset
3445 _(b'there is no Mercurial repository here (.hg not found)')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3446 )
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
3447 revs = scmutil.revrange(repo, opts['rev'])
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3448
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3449 props = {}
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
3450 for d in opts['define']:
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3451 try:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3452 k, v = (e.strip() for e in d.split(b'=', 1))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3453 if not k or k == b'ui':
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3454 raise ValueError
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3455 props[k] = v
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3456 except ValueError:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3457 raise error.Abort(_(b'malformed keyword definition: %s') % d)
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3458
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3459 if ui.verbose:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3460 aliases = ui.configitems(b'templatealias')
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3461 tree = templater.parse(tmpl)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3462 ui.note(templater.prettyformat(tree), b'\n')
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3463 newtree = templater.expandaliases(tree, aliases)
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3464 if newtree != tree:
43094
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
3465 ui.notenoi18n(
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
3466 b"* expanded:\n", templater.prettyformat(newtree), b'\n'
e8cf9ad52a78 formatting: run black on all file again
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43089
diff changeset
3467 )
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3468
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3469 if revs is None:
35469
f1c54d003327 templater: move repo, ui and cache to per-engine resources
Yuya Nishihara <yuya@tcha.org>
parents: 35465
diff changeset
3470 tres = formatter.templateresources(ui, repo)
f1c54d003327 templater: move repo, ui and cache to per-engine resources
Yuya Nishihara <yuya@tcha.org>
parents: 35465
diff changeset
3471 t = formatter.maketemplater(ui, tmpl, resources=tres)
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38313
diff changeset
3472 if ui.verbose:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38313
diff changeset
3473 kwds, funcs = t.symbolsuseddefault()
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3474 ui.writenoi18n(b"* keywords: %s\n" % b', '.join(sorted(kwds)))
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3475 ui.writenoi18n(b"* functions: %s\n" % b', '.join(sorted(funcs)))
36988
317382151ac3 templater: rename .render(mapping) to .renderdefault(mapping) (API)
Yuya Nishihara <yuya@tcha.org>
parents: 36954
diff changeset
3476 ui.write(t.renderdefault(props))
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3477 else:
35888
c8e2d6ed1f9e cmdutil: drop aliases for logcmdutil functions (API)
Yuya Nishihara <yuya@tcha.org>
parents: 35730
diff changeset
3478 displayer = logcmdutil.maketemplater(ui, repo, tmpl)
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38313
diff changeset
3479 if ui.verbose:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38313
diff changeset
3480 kwds, funcs = displayer.t.symbolsuseddefault()
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3481 ui.writenoi18n(b"* keywords: %s\n" % b', '.join(sorted(kwds)))
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3482 ui.writenoi18n(b"* functions: %s\n" % b', '.join(sorted(funcs)))
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3483 for r in revs:
33102
1b6946f87c50 py3: use pycompat.strkwargs() to convert kwargs keys to str
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33101
diff changeset
3484 displayer.show(repo[r], **pycompat.strkwargs(props))
30957
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3485 displayer.close()
14794735faa8 debugcommands: move 'debugtemplate' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30956
diff changeset
3486
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3487
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3488 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3489 b'debuguigetpass',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3490 [(b'p', b'prompt', b'', _(b'prompt text'), _(b'TEXT')),],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3491 _(b'[-p TEXT]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3492 norepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3493 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3494 def debuguigetpass(ui, prompt=b''):
36792
15c050b5d599 ui: add debug commands to test interactive prompt
Yuya Nishihara <yuya@tcha.org>
parents: 36781
diff changeset
3495 """show prompt to type password"""
15c050b5d599 ui: add debug commands to test interactive prompt
Yuya Nishihara <yuya@tcha.org>
parents: 36781
diff changeset
3496 r = ui.getpass(prompt)
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3497 ui.writenoi18n(b'respose: %s\n' % r)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3498
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3499
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3500 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3501 b'debuguiprompt',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3502 [(b'p', b'prompt', b'', _(b'prompt text'), _(b'TEXT')),],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3503 _(b'[-p TEXT]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3504 norepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3505 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3506 def debuguiprompt(ui, prompt=b''):
36792
15c050b5d599 ui: add debug commands to test interactive prompt
Yuya Nishihara <yuya@tcha.org>
parents: 36781
diff changeset
3507 """show plain prompt"""
15c050b5d599 ui: add debug commands to test interactive prompt
Yuya Nishihara <yuya@tcha.org>
parents: 36781
diff changeset
3508 r = ui.prompt(prompt)
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3509 ui.writenoi18n(b'response: %s\n' % r)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3510
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3511
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3512 @command(b'debugupdatecaches', [])
32265
ccef71de7d41 caches: introduce a 'debugupdatecaches' command
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32256
diff changeset
3513 def debugupdatecaches(ui, repo, *pats, **opts):
ccef71de7d41 caches: introduce a 'debugupdatecaches' command
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32256
diff changeset
3514 """warm all known caches in the repository"""
33438
8056481caa81 codemod: simplify nested withs
Jun Wu <quark@fb.com>
parents: 33336
diff changeset
3515 with repo.wlock(), repo.lock():
36952
b24cde12061b debugupdatecache: also warm rev branch cache
Boris Feld <boris.feld@octobus.net>
parents: 36951
diff changeset
3516 repo.updatecaches(full=True)
32265
ccef71de7d41 caches: introduce a 'debugupdatecaches' command
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32256
diff changeset
3517
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3518
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3519 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3520 b'debugupgraderepo',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3521 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3522 (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3523 b'o',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3524 b'optimize',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3525 [],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3526 _(b'extra optimization to perform'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3527 _(b'NAME'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3528 ),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3529 (b'', b'run', False, _(b'performs an upgrade')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3530 (b'', b'backup', True, _(b'keep the old repository content around')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3531 (b'', b'changelog', None, _(b'select the changelog for upgrade')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3532 (b'', b'manifest', None, _(b'select the manifest for upgrade')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3533 ],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3534 )
42830
cf2b765cecd7 upgrade: add an argument to control manifest upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42773
diff changeset
3535 def debugupgraderepo(ui, repo, run=False, optimize=None, backup=True, **opts):
30774
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3536 """upgrade a repository to use different features
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3537
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3538 If no arguments are specified, the repository is evaluated for upgrade
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3539 and a list of problems and potential optimizations is printed.
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3540
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3541 With ``--run``, a repository upgrade is performed. Behavior of the upgrade
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3542 can be influenced via additional arguments. More details will be provided
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3543 by the command output when run without ``--run``.
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3544
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3545 During the upgrade, the repository will be locked and no writes will be
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3546 allowed.
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3547
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3548 At the end of the upgrade, the repository may not be readable while new
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3549 repository data is swapped in. This window will be as long as it takes to
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3550 rename some directories inside the ``.hg`` directory. On most machines, this
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3551 should complete almost instantaneously and the chances of a consumer being
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3552 unable to access the repository should be low.
42830
cf2b765cecd7 upgrade: add an argument to control manifest upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42773
diff changeset
3553
cf2b765cecd7 upgrade: add an argument to control manifest upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42773
diff changeset
3554 By default, all revlog will be upgraded. You can restrict this using flag
cf2b765cecd7 upgrade: add an argument to control manifest upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42773
diff changeset
3555 such as `--manifest`:
cf2b765cecd7 upgrade: add an argument to control manifest upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42773
diff changeset
3556
cf2b765cecd7 upgrade: add an argument to control manifest upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42773
diff changeset
3557 * `--manifest`: only optimize the manifest
cf2b765cecd7 upgrade: add an argument to control manifest upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42773
diff changeset
3558 * `--no-manifest`: optimize all revlog but the manifest
42831
908ff446590e upgrade: add an argument to control changelog upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42830
diff changeset
3559 * `--changelog`: optimize the changelog only
908ff446590e upgrade: add an argument to control changelog upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42830
diff changeset
3560 * `--no-changelog --no-manifest`: optimize filelogs only
30774
eaa5607132a2 debugcommands: stub for debugupgraderepo command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30743
diff changeset
3561 """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3562 return upgrade.upgraderepo(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3563 ui, repo, run=run, optimize=optimize, backup=backup, **opts
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3564 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3565
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3566
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3567 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3568 b'debugwalk', cmdutil.walkopts, _(b'[OPTION]... [FILE]...'), inferrepo=True
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3569 )
30958
df73368c87c3 debugcommands: move 'debugwalk' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30957
diff changeset
3570 def debugwalk(ui, repo, *pats, **opts):
df73368c87c3 debugcommands: move 'debugwalk' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30957
diff changeset
3571 """show how files match on given patterns"""
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
3572 opts = pycompat.byteskwargs(opts)
30958
df73368c87c3 debugcommands: move 'debugwalk' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30957
diff changeset
3573 m = scmutil.match(repo[None], pats, opts)
38262
7c3a59e2971b debugwalk: show matcher output only if -v/--verbose
Yuya Nishihara <yuya@tcha.org>
parents: 38261
diff changeset
3574 if ui.verbose:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
3575 ui.writenoi18n(b'* matcher:\n', stringutil.prettyrepr(m), b'\n')
32363
a275186b989a debugcommands: use repo[None].walk instead of repo.walk
Augie Fackler <augie@google.com>
parents: 32337
diff changeset
3576 items = list(repo[None].walk(m))
30958
df73368c87c3 debugcommands: move 'debugwalk' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30957
diff changeset
3577 if not items:
df73368c87c3 debugcommands: move 'debugwalk' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30957
diff changeset
3578 return
df73368c87c3 debugcommands: move 'debugwalk' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30957
diff changeset
3579 f = lambda fn: fn
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3580 if ui.configbool(b'ui', b'slash') and pycompat.ossep != b'/':
30958
df73368c87c3 debugcommands: move 'debugwalk' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30957
diff changeset
3581 f = lambda fn: util.normpath(fn)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3582 fmt = b'f %%-%ds %%-%ds %%s' % (
30958
df73368c87c3 debugcommands: move 'debugwalk' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30957
diff changeset
3583 max([len(abs) for abs in items]),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3584 max([len(repo.pathto(abs)) for abs in items]),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3585 )
30958
df73368c87c3 debugcommands: move 'debugwalk' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30957
diff changeset
3586 for abs in items:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3587 line = fmt % (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3588 abs,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3589 f(repo.pathto(abs)),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3590 m.exact(abs) and b'exact' or b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3591 )
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3592 ui.write(b"%s\n" % line.rstrip())
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3593
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3594
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3595 @command(b'debugwhyunstable', [], _(b'REV'))
36954
efc4fb344c05 debug: add debugwhyunstable that explains instabilities
Anton Shestakov <av6@dwimlabs.net>
parents: 36952
diff changeset
3596 def debugwhyunstable(ui, repo, rev):
efc4fb344c05 debug: add debugwhyunstable that explains instabilities
Anton Shestakov <av6@dwimlabs.net>
parents: 36952
diff changeset
3597 """explain instabilities of a changeset"""
37396
9966f44ecab4 debugwhyunstable: add support for revsets
Martin von Zweigbergk <martinvonz@google.com>
parents: 37350
diff changeset
3598 for entry in obsutil.whyunstable(repo, scmutil.revsingle(repo, rev)):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3599 dnodes = b''
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3600 if entry.get(b'divergentnodes'):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3601 dnodes = (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3602 b' '.join(
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3603 b'%s (%s)' % (ctx.hex(), ctx.phasestr())
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3604 for ctx in entry[b'divergentnodes']
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3605 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3606 + b' '
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3607 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3608 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3609 b'%s: %s%s %s\n'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3610 % (entry[b'instability'], dnodes, entry[b'reason'], entry[b'node'])
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3611 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3612
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3613
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3614 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3615 b'debugwireargs',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3616 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3617 (b'', b'three', b'', b'three'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3618 (b'', b'four', b'', b'four'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3619 (b'', b'five', b'', b'five'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3620 ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3621 + cmdutil.remoteopts,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3622 _(b'REPO [OPTIONS]... [ONE [TWO]]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3623 norepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3624 )
30959
bd5694ce8beb debugcommands: move 'debugwireargs' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30958
diff changeset
3625 def debugwireargs(ui, repopath, *vals, **opts):
33100
05906b8e1d23 py3: use pycompat.byteskwargs() to convert kwargs' keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33062
diff changeset
3626 opts = pycompat.byteskwargs(opts)
30959
bd5694ce8beb debugcommands: move 'debugwireargs' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30958
diff changeset
3627 repo = hg.peer(ui, opts, repopath)
32375
04baab18d60a commands: move templates of common command options to cmdutil (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32371
diff changeset
3628 for opt in cmdutil.remoteopts:
30959
bd5694ce8beb debugcommands: move 'debugwireargs' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30958
diff changeset
3629 del opts[opt[1]]
bd5694ce8beb debugcommands: move 'debugwireargs' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30958
diff changeset
3630 args = {}
43106
d783f945a701 py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43094
diff changeset
3631 for k, v in pycompat.iteritems(opts):
30959
bd5694ce8beb debugcommands: move 'debugwireargs' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30958
diff changeset
3632 if v:
bd5694ce8beb debugcommands: move 'debugwireargs' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30958
diff changeset
3633 args[k] = v
35401
cd3392cb5818 py3: handle keyword arguments correctly in debugcommands.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35400
diff changeset
3634 args = pycompat.strkwargs(args)
30959
bd5694ce8beb debugcommands: move 'debugwireargs' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30958
diff changeset
3635 # run twice to check that we don't mess up the stream for the next command
bd5694ce8beb debugcommands: move 'debugwireargs' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30958
diff changeset
3636 res1 = repo.debugwireargs(*vals, **args)
bd5694ce8beb debugcommands: move 'debugwireargs' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30958
diff changeset
3637 res2 = repo.debugwireargs(*vals, **args)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3638 ui.write(b"%s\n" % res1)
30959
bd5694ce8beb debugcommands: move 'debugwireargs' in the new module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30958
diff changeset
3639 if res1 != res2:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3640 ui.warn(b"%s\n" % res2)
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3641
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3642
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3643 def _parsewirelangblocks(fh):
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3644 activeaction = None
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3645 blocklines = []
40174
64360202d5b2 debugcommands: support wrapping long lines
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40029
diff changeset
3646 lastindent = 0
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3647
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3648 for line in fh:
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3649 line = line.rstrip()
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3650 if not line:
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3651 continue
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3652
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3653 if line.startswith(b'#'):
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3654 continue
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3655
39062
efeeb73f54c3 debugcommands: fix a missing b prefix
Augie Fackler <augie@google.com>
parents: 38972
diff changeset
3656 if not line.startswith(b' '):
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3657 # New block. Flush previous one.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3658 if activeaction:
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3659 yield activeaction, blocklines
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3660
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3661 activeaction = line
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3662 blocklines = []
40174
64360202d5b2 debugcommands: support wrapping long lines
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40029
diff changeset
3663 lastindent = 0
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3664 continue
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3665
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3666 # Else we start with an indent.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3667
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3668 if not activeaction:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3669 raise error.Abort(_(b'indented line outside of block'))
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3670
40174
64360202d5b2 debugcommands: support wrapping long lines
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40029
diff changeset
3671 indent = len(line) - len(line.lstrip())
64360202d5b2 debugcommands: support wrapping long lines
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40029
diff changeset
3672
64360202d5b2 debugcommands: support wrapping long lines
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40029
diff changeset
3673 # If this line is indented more than the last line, concatenate it.
64360202d5b2 debugcommands: support wrapping long lines
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40029
diff changeset
3674 if indent > lastindent and blocklines:
64360202d5b2 debugcommands: support wrapping long lines
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40029
diff changeset
3675 blocklines[-1] += line.lstrip()
64360202d5b2 debugcommands: support wrapping long lines
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40029
diff changeset
3676 else:
64360202d5b2 debugcommands: support wrapping long lines
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40029
diff changeset
3677 blocklines.append(line)
64360202d5b2 debugcommands: support wrapping long lines
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40029
diff changeset
3678 lastindent = indent
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3679
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3680 # Flush last block.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3681 if activeaction:
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3682 yield activeaction, blocklines
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3683
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3684
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3685 @command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3686 b'debugwireproto',
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3687 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3688 (b'', b'localssh', False, _(b'start an SSH server for this repo')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3689 (b'', b'peer', b'', _(b'construct a specific version of the peer')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3690 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3691 b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3692 b'noreadstderr',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3693 False,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3694 _(b'do not read from stderr of the remote'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3695 ),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3696 (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3697 b'',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3698 b'nologhandshake',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3699 False,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3700 _(b'do not log I/O related to the peer handshake'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3701 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3702 ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3703 + cmdutil.remoteopts,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3704 _(b'[PATH]'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3705 optionalrepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3706 )
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
3707 def debugwireproto(ui, repo, path=None, **opts):
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3708 """send wire protocol commands to a server
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3709
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3710 This command can be used to issue wire protocol commands to remote
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3711 peers and to debug the raw data being exchanged.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3712
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3713 ``--localssh`` will start an SSH server against the current repository
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3714 and connect to that. By default, the connection will perform a handshake
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3715 and establish an appropriate peer instance.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3716
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3717 ``--peer`` can be used to bypass the handshake protocol and construct a
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3718 peer instance using the specified class type. Valid values are ``raw``,
37483
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
3719 ``http2``, ``ssh1``, and ``ssh2``. ``raw`` instances only allow sending
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
3720 raw data payloads and don't support higher-level command actions.
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3721
36534
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3722 ``--noreadstderr`` can be used to disable automatic reading from stderr
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3723 of the peer (for SSH connections only). Disabling automatic reading of
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3724 stderr is useful for making output more deterministic.
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3725
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3726 Commands are issued via a mini language which is specified via stdin.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3727 The language consists of individual actions to perform. An action is
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3728 defined by a block. A block is defined as a line with no leading
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3729 space followed by 0 or more lines with leading space. Blocks are
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3730 effectively a high-level command with additional metadata.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3731
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3732 Lines beginning with ``#`` are ignored.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3733
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3734 The following sections denote available actions.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3735
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3736 raw
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3737 ---
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3738
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3739 Send raw data to the server.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3740
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3741 The block payload contains the raw data to send as one atomic send
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3742 operation. The data may not actually be delivered in a single system
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3743 call: it depends on the abilities of the transport being used.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3744
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3745 Each line in the block is de-indented and concatenated. Then, that
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3746 value is evaluated as a Python b'' literal. This allows the use of
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3747 backslash escaping, etc.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3748
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3749 raw+
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3750 ----
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3751
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3752 Behaves like ``raw`` except flushes output afterwards.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3753
36530
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3754 command <X>
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3755 -----------
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3756
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3757 Send a request to run a named command, whose name follows the ``command``
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3758 string.
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3759
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3760 Arguments to the command are defined as lines in this block. The format of
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3761 each line is ``<key> <value>``. e.g.::
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3762
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3763 command listkeys
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3764 namespace bookmarks
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3765
37483
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
3766 If the value begins with ``eval:``, it will be interpreted as a Python
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
3767 literal expression. Otherwise values are interpreted as Python b'' literals.
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
3768 This allows sending complex types and encoding special byte sequences via
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
3769 backslash escaping.
36530
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
3770
36534
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3771 The following arguments have special meaning:
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3772
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3773 ``PUSHFILE``
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3774 When defined, the *push* mechanism of the peer will be used instead
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3775 of the static request-response mechanism and the content of the
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3776 file specified in the value of this argument will be sent as the
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3777 command payload.
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3778
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3779 This can be used to submit a local bundle file to the remote.
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
3780
36531
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3781 batchbegin
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3782 ----------
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3783
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3784 Instruct the peer to begin a batched send.
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3785
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3786 All ``command`` blocks are queued for execution until the next
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3787 ``batchsubmit`` block.
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3788
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3789 batchsubmit
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3790 -----------
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3791
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3792 Submit previously queued ``command`` blocks as a batch request.
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3793
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3794 This action MUST be paired with a ``batchbegin`` action.
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
3795
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3796 httprequest <method> <path>
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3797 ---------------------------
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3798
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3799 (HTTP peer only)
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3800
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3801 Send an HTTP request to the peer.
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3802
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3803 The HTTP request line follows the ``httprequest`` action. e.g. ``GET /foo``.
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3804
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3805 Arguments of the form ``<key>: <value>`` are interpreted as HTTP request
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3806 headers to add to the request. e.g. ``Accept: foo``.
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3807
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3808 The following arguments are special:
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3809
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3810 ``BODYFILE``
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3811 The content of the file defined as the value to this argument will be
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3812 transferred verbatim as the HTTP request body.
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3813
37051
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3814 ``frame <type> <flags> <payload>``
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3815 Send a unified protocol frame as part of the request body.
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3816
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3817 All frames will be collected and sent as the body to the HTTP
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3818 request.
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3819
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3820 close
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3821 -----
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3822
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3823 Close the connection to the server.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3824
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3825 flush
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3826 -----
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3827
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3828 Flush data written to the server.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3829
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3830 readavailable
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3831 -------------
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3832
36843
31581528f242 debugwireproto: close the write end before consuming all available data
Yuya Nishihara <yuya@tcha.org>
parents: 36835
diff changeset
3833 Close the write end of the connection and read all available data from
31581528f242 debugwireproto: close the write end before consuming all available data
Yuya Nishihara <yuya@tcha.org>
parents: 36835
diff changeset
3834 the server.
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3835
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3836 If the connection to the server encompasses multiple pipes, we poll both
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3837 pipes and read available data.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3838
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3839 readline
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3840 --------
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3841
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3842 Read a line of output from the server. If there are multiple output
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3843 pipes, reads only the main pipe.
37007
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3844
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3845 ereadline
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3846 ---------
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3847
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3848 Like ``readline``, but read from the stderr pipe, if available.
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3849
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3850 read <X>
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3851 --------
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3852
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3853 ``read()`` N bytes from the server's main output pipe.
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3854
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3855 eread <X>
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3856 ---------
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3857
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
3858 ``read()`` N bytes from the server's stderr pipe, if available.
37051
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3859
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3860 Specifying Unified Frame-Based Protocol Frames
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3861 ----------------------------------------------
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3862
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3863 It is possible to emit a *Unified Frame-Based Protocol* by using special
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3864 syntax.
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3865
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3866 A frame is composed as a type, flags, and payload. These can be parsed
37288
9bfcbe4f4745 wireproto: add streams to frame-based protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37283
diff changeset
3867 from a string of the form:
9bfcbe4f4745 wireproto: add streams to frame-based protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37283
diff changeset
3868
9bfcbe4f4745 wireproto: add streams to frame-based protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37283
diff changeset
3869 <request-id> <stream-id> <stream-flags> <type> <flags> <payload>
9bfcbe4f4745 wireproto: add streams to frame-based protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37283
diff changeset
3870
9bfcbe4f4745 wireproto: add streams to frame-based protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37283
diff changeset
3871 ``request-id`` and ``stream-id`` are integers defining the request and
9bfcbe4f4745 wireproto: add streams to frame-based protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37283
diff changeset
3872 stream identifiers.
37057
2ec1fb9de638 wireproto: add request IDs to frames
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37051
diff changeset
3873
37051
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3874 ``type`` can be an integer value for the frame type or the string name
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3875 of the type. The strings are defined in ``wireprotoframing.py``. e.g.
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3876 ``command-name``.
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
3877
37288
9bfcbe4f4745 wireproto: add streams to frame-based protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37283
diff changeset
3878 ``stream-flags`` and ``flags`` are a ``|`` delimited list of flag
9bfcbe4f4745 wireproto: add streams to frame-based protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37283
diff changeset
3879 components. Each component (and there can be just one) can be an integer
9bfcbe4f4745 wireproto: add streams to frame-based protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37283
diff changeset
3880 or a flag name for stream flags or frame flags, respectively. Values are
9bfcbe4f4745 wireproto: add streams to frame-based protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37283
diff changeset
3881 resolved to integers and then bitwise OR'd together.
9bfcbe4f4745 wireproto: add streams to frame-based protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37283
diff changeset
3882
37290
cc5a040fe150 wireproto: syntax for encoding CBOR into frames
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37288
diff changeset
3883 ``payload`` represents the raw frame payload. If it begins with
cc5a040fe150 wireproto: syntax for encoding CBOR into frames
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37288
diff changeset
3884 ``cbor:``, the following string is evaluated as Python code and the
cc5a040fe150 wireproto: syntax for encoding CBOR into frames
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37288
diff changeset
3885 resulting object is fed into a CBOR encoder. Otherwise it is interpreted
cc5a040fe150 wireproto: syntax for encoding CBOR into frames
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37288
diff changeset
3886 as a Python byte string literal.
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3887 """
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3888 opts = pycompat.byteskwargs(opts)
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3889
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3890 if opts[b'localssh'] and not repo:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3891 raise error.Abort(_(b'--localssh requires a repository'))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3892
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3893 if opts[b'peer'] and opts[b'peer'] not in (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3894 b'raw',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3895 b'http2',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3896 b'ssh1',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3897 b'ssh2',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3898 ):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3899 raise error.Abort(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3900 _(b'invalid value for --peer'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3901 hint=_(b'valid values are "raw", "ssh1", and "ssh2"'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3902 )
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3903
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3904 if path and opts[b'localssh']:
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43116
diff changeset
3905 raise error.Abort(_(b'cannot specify --localssh with an explicit path'))
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
3906
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3907 if ui.interactive():
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3908 ui.write(_(b'(waiting for commands on stdin)\n'))
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3909
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3910 blocks = list(_parsewirelangblocks(ui.fin))
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3911
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3912 proc = None
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
3913 stdin = None
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
3914 stdout = None
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
3915 stderr = None
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
3916 opener = None
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3917
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3918 if opts[b'localssh']:
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3919 # We start the SSH server in its own process so there is process
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3920 # separation. This prevents a whole class of potential bugs around
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3921 # shared state from interfering with server operation.
37120
a8a902d7176e procutil: bulk-replace function calls to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37084
diff changeset
3922 args = procutil.hgcmd() + [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3923 b'-R',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3924 repo.root,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3925 b'debugserve',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3926 b'--sshstdio',
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3927 ]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3928 proc = subprocess.Popen(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3929 pycompat.rapply(procutil.tonativestr, args),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3930 stdin=subprocess.PIPE,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3931 stdout=subprocess.PIPE,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3932 stderr=subprocess.PIPE,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3933 bufsize=0,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3934 )
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3935
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3936 stdin = proc.stdin
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3937 stdout = proc.stdout
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3938 stderr = proc.stderr
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3939
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3940 # We turn the pipes into observers so we can log I/O.
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3941 if ui.verbose or opts[b'peer'] == b'raw':
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3942 stdin = util.makeloggingfileobject(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3943 ui, proc.stdin, b'i', logdata=True
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3944 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3945 stdout = util.makeloggingfileobject(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3946 ui, proc.stdout, b'o', logdata=True
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3947 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3948 stderr = util.makeloggingfileobject(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3949 ui, proc.stderr, b'e', logdata=True
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3950 )
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3951
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3952 # --localssh also implies the peer connection settings.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3953
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3954 url = b'ssh://localserver'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3955 autoreadstderr = not opts[b'noreadstderr']
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3956
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3957 if opts[b'peer'] == b'ssh1':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3958 ui.write(_(b'creating ssh peer for wire protocol version 1\n'))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3959 peer = sshpeer.sshv1peer(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3960 ui,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3961 url,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3962 proc,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3963 stdin,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3964 stdout,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3965 stderr,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3966 None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3967 autoreadstderr=autoreadstderr,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3968 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3969 elif opts[b'peer'] == b'ssh2':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3970 ui.write(_(b'creating ssh peer for wire protocol version 2\n'))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3971 peer = sshpeer.sshv2peer(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3972 ui,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3973 url,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3974 proc,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3975 stdin,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3976 stdout,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3977 stderr,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3978 None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3979 autoreadstderr=autoreadstderr,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3980 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3981 elif opts[b'peer'] == b'raw':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3982 ui.write(_(b'using raw connection to peer\n'))
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3983 peer = None
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3984 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
3985 ui.write(_(b'creating ssh peer from handshake results\n'))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3986 peer = sshpeer.makepeer(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3987 ui,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3988 url,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3989 proc,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3990 stdin,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3991 stdout,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3992 stderr,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3993 autoreadstderr=autoreadstderr,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
3994 )
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
3995
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
3996 elif path:
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
3997 # We bypass hg.peer() so we can proxy the sockets.
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
3998 # TODO consider not doing this because we skip
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
3999 # ``hg.wirepeersetupfuncs`` and potentially other useful functionality.
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4000 u = util.url(path)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4001 if u.scheme != b'http':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4002 raise error.Abort(_(b'only http:// paths are currently supported'))
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4003
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4004 url, authinfo = u.authinfo()
37483
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
4005 openerargs = {
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
4006 'useragent': b'Mercurial debugwireproto',
37483
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
4007 }
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4008
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4009 # Turn pipes/sockets into observers so we can log I/O.
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4010 if ui.verbose:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4011 openerargs.update(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4012 {
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
4013 'loggingfh': ui,
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
4014 'loggingname': b's',
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
4015 'loggingopts': {'logdata': True, 'logdataapis': False,},
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4016 }
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4017 )
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4018
37044
d3a9036d9ae9 util: don't log low-level I/O calls for HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37013
diff changeset
4019 if ui.debugflag:
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
4020 openerargs['loggingopts']['logdataapis'] = True
37044
d3a9036d9ae9 util: don't log low-level I/O calls for HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37013
diff changeset
4021
37045
a708e1e4d7a8 url: support suppressing Accept header
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37044
diff changeset
4022 # Don't send default headers when in raw mode. This allows us to
a708e1e4d7a8 url: support suppressing Accept header
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37044
diff changeset
4023 # bypass most of the behavior of our URL handling code so we can
a708e1e4d7a8 url: support suppressing Accept header
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37044
diff changeset
4024 # have near complete control over what's sent on the wire.
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4025 if opts[b'peer'] == b'raw':
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
4026 openerargs['sendaccept'] = False
37045
a708e1e4d7a8 url: support suppressing Accept header
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37044
diff changeset
4027
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4028 opener = urlmod.opener(ui, authinfo, **openerargs)
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4029
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4030 if opts[b'peer'] == b'http2':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4031 ui.write(_(b'creating http peer for wire protocol version 2\n'))
37645
72b0982cd509 debugcommands: perform handshake when obtaining httpv2 peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37644
diff changeset
4032 # We go through makepeer() because we need an API descriptor for
72b0982cd509 debugcommands: perform handshake when obtaining httpv2 peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37644
diff changeset
4033 # the peer instance to be useful.
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4034 with ui.configoverride(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4035 {(b'experimental', b'httppeer.advertise-v2'): True}
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4036 ):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4037 if opts[b'nologhandshake']:
37718
ad1c07008e0b debugcommands: ability to suppress logging of handshake
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37652
diff changeset
4038 ui.pushbuffer()
ad1c07008e0b debugcommands: ability to suppress logging of handshake
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37652
diff changeset
4039
37645
72b0982cd509 debugcommands: perform handshake when obtaining httpv2 peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37644
diff changeset
4040 peer = httppeer.makepeer(ui, path, opener=opener)
72b0982cd509 debugcommands: perform handshake when obtaining httpv2 peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37644
diff changeset
4041
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4042 if opts[b'nologhandshake']:
37718
ad1c07008e0b debugcommands: ability to suppress logging of handshake
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37652
diff changeset
4043 ui.popbuffer()
ad1c07008e0b debugcommands: ability to suppress logging of handshake
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37652
diff changeset
4044
37645
72b0982cd509 debugcommands: perform handshake when obtaining httpv2 peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37644
diff changeset
4045 if not isinstance(peer, httppeer.httpv2peer):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4046 raise error.Abort(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4047 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4048 b'could not instantiate HTTP peer for '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4049 b'wire protocol version 2'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4050 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4051 hint=_(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4052 b'the server may not have the feature '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4053 b'enabled or is not allowing this '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4054 b'client version'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4055 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4056 )
37645
72b0982cd509 debugcommands: perform handshake when obtaining httpv2 peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37644
diff changeset
4057
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4058 elif opts[b'peer'] == b'raw':
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4059 ui.write(_(b'using raw connection to peer\n'))
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4060 peer = None
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4061 elif opts[b'peer']:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4062 raise error.Abort(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4063 _(b'--peer %s not supported with HTTP peers') % opts[b'peer']
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4064 )
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4065 else:
37553
6b08cf6b900f httppeer: allow opener to be passed to makepeer()
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37552
diff changeset
4066 peer = httppeer.makepeer(ui, path, opener=opener)
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4067
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4068 # We /could/ populate stdin/stdout with sock.makefile()...
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4069 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4070 raise error.Abort(_(b'unsupported connection configuration'))
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4071
36531
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4072 batchedcommands = None
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4073
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4074 # Now perform actions based on the parsed wire language instructions.
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4075 for action, lines in blocks:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4076 if action in (b'raw', b'raw+'):
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4077 if not stdin:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4078 raise error.Abort(_(b'cannot call raw/raw+ on this peer'))
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4079
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4080 # Concatenate the data together.
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4081 data = b''.join(l.lstrip() for l in lines)
37084
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37057
diff changeset
4082 data = stringutil.unescapestr(data)
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4083 stdin.write(data)
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4084
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4085 if action == b'raw+':
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4086 stdin.flush()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4087 elif action == b'flush':
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4088 if not stdin:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4089 raise error.Abort(_(b'cannot call flush on this peer'))
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4090 stdin.flush()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4091 elif action.startswith(b'command'):
36530
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4092 if not peer:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4093 raise error.Abort(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4094 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4095 b'cannot send commands unless peer instance '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4096 b'is available'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4097 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4098 )
36530
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4099
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4100 command = action.split(b' ', 1)[1]
36530
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4101
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4102 args = {}
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4103 for line in lines:
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4104 # We need to allow empty values.
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4105 fields = line.lstrip().split(b' ', 1)
36530
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4106 if len(fields) == 1:
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4107 key = fields[0]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4108 value = b''
36530
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4109 else:
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4110 key, value = fields
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4111
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4112 if value.startswith(b'eval:'):
37483
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
4113 value = stringutil.evalpythonliteral(value[5:])
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
4114 else:
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
4115 value = stringutil.unescapestr(value)
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
4116
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37396
diff changeset
4117 args[key] = value
36530
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4118
36531
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4119 if batchedcommands is not None:
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4120 batchedcommands.append((command, args))
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4121 continue
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4122
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4123 ui.status(_(b'sending %s command\n') % command)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4124
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4125 if b'PUSHFILE' in args:
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
4126 with open(args[b'PUSHFILE'], 'rb') as fh:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4127 del args[b'PUSHFILE']
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4128 res, output = peer._callpush(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4129 command, fh, **pycompat.strkwargs(args)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4130 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4131 ui.status(_(b'result: %s\n') % stringutil.escapestr(res))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4132 ui.status(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4133 _(b'remote output: %s\n') % stringutil.escapestr(output)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4134 )
36534
5faeabb07cf5 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36531
diff changeset
4135 else:
37652
fe8c6f9f2914 debugcommands: use command executor for invoking commands
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37647
diff changeset
4136 with peer.commandexecutor() as e:
fe8c6f9f2914 debugcommands: use command executor for invoking commands
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37647
diff changeset
4137 res = e.callcommand(command, args).result()
fe8c6f9f2914 debugcommands: use command executor for invoking commands
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37647
diff changeset
4138
37720
d715a85003c8 wireprotov2: establish a type for representing command response
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37718
diff changeset
4139 if isinstance(res, wireprotov2peer.commandresponse):
39561
d06834e0f48e wireprotov2peer: stream decoded responses
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39449
diff changeset
4140 val = res.objects()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4141 ui.status(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4142 _(b'response: %s\n')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4143 % stringutil.pprint(val, bprefix=True, indent=2)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4144 )
37720
d715a85003c8 wireprotov2: establish a type for representing command response
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37718
diff changeset
4145 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4146 ui.status(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4147 _(b'response: %s\n')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4148 % stringutil.pprint(res, bprefix=True, indent=2)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4149 )
36530
bde0bd50f368 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36528
diff changeset
4150
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4151 elif action == b'batchbegin':
36531
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4152 if batchedcommands is not None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4153 raise error.Abort(_(b'nested batchbegin not allowed'))
36531
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4154
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4155 batchedcommands = []
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4156 elif action == b'batchsubmit':
36531
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4157 # There is a batching API we could go through. But it would be
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4158 # difficult to normalize requests into function calls. It is easier
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4159 # to bypass this layer and normalize to commands + args.
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4160 ui.status(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4161 _(b'sending batch with %d sub-commands\n')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4162 % len(batchedcommands)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4163 )
43704
23ad4f0c1578 debugcommands: add assertions to convince pytype peer is not None
Augie Fackler <augie@google.com>
parents: 43703
diff changeset
4164 assert peer is not None
36531
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4165 for i, chunk in enumerate(peer._submitbatch(batchedcommands)):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4166 ui.status(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4167 _(b'response #%d: %s\n') % (i, stringutil.escapestr(chunk))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4168 )
36531
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4169
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4170 batchedcommands = None
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4171
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4172 elif action.startswith(b'httprequest '):
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4173 if not opener:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4174 raise error.Abort(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43116
diff changeset
4175 _(b'cannot use httprequest without an HTTP peer')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4176 )
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4177
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4178 request = action.split(b' ', 2)
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4179 if len(request) != 3:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4180 raise error.Abort(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4181 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4182 b'invalid httprequest: expected format is '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4183 b'"httprequest <method> <path>'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4184 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4185 )
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4186
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4187 method, httppath = request[1:]
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4188 headers = {}
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4189 body = None
37051
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
4190 frames = []
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4191 for line in lines:
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4192 line = line.lstrip()
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4193 m = re.match(b'^([a-zA-Z0-9_-]+): (.*)$', line)
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4194 if m:
39955
c421c22d3ad2 py3: convert HTTP request headers to str
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39884
diff changeset
4195 # Headers need to use native strings.
c421c22d3ad2 py3: convert HTTP request headers to str
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39884
diff changeset
4196 key = pycompat.strurl(m.group(1))
c421c22d3ad2 py3: convert HTTP request headers to str
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39884
diff changeset
4197 value = pycompat.strurl(m.group(2))
c421c22d3ad2 py3: convert HTTP request headers to str
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39884
diff changeset
4198 headers[key] = value
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4199 continue
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4200
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4201 if line.startswith(b'BODYFILE '):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4202 with open(line.split(b' ', 1), b'rb') as fh:
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4203 body = fh.read()
37051
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
4204 elif line.startswith(b'frame '):
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
4205 frame = wireprotoframing.makeframefromhumanstring(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4206 line[len(b'frame ') :]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4207 )
37051
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
4208
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
4209 frames.append(frame)
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4210 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4211 raise error.Abort(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4212 _(b'unknown argument to httprequest: %s') % line
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4213 )
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4214
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4215 url = path + httppath
37051
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
4216
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
4217 if frames:
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
4218 body = b''.join(bytes(f) for f in frames)
40206e227412 wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37047
diff changeset
4219
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4220 req = urlmod.urlreq.request(pycompat.strurl(url), body, headers)
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4221
37047
fddcb51b5084 wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37045
diff changeset
4222 # urllib.Request insists on using has_data() as a proxy for
fddcb51b5084 wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37045
diff changeset
4223 # determining the request method. Override that to use our
fddcb51b5084 wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37045
diff changeset
4224 # explicitly requested method.
39064
a2fa7247ca70 debugcommands: get_method should always return a sysstr
Augie Fackler <augie@google.com>
parents: 39062
diff changeset
4225 req.get_method = lambda: pycompat.sysstr(method)
37047
fddcb51b5084 wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37045
diff changeset
4226
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4227 try:
37557
734515aca84d wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37553
diff changeset
4228 res = opener.open(req)
734515aca84d wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37553
diff changeset
4229 body = res.read()
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4230 except util.urlerr.urlerror as e:
39065
730e7d92a023 debugcommands: urlerror only has a read() method in Python 2
Augie Fackler <augie@google.com>
parents: 39064
diff changeset
4231 # read() method must be called, but only exists in Python 2
730e7d92a023 debugcommands: urlerror only has a read() method in Python 2
Augie Fackler <augie@google.com>
parents: 39064
diff changeset
4232 getattr(e, 'read', lambda: None)()
37557
734515aca84d wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37553
diff changeset
4233 continue
734515aca84d wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37553
diff changeset
4234
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
4235 ct = res.headers.get('Content-Type')
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43503
diff changeset
4236 if ct == 'application/mercurial-cbor':
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4237 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4238 _(b'cbor> %s\n')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4239 % stringutil.pprint(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4240 cborutil.decodeall(body), bprefix=True, indent=2
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4241 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43067
diff changeset
4242 )
37013
b6a7070e7663 debugcommands: support sending HTTP requests with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37012
diff changeset
4243
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4244 elif action == b'close':
43704
23ad4f0c1578 debugcommands: add assertions to convince pytype peer is not None
Augie Fackler <augie@google.com>
parents: 43703
diff changeset
4245 assert peer is not None
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4246 peer.close()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4247 elif action == b'readavailable':
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4248 if not stdout or not stderr:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4249 raise error.Abort(
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4250 _(b'readavailable not available on this peer')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4251 )
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4252
36843
31581528f242 debugwireproto: close the write end before consuming all available data
Yuya Nishihara <yuya@tcha.org>
parents: 36835
diff changeset
4253 stdin.close()
31581528f242 debugwireproto: close the write end before consuming all available data
Yuya Nishihara <yuya@tcha.org>
parents: 36835
diff changeset
4254 stdout.read()
31581528f242 debugwireproto: close the write end before consuming all available data
Yuya Nishihara <yuya@tcha.org>
parents: 36835
diff changeset
4255 stderr.read()
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4256
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4257 elif action == b'readline':
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4258 if not stdout:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4259 raise error.Abort(_(b'readline not available on this peer'))
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4260 stdout.readline()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4261 elif action == b'ereadline':
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4262 if not stderr:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4263 raise error.Abort(_(b'ereadline not available on this peer'))
37007
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
4264 stderr.readline()
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4265 elif action.startswith(b'read '):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4266 count = int(action.split(b' ', 1)[1])
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4267 if not stdout:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4268 raise error.Abort(_(b'read not available on this peer'))
37007
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
4269 stdout.read(count)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4270 elif action.startswith(b'eread '):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4271 count = int(action.split(b' ', 1)[1])
37012
fc8939825632 debugcommands: support connecting to HTTP peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37007
diff changeset
4272 if not stderr:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4273 raise error.Abort(_(b'eread not available on this peer'))
37007
143219fc2620 debugcommands: introduce actions to perform deterministic reads
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36988
diff changeset
4274 stderr.read(count)
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4275 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4276 raise error.Abort(_(b'unknown action: %s') % action)
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4277
36531
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4278 if batchedcommands is not None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
4279 raise error.Abort(_(b'unclosed "batchbegin" request'))
36531
097ad1079192 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36530
diff changeset
4280
36528
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4281 if peer:
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4282 peer.close()
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4283
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4284 if proc:
72e487851a53 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36527
diff changeset
4285 proc.kill()