Mercurial > hg
annotate mercurial/changegroup.py @ 50053:5327ae76b740
dirstate: use `dirstate.change_files` to scope the change in `unshelve`
This is the way.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 15 Dec 2022 03:04:58 +0100 |
parents | 152d9c011bcd |
children | d718eddf01d9 |
rev | line source |
---|---|
8226
8b2cd04a6e97
put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents:
8225
diff
changeset
|
1 # changegroup.py - Mercurial changegroup manipulation functions |
8b2cd04a6e97
put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents:
8225
diff
changeset
|
2 # |
46819
d4ba4d51f85f
contributor: change mentions of mpm to olivia
Raphaël Gomès <rgomes@octobus.net>
parents:
46794
diff
changeset
|
3 # Copyright 2006 Olivia Mackall <olivia@selenic.com> |
8226
8b2cd04a6e97
put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents:
8225
diff
changeset
|
4 # |
8b2cd04a6e97
put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents:
8225
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10263 | 6 # GNU General Public License version 2 or any later version. |
3877
abaee83ce0a6
Replace demandload with new demandimport
Matt Mackall <mpm@selenic.com>
parents:
3859
diff
changeset
|
7 |
25921
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
8 |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
9 import os |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
10 import struct |
20933
d3775db748a0
localrepo: move the addchangegroup method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20932
diff
changeset
|
11 import weakref |
25921
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
12 |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
13 from .i18n import _ |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
14 from .node import ( |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
15 hex, |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
16 nullrev, |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
17 short, |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
18 ) |
43085
eef9a2d67051
py3: manually import pycompat.open into files that need it
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43077
diff
changeset
|
19 from .pycompat import open |
25921
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
20 |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
21 from . import ( |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
22 error, |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
23 match as matchmod, |
25921
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
24 mdiff, |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
25 phases, |
30925
82f1ef8b4477
py3: convert the mode argument of os.fdopen to unicodes (2 of 2)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30743
diff
changeset
|
26 pycompat, |
45372
77b8588dd84e
requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45371
diff
changeset
|
27 requirements, |
45552
10284ce3d5ed
scmutil: introduce function to check whether repo uses treemanifest or not
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45372
diff
changeset
|
28 scmutil, |
42813
268662aac075
interfaces: create a new folder for interfaces and move repository.py in it
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
42341
diff
changeset
|
29 util, |
268662aac075
interfaces: create a new folder for interfaces and move repository.py in it
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
42341
diff
changeset
|
30 ) |
268662aac075
interfaces: create a new folder for interfaces and move repository.py in it
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
42341
diff
changeset
|
31 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
32 from .interfaces import repository |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
33 from .revlogutils import sidedata as sidedatamod |
47073
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
34 from .revlogutils import constants as revlog_constants |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
35 from .utils import storageutil |
1981
736b6c96bbbc
make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
36 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
37 _CHANGEGROUPV1_DELTA_HEADER = struct.Struct(b"20s20s20s20s") |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
38 _CHANGEGROUPV2_DELTA_HEADER = struct.Struct(b"20s20s20s20s20s") |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
39 _CHANGEGROUPV3_DELTA_HEADER = struct.Struct(b">20s20s20s20s20sH") |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
40 _CHANGEGROUPV4_DELTA_HEADER = struct.Struct(b">B20s20s20s20s20sH") |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
41 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
42 LFS_REQUIREMENT = b'lfs' |
37132
a54113fcc8c9
lfs: move the 'supportedoutgoingversions' handling to changegroup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
37084
diff
changeset
|
43 |
35754
fb0be099063f
util: move 'readexactly' in the util module
Boris Feld <boris.feld@octobus.net>
parents:
35012
diff
changeset
|
44 readexactly = util.readexactly |
13457
e74fe15dc7fd
changegroup: verify all stream reads
Mads Kiilerich <mads@kiilerich.com>
parents:
13456
diff
changeset
|
45 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
46 |
13457
e74fe15dc7fd
changegroup: verify all stream reads
Mads Kiilerich <mads@kiilerich.com>
parents:
13456
diff
changeset
|
47 def getchunk(stream): |
e74fe15dc7fd
changegroup: verify all stream reads
Mads Kiilerich <mads@kiilerich.com>
parents:
13456
diff
changeset
|
48 """return the next chunk from stream as a string""" |
e74fe15dc7fd
changegroup: verify all stream reads
Mads Kiilerich <mads@kiilerich.com>
parents:
13456
diff
changeset
|
49 d = readexactly(stream, 4) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
50 l = struct.unpack(b">l", d)[0] |
1981
736b6c96bbbc
make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
51 if l <= 4: |
13458
9f2c407caf34
changegroup: don't accept odd chunk headers
Mads Kiilerich <mads@kiilerich.com>
parents:
13457
diff
changeset
|
52 if l: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
53 raise error.Abort(_(b"invalid chunk length %d") % l) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
54 return b"" |
13457
e74fe15dc7fd
changegroup: verify all stream reads
Mads Kiilerich <mads@kiilerich.com>
parents:
13456
diff
changeset
|
55 return readexactly(stream, l - 4) |
1981
736b6c96bbbc
make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
56 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
57 |
5368
61462e7d62ed
changegroup: avoid large copies
Matt Mackall <mpm@selenic.com>
parents:
3932
diff
changeset
|
58 def chunkheader(length): |
9437
1c4e4004f3a6
Improve some docstrings relating to changegroups and prepush().
Greg Ward <greg-hg@gerg.ca>
parents:
9087
diff
changeset
|
59 """return a changegroup chunk header (string)""" |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
60 return struct.pack(b">l", length + 4) |
1981
736b6c96bbbc
make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
61 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
62 |
1981
736b6c96bbbc
make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
63 def closechunk(): |
9437
1c4e4004f3a6
Improve some docstrings relating to changegroups and prepush().
Greg Ward <greg-hg@gerg.ca>
parents:
9087
diff
changeset
|
64 """return a changegroup chunk header (string) for a zero-length chunk""" |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
65 return struct.pack(b">l", 0) |
1981
736b6c96bbbc
make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
66 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
67 |
38981
227ebd88ce5e
changegroup: pull _fileheader out of cgpacker
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38980
diff
changeset
|
68 def _fileheader(path): |
227ebd88ce5e
changegroup: pull _fileheader out of cgpacker
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38980
diff
changeset
|
69 """Obtain a changegroup chunk header for a named path.""" |
227ebd88ce5e
changegroup: pull _fileheader out of cgpacker
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38980
diff
changeset
|
70 return chunkheader(len(path)) + path |
227ebd88ce5e
changegroup: pull _fileheader out of cgpacker
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38980
diff
changeset
|
71 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
72 |
26540
7469067de2ba
changegroup: extract the file management part in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26509
diff
changeset
|
73 def writechunks(ui, chunks, filename, vfs=None): |
7469067de2ba
changegroup: extract the file management part in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26509
diff
changeset
|
74 """Write chunks to a file and return its filename. |
3659
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
75 |
26540
7469067de2ba
changegroup: extract the file management part in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26509
diff
changeset
|
76 The stream is assumed to be a bundle file. |
3659
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
77 Existing files will not be overwritten. |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
78 If no filename is specified, a temporary file is created. |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
79 """ |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
80 fh = None |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
81 cleanup = None |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
82 try: |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
83 if filename: |
20976
c20f4898631e
changegroup: add "vfs" argument to "writebundle()" for relative access via vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20966
diff
changeset
|
84 if vfs: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
85 fh = vfs.open(filename, b"wb") |
20976
c20f4898631e
changegroup: add "vfs" argument to "writebundle()" for relative access via vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20966
diff
changeset
|
86 else: |
30212
260af19891f2
changegroup: increase write buffer size to 128k
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30211
diff
changeset
|
87 # Increase default buffer size because default is usually |
260af19891f2
changegroup: increase write buffer size to 128k
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30211
diff
changeset
|
88 # small (4k is common on Linux). |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
89 fh = open(filename, b"wb", 131072) |
3659
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
90 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
91 fd, filename = pycompat.mkstemp(prefix=b"hg-bundle-", suffix=b".hg") |
43503
313e3a279828
cleanup: remove pointless r-prefixes on double-quoted strings
Augie Fackler <augie@google.com>
parents:
43490
diff
changeset
|
92 fh = os.fdopen(fd, "wb") |
3659
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
93 cleanup = filename |
26540
7469067de2ba
changegroup: extract the file management part in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26509
diff
changeset
|
94 for c in chunks: |
7469067de2ba
changegroup: extract the file management part in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26509
diff
changeset
|
95 fh.write(c) |
3659
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
96 cleanup = None |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
97 return filename |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
98 finally: |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
99 if fh is not None: |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
100 fh.close() |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
101 if cleanup is not None: |
20976
c20f4898631e
changegroup: add "vfs" argument to "writebundle()" for relative access via vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20966
diff
changeset
|
102 if filename and vfs: |
c20f4898631e
changegroup: add "vfs" argument to "writebundle()" for relative access via vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20966
diff
changeset
|
103 vfs.unlink(cleanup) |
c20f4898631e
changegroup: add "vfs" argument to "writebundle()" for relative access via vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20966
diff
changeset
|
104 else: |
c20f4898631e
changegroup: add "vfs" argument to "writebundle()" for relative access via vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20966
diff
changeset
|
105 os.unlink(cleanup) |
3660
8500a13ec44b
create a readbundle function
Matt Mackall <mpm@selenic.com>
parents:
3659
diff
changeset
|
106 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
107 |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
108 def _dbg_ubdl_line( |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
109 ui, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
110 indent, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
111 key, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
112 base_value=None, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
113 percentage_base=None, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
114 percentage_key=None, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
115 ): |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
116 """Print one line of debug_unbundle_debug_info""" |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
117 line = b"DEBUG-UNBUNDLING: " |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
118 line += b' ' * (2 * indent) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
119 key += b":" |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
120 padding = b'' |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
121 if base_value is not None: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
122 assert len(key) + 1 + (2 * indent) <= _KEY_PART_WIDTH |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
123 line += key.ljust(_KEY_PART_WIDTH - (2 * indent)) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
124 if isinstance(base_value, float): |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
125 line += b"%14.3f seconds" % base_value |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
126 else: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
127 line += b"%10d" % base_value |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
128 padding = b' ' |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
129 else: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
130 line += key |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
131 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
132 if percentage_base is not None: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
133 line += padding |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
134 padding = b'' |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
135 assert base_value is not None |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
136 percentage = base_value * 100 // percentage_base |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
137 if percentage_key is not None: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
138 line += b" (%3d%% of %s)" % ( |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
139 percentage, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
140 percentage_key, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
141 ) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
142 else: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
143 line += b" (%3d%%)" % percentage |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
144 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
145 line += b'\n' |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
146 ui.write_err(line) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
147 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
148 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
149 def _sumf(items): |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
150 # python < 3.8 does not support a `start=0.0` argument to sum |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
151 # So we have to cheat a bit until we drop support for those version |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
152 if not items: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
153 return 0.0 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
154 return sum(items) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
155 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
156 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
157 def display_unbundle_debug_info(ui, debug_info): |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
158 """display an unbundling report from debug information""" |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
159 cl_info = [] |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
160 mn_info = [] |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
161 fl_info = [] |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
162 _dispatch = [ |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
163 (b'CHANGELOG:', cl_info), |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
164 (b'MANIFESTLOG:', mn_info), |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
165 (b'FILELOG:', fl_info), |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
166 ] |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
167 for e in debug_info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
168 for prefix, info in _dispatch: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
169 if e["target-revlog"].startswith(prefix): |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
170 info.append(e) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
171 break |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
172 else: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
173 assert False, 'unreachable' |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
174 each_info = [ |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
175 (b'changelog', cl_info), |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
176 (b'manifests', mn_info), |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
177 (b'files', fl_info), |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
178 ] |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
179 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
180 # General Revision Countss |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
181 _dbg_ubdl_line(ui, 0, b'revisions', len(debug_info)) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
182 for key, info in each_info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
183 if not info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
184 continue |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
185 _dbg_ubdl_line(ui, 1, key, len(info), len(debug_info)) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
186 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
187 # General Time spent |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
188 all_durations = [e['duration'] for e in debug_info] |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
189 all_durations.sort() |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
190 total_duration = _sumf(all_durations) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
191 _dbg_ubdl_line(ui, 0, b'total-time', total_duration) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
192 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
193 for key, info in each_info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
194 if not info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
195 continue |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
196 durations = [e['duration'] for e in info] |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
197 durations.sort() |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
198 _dbg_ubdl_line(ui, 1, key, _sumf(durations), total_duration) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
199 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
200 # Count and cache reuse per delta types |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
201 each_types = {} |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
202 for key, info in each_info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
203 each_types[key] = types = { |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
204 b'full': 0, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
205 b'full-cached': 0, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
206 b'snapshot': 0, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
207 b'snapshot-cached': 0, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
208 b'delta': 0, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
209 b'delta-cached': 0, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
210 b'unknown': 0, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
211 b'unknown-cached': 0, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
212 } |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
213 for e in info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
214 types[e['type']] += 1 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
215 if e['using-cached-base']: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
216 types[e['type'] + b'-cached'] += 1 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
217 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
218 EXPECTED_TYPES = (b'full', b'snapshot', b'delta', b'unknown') |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
219 if debug_info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
220 _dbg_ubdl_line(ui, 0, b'type-count') |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
221 for key, info in each_info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
222 if info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
223 _dbg_ubdl_line(ui, 1, key) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
224 t = each_types[key] |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
225 for tn in EXPECTED_TYPES: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
226 if t[tn]: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
227 tc = tn + b'-cached' |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
228 _dbg_ubdl_line(ui, 2, tn, t[tn]) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
229 _dbg_ubdl_line(ui, 3, b'cached', t[tc], t[tn]) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
230 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
231 # time perf delta types and reuse |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
232 each_type_time = {} |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
233 for key, info in each_info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
234 each_type_time[key] = t = { |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
235 b'full': [], |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
236 b'full-cached': [], |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
237 b'snapshot': [], |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
238 b'snapshot-cached': [], |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
239 b'delta': [], |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
240 b'delta-cached': [], |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
241 b'unknown': [], |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
242 b'unknown-cached': [], |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
243 } |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
244 for e in info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
245 t[e['type']].append(e['duration']) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
246 if e['using-cached-base']: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
247 t[e['type'] + b'-cached'].append(e['duration']) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
248 for t_key, value in list(t.items()): |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
249 value.sort() |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
250 t[t_key] = _sumf(value) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
251 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
252 if debug_info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
253 _dbg_ubdl_line(ui, 0, b'type-time') |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
254 for key, info in each_info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
255 if info: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
256 _dbg_ubdl_line(ui, 1, key) |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
257 t = each_type_time[key] |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
258 td = total_duration # to same space on next lines |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
259 for tn in EXPECTED_TYPES: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
260 if t[tn]: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
261 tc = tn + b'-cached' |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
262 _dbg_ubdl_line(ui, 2, tn, t[tn], td, b"total") |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
263 _dbg_ubdl_line(ui, 3, b'cached', t[tc], td, b"total") |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
264 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
265 |
48946
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48913
diff
changeset
|
266 class cg1unpacker: |
26708
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
267 """Unpacker for cg1 changegroup streams. |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
268 |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
269 A changegroup unpacker handles the framing of the revision data in |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
270 the wire format. Most consumers will want to use the apply() |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
271 method to add the changes from the changegroup to a repository. |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
272 |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
273 If you're forwarding a changegroup unmodified to another consumer, |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
274 use getchunks(), which returns an iterator of changegroup |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
275 chunks. This is mostly useful for cases where you need to know the |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
276 data stream has ended by observing the end of the changegroup. |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
277 |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
278 deltachunk() is useful only if you're applying delta data. Most |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
279 consumers should prefer apply() instead. |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
280 |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
281 A few other public methods exist. Those are used only for |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
282 bundlerepo and some debug commands - their use is discouraged. |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
283 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
284 |
22390
e2806b8613ca
changegroup: rename bundle-related functions and classes
Sune Foldager <cryo@cyanite.org>
parents:
22070
diff
changeset
|
285 deltaheader = _CHANGEGROUPV1_DELTA_HEADER |
38896
271854adc3a6
changegroup: make delta header struct formatters actual structs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38895
diff
changeset
|
286 deltaheadersize = deltaheader.size |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
287 version = b'01' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
288 _grouplistcount = 1 # One list of files after the manifests |
27920
da5f23362517
changegroup: cg3 has two empty groups *after* manifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
27867
diff
changeset
|
289 |
29593
953839de96ab
bundle2: store changeset count when creating file bundles
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29371
diff
changeset
|
290 def __init__(self, fh, alg, extras=None): |
30354
a37a96d838b9
changegroup: use compression engines API
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30339
diff
changeset
|
291 if alg is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
292 alg = b'UN' |
30354
a37a96d838b9
changegroup: use compression engines API
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30339
diff
changeset
|
293 if alg not in util.compengines.supportedbundletypes: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
294 raise error.Abort(_(b'unknown stream compression type: %s') % alg) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
295 if alg == b'BZ': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
296 alg = b'_truncatedBZ' |
30354
a37a96d838b9
changegroup: use compression engines API
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30339
diff
changeset
|
297 |
a37a96d838b9
changegroup: use compression engines API
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30339
diff
changeset
|
298 compengine = util.compengines.forbundletype(alg) |
a37a96d838b9
changegroup: use compression engines API
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30339
diff
changeset
|
299 self._stream = compengine.decompressorreader(fh) |
12044
bcc7139521b7
bundlerepo: remove duplication of bundle decompressors
Matt Mackall <mpm@selenic.com>
parents:
12043
diff
changeset
|
300 self._type = alg |
29593
953839de96ab
bundle2: store changeset count when creating file bundles
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29371
diff
changeset
|
301 self.extras = extras or {} |
12334
50946802593d
bundle: refactor progress callback
Matt Mackall <mpm@selenic.com>
parents:
12333
diff
changeset
|
302 self.callback = None |
26706
8c0c3059f478
changegroup: note why a few methods on cg1unpacker exist
Augie Fackler <augie@google.com>
parents:
26704
diff
changeset
|
303 |
8c0c3059f478
changegroup: note why a few methods on cg1unpacker exist
Augie Fackler <augie@google.com>
parents:
26704
diff
changeset
|
304 # These methods (compressed, read, seek, tell) all appear to only |
8c0c3059f478
changegroup: note why a few methods on cg1unpacker exist
Augie Fackler <augie@google.com>
parents:
26704
diff
changeset
|
305 # be used by bundlerepo, but it's a little hard to tell. |
12044
bcc7139521b7
bundlerepo: remove duplication of bundle decompressors
Matt Mackall <mpm@selenic.com>
parents:
12043
diff
changeset
|
306 def compressed(self): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
307 return self._type is not None and self._type != b'UN' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
308 |
12043
bef5effb3db0
bundle: introduce bundle class
Matt Mackall <mpm@selenic.com>
parents:
12042
diff
changeset
|
309 def read(self, l): |
bef5effb3db0
bundle: introduce bundle class
Matt Mackall <mpm@selenic.com>
parents:
12042
diff
changeset
|
310 return self._stream.read(l) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
311 |
12330
e527b8635881
bundle: make unbundle object seekable
Matt Mackall <mpm@selenic.com>
parents:
12329
diff
changeset
|
312 def seek(self, pos): |
e527b8635881
bundle: make unbundle object seekable
Matt Mackall <mpm@selenic.com>
parents:
12329
diff
changeset
|
313 return self._stream.seek(pos) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
314 |
12330
e527b8635881
bundle: make unbundle object seekable
Matt Mackall <mpm@selenic.com>
parents:
12329
diff
changeset
|
315 def tell(self): |
12332
680fe77ab5b8
bundlerepo: use bundle objects everywhere
Matt Mackall <mpm@selenic.com>
parents:
12330
diff
changeset
|
316 return self._stream.tell() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
317 |
12347
6277a9469dff
bundlerepo: restore close() method
Matt Mackall <mpm@selenic.com>
parents:
12336
diff
changeset
|
318 def close(self): |
6277a9469dff
bundlerepo: restore close() method
Matt Mackall <mpm@selenic.com>
parents:
12336
diff
changeset
|
319 return self._stream.close() |
12334
50946802593d
bundle: refactor progress callback
Matt Mackall <mpm@selenic.com>
parents:
12333
diff
changeset
|
320 |
26707
5ee6bd529300
changegroup: mark cg1unpacker.chunklength as private
Augie Fackler <augie@google.com>
parents:
26706
diff
changeset
|
321 def _chunklength(self): |
13459
acbe171c8fbe
changegroup: fix typo introduced in 9f2c407caf34
Jim Hague <jim.hague@acm.org>
parents:
13458
diff
changeset
|
322 d = readexactly(self._stream, 4) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
323 l = struct.unpack(b">l", d)[0] |
13458
9f2c407caf34
changegroup: don't accept odd chunk headers
Mads Kiilerich <mads@kiilerich.com>
parents:
13457
diff
changeset
|
324 if l <= 4: |
9f2c407caf34
changegroup: don't accept odd chunk headers
Mads Kiilerich <mads@kiilerich.com>
parents:
13457
diff
changeset
|
325 if l: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
326 raise error.Abort(_(b"invalid chunk length %d") % l) |
13458
9f2c407caf34
changegroup: don't accept odd chunk headers
Mads Kiilerich <mads@kiilerich.com>
parents:
13457
diff
changeset
|
327 return 0 |
9f2c407caf34
changegroup: don't accept odd chunk headers
Mads Kiilerich <mads@kiilerich.com>
parents:
13457
diff
changeset
|
328 if self.callback: |
12334
50946802593d
bundle: refactor progress callback
Matt Mackall <mpm@selenic.com>
parents:
12333
diff
changeset
|
329 self.callback() |
13458
9f2c407caf34
changegroup: don't accept odd chunk headers
Mads Kiilerich <mads@kiilerich.com>
parents:
13457
diff
changeset
|
330 return l - 4 |
12334
50946802593d
bundle: refactor progress callback
Matt Mackall <mpm@selenic.com>
parents:
12333
diff
changeset
|
331 |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
332 def changelogheader(self): |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
333 """v10 does not have a changelog header chunk""" |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
334 return {} |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
335 |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
336 def manifestheader(self): |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
337 """v10 does not have a manifest header chunk""" |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
338 return {} |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
339 |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
340 def filelogheader(self): |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
341 """return the header of the filelogs chunk, v10 only has the filename""" |
26707
5ee6bd529300
changegroup: mark cg1unpacker.chunklength as private
Augie Fackler <augie@google.com>
parents:
26706
diff
changeset
|
342 l = self._chunklength() |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
343 if not l: |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
344 return {} |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
345 fname = readexactly(self._stream, l) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
346 return {b'filename': fname} |
12334
50946802593d
bundle: refactor progress callback
Matt Mackall <mpm@selenic.com>
parents:
12333
diff
changeset
|
347 |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
348 def _deltaheader(self, headertuple, prevnode): |
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
349 node, p1, p2, cs = headertuple |
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
350 if prevnode is None: |
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
351 deltabase = p1 |
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
352 else: |
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
353 deltabase = prevnode |
27433
12f727a5b434
changegroup: add flags field to cg3 delta header
Mike Edgar <adgar@google.com>
parents:
27432
diff
changeset
|
354 flags = 0 |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
355 protocol_flags = 0 |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
356 return node, p1, p2, deltabase, cs, flags, protocol_flags |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
357 |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
358 def deltachunk(self, prevnode): |
47340
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
359 # Chunkdata: (node, p1, p2, cs, deltabase, delta, flags, sidedata, proto_flags) |
26707
5ee6bd529300
changegroup: mark cg1unpacker.chunklength as private
Augie Fackler <augie@google.com>
parents:
26706
diff
changeset
|
360 l = self._chunklength() |
12336
9d234f7d8a77
bundle: move chunk parsing into unbundle class
Matt Mackall <mpm@selenic.com>
parents:
12335
diff
changeset
|
361 if not l: |
9d234f7d8a77
bundle: move chunk parsing into unbundle class
Matt Mackall <mpm@selenic.com>
parents:
12335
diff
changeset
|
362 return {} |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
363 headerdata = readexactly(self._stream, self.deltaheadersize) |
38896
271854adc3a6
changegroup: make delta header struct formatters actual structs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38895
diff
changeset
|
364 header = self.deltaheader.unpack(headerdata) |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
365 delta = readexactly(self._stream, l - self.deltaheadersize) |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
366 header = self._deltaheader(header, prevnode) |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
367 node, p1, p2, deltabase, cs, flags, protocol_flags = header |
47340
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
368 return node, p1, p2, cs, deltabase, delta, flags, {}, protocol_flags |
12336
9d234f7d8a77
bundle: move chunk parsing into unbundle class
Matt Mackall <mpm@selenic.com>
parents:
12335
diff
changeset
|
369 |
20999
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
370 def getchunks(self): |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
371 """returns all the chunks contains in the bundle |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
372 |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
373 Used when you need to forward the binary stream to a file or another |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
374 network API. To do so, it parse the changegroup data, otherwise it will |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
375 block in case of sshrepo because it don't know the end of the stream. |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
376 """ |
34091
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
377 # For changegroup 1 and 2, we expect 3 parts: changelog, manifestlog, |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
378 # and a list of filelogs. For changegroup 3, we expect 4 parts: |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
379 # changelog, manifestlog, a list of tree manifestlogs, and a list of |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
380 # filelogs. |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
381 # |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
382 # Changelog and manifestlog parts are terminated with empty chunks. The |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
383 # tree and file parts are a list of entry sections. Each entry section |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
384 # is a series of chunks terminating in an empty chunk. The list of these |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
385 # entry sections is terminated in yet another empty chunk, so we know |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
386 # we've reached the end of the tree/file list when we reach an empty |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
387 # chunk that was proceeded by no non-empty chunks. |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
388 |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
389 parts = 0 |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
390 while parts < 2 + self._grouplistcount: |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
391 noentries = True |
20999
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
392 while True: |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
393 chunk = getchunk(self) |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
394 if not chunk: |
34091
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
395 # The first two empty chunks represent the end of the |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
396 # changelog and the manifestlog portions. The remaining |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
397 # empty chunks represent either A) the end of individual |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
398 # tree or file entries in the file list, or B) the end of |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
399 # the entire list. It's the end of the entire list if there |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
400 # were no entries (i.e. noentries is True). |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
401 if parts < 2: |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
402 parts += 1 |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
403 elif noentries: |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
404 parts += 1 |
20999
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
405 break |
34091
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
406 noentries = False |
20999
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
407 yield chunkheader(len(chunk)) |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
408 pos = 0 |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
409 while pos < len(chunk): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
410 next = pos + 2 ** 20 |
20999
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
411 yield chunk[pos:next] |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
412 pos = next |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
413 yield closechunk() |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
414 |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
415 def _unpackmanifests( |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
416 self, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
417 repo, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
418 revmap, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
419 trp, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
420 prog, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
421 addrevisioncb=None, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
422 debug_info=None, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
423 delta_base_reuse_policy=None, |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
424 ): |
38346
83534c4ec58b
changegroup: use progress helper in apply() (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
38164
diff
changeset
|
425 self.callback = prog.increment |
26712
04176eaf911b
changegroup: move manifest unpacking into its own method
Augie Fackler <augie@google.com>
parents:
26711
diff
changeset
|
426 # no need to check for empty manifest group here: |
04176eaf911b
changegroup: move manifest unpacking into its own method
Augie Fackler <augie@google.com>
parents:
26711
diff
changeset
|
427 # if the result of the merge of 1 and 2 is the same in 3 and 4, |
04176eaf911b
changegroup: move manifest unpacking into its own method
Augie Fackler <augie@google.com>
parents:
26711
diff
changeset
|
428 # no new manifest will be created and the manifest group will |
04176eaf911b
changegroup: move manifest unpacking into its own method
Augie Fackler <augie@google.com>
parents:
26711
diff
changeset
|
429 # be empty during the pull |
04176eaf911b
changegroup: move manifest unpacking into its own method
Augie Fackler <augie@google.com>
parents:
26711
diff
changeset
|
430 self.manifestheader() |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34257
diff
changeset
|
431 deltas = self.deltaiter() |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
432 storage = repo.manifestlog.getstorage(b'') |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
433 storage.addgroup( |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
434 deltas, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
435 revmap, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
436 trp, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
437 addrevisioncb=addrevisioncb, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
438 debug_info=debug_info, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
439 delta_base_reuse_policy=delta_base_reuse_policy, |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
440 ) |
38373
ef692614e601
progress: hide update(None) in a new complete() method
Martin von Zweigbergk <martinvonz@google.com>
parents:
38346
diff
changeset
|
441 prog.complete() |
28360
11287888ce4b
changegroup: exclude submanifests from manifest progress
Martin von Zweigbergk <martinvonz@google.com>
parents:
28281
diff
changeset
|
442 self.callback = None |
26712
04176eaf911b
changegroup: move manifest unpacking into its own method
Augie Fackler <augie@google.com>
parents:
26711
diff
changeset
|
443 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
444 def apply( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
445 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
446 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
447 tr, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
448 srctype, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
449 url, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
450 targetphase=phases.draft, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
451 expectedtotal=None, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
452 sidedata_categories=None, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
453 delta_base_reuse_policy=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
454 ): |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
455 """Add the changegroup returned by source.read() to this repo. |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
456 srctype is a string like 'push', 'pull', or 'unbundle'. url is |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
457 the URL of the repo where this changegroup is coming from. |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
458 |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
459 Return an integer summarizing the change to this repo: |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
460 - nothing changed or no source: 0 |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
461 - more heads than before: 1+added heads (2..n) |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
462 - fewer heads than before: -1-removed heads (-2..-n) |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
463 - number of heads stays the same: 1 |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
464 |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
465 `sidedata_categories` is an optional set of the remote's sidedata wanted |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
466 categories. |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
467 |
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
468 `delta_base_reuse_policy` is an optional argument, when set to a value |
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
469 it will control the way the delta contained into the bundle are reused |
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
470 when applied in the revlog. |
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
471 |
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
472 See `DELTA_BASE_REUSE_*` entry in mercurial.revlogutils.constants. |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
473 """ |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
474 repo = repo.unfiltered() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
475 |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
476 debug_info = None |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
477 if repo.ui.configbool(b'debug', b'unbundling-stats'): |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
478 debug_info = [] |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
479 |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
480 # Only useful if we're adding sidedata categories. If both peers have |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
481 # the same categories, then we simply don't do anything. |
47075
5554aacd783f
sidedata: gate sidedata functionality to revlogv2 in more places
Raphaël Gomès <rgomes@octobus.net>
parents:
47073
diff
changeset
|
482 adding_sidedata = ( |
47263
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47216
diff
changeset
|
483 ( |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47216
diff
changeset
|
484 requirements.REVLOGV2_REQUIREMENT in repo.requirements |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47216
diff
changeset
|
485 or requirements.CHANGELOGV2_REQUIREMENT in repo.requirements |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47216
diff
changeset
|
486 ) |
47075
5554aacd783f
sidedata: gate sidedata functionality to revlogv2 in more places
Raphaël Gomès <rgomes@octobus.net>
parents:
47073
diff
changeset
|
487 and self.version == b'04' |
5554aacd783f
sidedata: gate sidedata functionality to revlogv2 in more places
Raphaël Gomès <rgomes@octobus.net>
parents:
47073
diff
changeset
|
488 and srctype == b'pull' |
5554aacd783f
sidedata: gate sidedata functionality to revlogv2 in more places
Raphaël Gomès <rgomes@octobus.net>
parents:
47073
diff
changeset
|
489 ) |
5554aacd783f
sidedata: gate sidedata functionality to revlogv2 in more places
Raphaël Gomès <rgomes@octobus.net>
parents:
47073
diff
changeset
|
490 if adding_sidedata: |
47085
3aab2330b7d3
sidedata: move sidedata-related utils to the dedicated module
Raphaël Gomès <rgomes@octobus.net>
parents:
47077
diff
changeset
|
491 sidedata_helpers = sidedatamod.get_sidedata_helpers( |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
492 repo, |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
493 sidedata_categories or set(), |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
494 pull=True, |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
495 ) |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
496 else: |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
497 sidedata_helpers = None |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
498 |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
499 def csmap(x): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
500 repo.ui.debug(b"add changeset %s\n" % short(x)) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
501 return len(cl) |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
502 |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
503 def revmap(x): |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
504 return cl.rev(x) |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
505 |
26880
fa7f8b686633
changegroup: fix the scope of a try finally
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26859
diff
changeset
|
506 try: |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
507 # The transaction may already carry source information. In this |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
508 # case we use the top level data. We overwrite the argument |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
509 # because we need to use the top level value (if they exist) |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
510 # in this function. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
511 srctype = tr.hookargs.setdefault(b'source', srctype) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
512 tr.hookargs.setdefault(b'url', url) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
513 repo.hook( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
514 b'prechangegroup', throw=True, **pycompat.strkwargs(tr.hookargs) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
515 ) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
516 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
517 # write changelog data to temp files so concurrent readers |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
518 # will not see an inconsistent view |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
519 cl = repo.changelog |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
520 cl.delayupdate(tr) |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
521 oldheads = set(cl.heads()) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
522 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
523 trp = weakref.proxy(tr) |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
524 # pull off the changeset group |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
525 repo.ui.status(_(b"adding changesets\n")) |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
526 clstart = len(cl) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
527 progress = repo.ui.makeprogress( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
528 _(b'changesets'), unit=_(b'chunks'), total=expectedtotal |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
529 ) |
38346
83534c4ec58b
changegroup: use progress helper in apply() (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
38164
diff
changeset
|
530 self.callback = progress.increment |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
531 |
43489
ea0b44255a31
changegroup: avoid shadowing a set with an int
Augie Fackler <augie@google.com>
parents:
43132
diff
changeset
|
532 efilesset = set() |
46510
fa7ae7aa0efd
changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de>
parents:
46509
diff
changeset
|
533 duprevs = [] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
534 |
46509
7a93b7b3dc2d
revlog: change addgroup callbacks to take revision numbers
Joerg Sonnenberger <joerg@bec.de>
parents:
46373
diff
changeset
|
535 def ondupchangelog(cl, rev): |
7a93b7b3dc2d
revlog: change addgroup callbacks to take revision numbers
Joerg Sonnenberger <joerg@bec.de>
parents:
46373
diff
changeset
|
536 if rev < clstart: |
48473
8843c9a8771b
pytype: stop excluding changegroup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
47340
diff
changeset
|
537 duprevs.append(rev) # pytype: disable=attribute-error |
45789
09735cde6275
phases: allow registration and boundary advancement with revision sets
Joerg Sonnenberger <joerg@bec.de>
parents:
45788
diff
changeset
|
538 |
46509
7a93b7b3dc2d
revlog: change addgroup callbacks to take revision numbers
Joerg Sonnenberger <joerg@bec.de>
parents:
46373
diff
changeset
|
539 def onchangelog(cl, rev): |
46371
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45790
diff
changeset
|
540 ctx = cl.changelogrevision(rev) |
48473
8843c9a8771b
pytype: stop excluding changegroup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
47340
diff
changeset
|
541 assert efilesset is not None # help pytype |
46371
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45790
diff
changeset
|
542 efilesset.update(ctx.files) |
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45790
diff
changeset
|
543 repo.register_changeset(rev, ctx) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
544 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
545 self.changelogheader() |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34257
diff
changeset
|
546 deltas = self.deltaiter() |
45788
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
547 if not cl.addgroup( |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
548 deltas, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
549 csmap, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
550 trp, |
46373
711ba0f1057e
revlog: decouple caching from addrevision callback for addgroup
Joerg Sonnenberger <joerg@bec.de>
parents:
46371
diff
changeset
|
551 alwayscache=True, |
45788
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
552 addrevisioncb=onchangelog, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
553 duplicaterevisioncb=ondupchangelog, |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
554 debug_info=debug_info, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
555 delta_base_reuse_policy=delta_base_reuse_policy, |
45788
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
556 ): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
557 repo.ui.develwarn( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
558 b'applied empty changelog from changegroup', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
559 config=b'warn-empty-changegroup', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
560 ) |
45788
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
561 efiles = len(efilesset) |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
562 clend = len(cl) |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
563 changesets = clend - clstart |
38373
ef692614e601
progress: hide update(None) in a new complete() method
Martin von Zweigbergk <martinvonz@google.com>
parents:
38346
diff
changeset
|
564 progress.complete() |
45729
44d84b726c8a
unbundle: free temporary objects after use
Joerg Sonnenberger <joerg@bec.de>
parents:
45552
diff
changeset
|
565 del deltas |
44d84b726c8a
unbundle: free temporary objects after use
Joerg Sonnenberger <joerg@bec.de>
parents:
45552
diff
changeset
|
566 # TODO Python 2.7 removal |
44d84b726c8a
unbundle: free temporary objects after use
Joerg Sonnenberger <joerg@bec.de>
parents:
45552
diff
changeset
|
567 # del efilesset |
44d84b726c8a
unbundle: free temporary objects after use
Joerg Sonnenberger <joerg@bec.de>
parents:
45552
diff
changeset
|
568 efilesset = None |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
569 self.callback = None |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
570 |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
571 # Keep track of the (non-changelog) revlogs we've updated and their |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
572 # range of new revisions for sidedata rewrite. |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
573 # TODO do something more efficient than keeping the reference to |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
574 # the revlogs, especially memory-wise. |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
575 touched_manifests = {} |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
576 touched_filelogs = {} |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
577 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
578 # pull off the manifest group |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
579 repo.ui.status(_(b"adding manifests\n")) |
38346
83534c4ec58b
changegroup: use progress helper in apply() (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
38164
diff
changeset
|
580 # We know that we'll never have more manifests than we had |
83534c4ec58b
changegroup: use progress helper in apply() (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
38164
diff
changeset
|
581 # changesets. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
582 progress = repo.ui.makeprogress( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
583 _(b'manifests'), unit=_(b'chunks'), total=changesets |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
584 ) |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
585 on_manifest_rev = None |
47073
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
586 if sidedata_helpers: |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
587 if revlog_constants.KIND_MANIFESTLOG in sidedata_helpers[1]: |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
588 |
47073
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
589 def on_manifest_rev(manifest, rev): |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
590 range = touched_manifests.get(manifest) |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
591 if not range: |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
592 touched_manifests[manifest] = (rev, rev) |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
593 else: |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
594 assert rev == range[1] + 1 |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
595 touched_manifests[manifest] = (range[0], rev) |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
596 |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
597 self._unpackmanifests( |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
598 repo, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
599 revmap, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
600 trp, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
601 progress, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
602 addrevisioncb=on_manifest_rev, |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
603 debug_info=debug_info, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
604 delta_base_reuse_policy=delta_base_reuse_policy, |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
605 ) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
606 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
607 needfiles = {} |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
608 if repo.ui.configbool(b'server', b'validate'): |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
609 cl = repo.changelog |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
610 ml = repo.manifestlog |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
611 # validate incoming csets have their manifests |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
612 for cset in range(clstart, clend): |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
613 mfnode = cl.changelogrevision(cset).manifest |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
614 mfest = ml[mfnode].readdelta() |
45789
09735cde6275
phases: allow registration and boundary advancement with revision sets
Joerg Sonnenberger <joerg@bec.de>
parents:
45788
diff
changeset
|
615 # store file nodes we must see |
48913
f254fc73d956
global: bulk replace simple pycompat.iteritems(x) with x.items()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48875
diff
changeset
|
616 for f, n in mfest.items(): |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
617 needfiles.setdefault(f, set()).add(n) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
618 |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
619 on_filelog_rev = None |
47073
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
620 if sidedata_helpers: |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
621 if revlog_constants.KIND_FILELOG in sidedata_helpers[1]: |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
622 |
47073
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
623 def on_filelog_rev(filelog, rev): |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
624 range = touched_filelogs.get(filelog) |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
625 if not range: |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
626 touched_filelogs[filelog] = (rev, rev) |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
627 else: |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
628 assert rev == range[1] + 1 |
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
629 touched_filelogs[filelog] = (range[0], rev) |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
630 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
631 # process the files |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
632 repo.ui.status(_(b"adding file changes\n")) |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
633 newrevs, newfiles = _addchangegroupfiles( |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
634 repo, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
635 self, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
636 revmap, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
637 trp, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
638 efiles, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
639 needfiles, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
640 addrevisioncb=on_filelog_rev, |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
641 debug_info=debug_info, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
642 delta_base_reuse_policy=delta_base_reuse_policy, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
643 ) |
42897
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
644 |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
645 if sidedata_helpers: |
47073
64cd1496bb70
revlog: replace the old `revlog_kind` approach with the new `target` one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
646 if revlog_constants.KIND_CHANGELOG in sidedata_helpers[1]: |
47216
2bd4b5218918
revlog: pass a transaction object to `rewrite_sidedata`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47156
diff
changeset
|
647 cl.rewrite_sidedata( |
2bd4b5218918
revlog: pass a transaction object to `rewrite_sidedata`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47156
diff
changeset
|
648 trp, sidedata_helpers, clstart, clend - 1 |
2bd4b5218918
revlog: pass a transaction object to `rewrite_sidedata`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47156
diff
changeset
|
649 ) |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
650 for mf, (startrev, endrev) in touched_manifests.items(): |
47216
2bd4b5218918
revlog: pass a transaction object to `rewrite_sidedata`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47156
diff
changeset
|
651 mf.rewrite_sidedata(trp, sidedata_helpers, startrev, endrev) |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
652 for fl, (startrev, endrev) in touched_filelogs.items(): |
47216
2bd4b5218918
revlog: pass a transaction object to `rewrite_sidedata`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47156
diff
changeset
|
653 fl.rewrite_sidedata(trp, sidedata_helpers, startrev, endrev) |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
654 |
42897
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
655 # making sure the value exists |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
656 tr.changes.setdefault(b'changegroup-count-changesets', 0) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
657 tr.changes.setdefault(b'changegroup-count-revisions', 0) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
658 tr.changes.setdefault(b'changegroup-count-files', 0) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
659 tr.changes.setdefault(b'changegroup-count-heads', 0) |
42897
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
660 |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
661 # some code use bundle operation for internal purpose. They usually |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
662 # set `ui.quiet` to do this outside of user sight. Size the report |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
663 # of such operation now happens at the end of the transaction, that |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
664 # ui.quiet has not direct effect on the output. |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
665 # |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
666 # To preserve this intend use an inelegant hack, we fail to report |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
667 # the change if `quiet` is set. We should probably move to |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
668 # something better, but this is a good first step to allow the "end |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
669 # of transaction report" to pass tests. |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
670 if not repo.ui.quiet: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
671 tr.changes[b'changegroup-count-changesets'] += changesets |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
672 tr.changes[b'changegroup-count-revisions'] += newrevs |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
673 tr.changes[b'changegroup-count-files'] += newfiles |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
674 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
675 deltaheads = 0 |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
676 if oldheads: |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
677 heads = cl.heads() |
42897
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
678 deltaheads += len(heads) - len(oldheads) |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
679 for h in heads: |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
680 if h not in oldheads and repo[h].closesbranch(): |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
681 deltaheads -= 1 |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
682 |
42897
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
683 # see previous comment about checking ui.quiet |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
684 if not repo.ui.quiet: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
685 tr.changes[b'changegroup-count-heads'] += deltaheads |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
686 repo.invalidatevolatilesets() |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
687 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
688 if changesets > 0: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
689 if b'node' not in tr.hookargs: |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
690 tr.hookargs[b'node'] = hex(cl.node(clstart)) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
691 tr.hookargs[b'node_last'] = hex(cl.node(clend - 1)) |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
692 hookargs = dict(tr.hookargs) |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
693 else: |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
694 hookargs = dict(tr.hookargs) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
695 hookargs[b'node'] = hex(cl.node(clstart)) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
696 hookargs[b'node_last'] = hex(cl.node(clend - 1)) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
697 repo.hook( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
698 b'pretxnchangegroup', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
699 throw=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
700 **pycompat.strkwargs(hookargs) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
701 ) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
702 |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
703 added = range(clstart, clend) |
33456
ae052d04b89e
phases: rework phase movement code in 'cg.apply' to use 'registernew'
Boris Feld <boris.feld@octobus.net>
parents:
33406
diff
changeset
|
704 phaseall = None |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
705 if srctype in (b'push', b'serve'): |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
706 # Old servers can not push the boundary themselves. |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
707 # New servers won't push the boundary if changeset already |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
708 # exists locally as secret |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
709 # |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
710 # We should not use added here but the list of all change in |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
711 # the bundle |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
712 if repo.publishing(): |
33456
ae052d04b89e
phases: rework phase movement code in 'cg.apply' to use 'registernew'
Boris Feld <boris.feld@octobus.net>
parents:
33406
diff
changeset
|
713 targetphase = phaseall = phases.public |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
714 else: |
33456
ae052d04b89e
phases: rework phase movement code in 'cg.apply' to use 'registernew'
Boris Feld <boris.feld@octobus.net>
parents:
33406
diff
changeset
|
715 # closer target phase computation |
ae052d04b89e
phases: rework phase movement code in 'cg.apply' to use 'registernew'
Boris Feld <boris.feld@octobus.net>
parents:
33406
diff
changeset
|
716 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
717 # Those changesets have been pushed from the |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
718 # outside, their phases are going to be pushed |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
719 # alongside. Therefor `targetphase` is |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
720 # ignored. |
33456
ae052d04b89e
phases: rework phase movement code in 'cg.apply' to use 'registernew'
Boris Feld <boris.feld@octobus.net>
parents:
33406
diff
changeset
|
721 targetphase = phaseall = phases.draft |
ae052d04b89e
phases: rework phase movement code in 'cg.apply' to use 'registernew'
Boris Feld <boris.feld@octobus.net>
parents:
33406
diff
changeset
|
722 if added: |
45790
5d65e04b6a80
phases: convert registernew users to use revision sets
Joerg Sonnenberger <joerg@bec.de>
parents:
45789
diff
changeset
|
723 phases.registernew(repo, tr, targetphase, added) |
33456
ae052d04b89e
phases: rework phase movement code in 'cg.apply' to use 'registernew'
Boris Feld <boris.feld@octobus.net>
parents:
33406
diff
changeset
|
724 if phaseall is not None: |
46510
fa7ae7aa0efd
changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de>
parents:
46509
diff
changeset
|
725 if duprevs: |
fa7ae7aa0efd
changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de>
parents:
46509
diff
changeset
|
726 duprevs.extend(added) |
fa7ae7aa0efd
changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de>
parents:
46509
diff
changeset
|
727 else: |
fa7ae7aa0efd
changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de>
parents:
46509
diff
changeset
|
728 duprevs = added |
fa7ae7aa0efd
changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de>
parents:
46509
diff
changeset
|
729 phases.advanceboundary(repo, tr, phaseall, [], revs=duprevs) |
fa7ae7aa0efd
changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de>
parents:
46509
diff
changeset
|
730 duprevs = [] |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
731 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
732 if changesets > 0: |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
733 |
43778
888bd39ed555
lock: pass "success" boolean to _afterlock callbacks
Kyle Lippincott <spectral@google.com>
parents:
43503
diff
changeset
|
734 def runhooks(unused_success): |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
735 # These hooks run when the lock releases, not when the |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
736 # transaction closes. So it's possible for the changelog |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
737 # to have changed since we last saw it. |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
738 if clstart >= len(repo): |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
739 return |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
740 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
741 repo.hook(b"changegroup", **pycompat.strkwargs(hookargs)) |
27867
7ced54ebf972
with: use context manager for transaction in changegroup apply
Bryan O'Sullivan <bryano@fb.com>
parents:
27754
diff
changeset
|
742 |
45789
09735cde6275
phases: allow registration and boundary advancement with revision sets
Joerg Sonnenberger <joerg@bec.de>
parents:
45788
diff
changeset
|
743 for rev in added: |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
744 args = hookargs.copy() |
45789
09735cde6275
phases: allow registration and boundary advancement with revision sets
Joerg Sonnenberger <joerg@bec.de>
parents:
45788
diff
changeset
|
745 args[b'node'] = hex(cl.node(rev)) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
746 del args[b'node_last'] |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
747 repo.hook(b"incoming", **pycompat.strkwargs(args)) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
748 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
749 newheads = [h for h in repo.heads() if h not in oldheads] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
750 repo.ui.log( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
751 b"incoming", |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
752 b"%d incoming changes - new heads: %s\n", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
753 len(added), |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
754 b', '.join([hex(c[:6]) for c in newheads]), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
755 ) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
756 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
757 tr.addpostclose( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
758 b'changegroup-runhooks-%020i' % clstart, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
759 lambda tr: repo._afterlock(runhooks), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
760 ) |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
761 if debug_info is not None: |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
762 display_unbundle_debug_info(repo.ui, debug_info) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
763 finally: |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
764 repo.ui.flush() |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
765 # never return 0 here: |
32870
b441296f8e9c
changegroup: rename "dh" to the clearer "deltaheads"
Martin von Zweigbergk <martinvonz@google.com>
parents:
32869
diff
changeset
|
766 if deltaheads < 0: |
33030
3e102a8dd52c
bundle2: record changegroup data in 'op.records' (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
32931
diff
changeset
|
767 ret = deltaheads - 1 |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
768 else: |
33030
3e102a8dd52c
bundle2: record changegroup data in 'op.records' (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
32931
diff
changeset
|
769 ret = deltaheads + 1 |
33461
bb72031f0ea8
changegroup: stop returning and recording added nodes in 'cg.apply'
Boris Feld <boris.feld@octobus.net>
parents:
33456
diff
changeset
|
770 return ret |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
771 |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34257
diff
changeset
|
772 def deltaiter(self): |
34148
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34103
diff
changeset
|
773 """ |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34103
diff
changeset
|
774 returns an iterator of the deltas in this changegroup |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34103
diff
changeset
|
775 |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34103
diff
changeset
|
776 Useful for passing to the underlying storage system to be stored. |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34103
diff
changeset
|
777 """ |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34103
diff
changeset
|
778 chain = None |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34103
diff
changeset
|
779 for chunkdata in iter(lambda: self.deltachunk(chain), {}): |
47340
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
780 # Chunkdata: (node, p1, p2, cs, deltabase, delta, flags, sidedata, proto_flags) |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
781 yield chunkdata[:8] |
34294
05131c963767
changegroup: remove dictionary creation from deltachunk
Durham Goode <durham@fb.com>
parents:
34291
diff
changeset
|
782 chain = chunkdata[0] |
34148
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34103
diff
changeset
|
783 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
784 |
23181
832b7ef275c8
changegroup: introduce cg2packer/unpacker
Sune Foldager <cryo@cyanite.org>
parents:
23178
diff
changeset
|
785 class cg2unpacker(cg1unpacker): |
26708
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
786 """Unpacker for cg2 streams. |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
787 |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
788 cg2 streams add support for generaldelta, so the delta header |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
789 format is slightly different. All other features about the data |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
790 remain the same. |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
791 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
792 |
23181
832b7ef275c8
changegroup: introduce cg2packer/unpacker
Sune Foldager <cryo@cyanite.org>
parents:
23178
diff
changeset
|
793 deltaheader = _CHANGEGROUPV2_DELTA_HEADER |
38896
271854adc3a6
changegroup: make delta header struct formatters actual structs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38895
diff
changeset
|
794 deltaheadersize = deltaheader.size |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
795 version = b'02' |
23181
832b7ef275c8
changegroup: introduce cg2packer/unpacker
Sune Foldager <cryo@cyanite.org>
parents:
23178
diff
changeset
|
796 |
832b7ef275c8
changegroup: introduce cg2packer/unpacker
Sune Foldager <cryo@cyanite.org>
parents:
23178
diff
changeset
|
797 def _deltaheader(self, headertuple, prevnode): |
832b7ef275c8
changegroup: introduce cg2packer/unpacker
Sune Foldager <cryo@cyanite.org>
parents:
23178
diff
changeset
|
798 node, p1, p2, deltabase, cs = headertuple |
27433
12f727a5b434
changegroup: add flags field to cg3 delta header
Mike Edgar <adgar@google.com>
parents:
27432
diff
changeset
|
799 flags = 0 |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
800 protocol_flags = 0 |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
801 return node, p1, p2, deltabase, cs, flags, protocol_flags |
23181
832b7ef275c8
changegroup: introduce cg2packer/unpacker
Sune Foldager <cryo@cyanite.org>
parents:
23178
diff
changeset
|
802 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
803 |
27432
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
804 class cg3unpacker(cg2unpacker): |
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
805 """Unpacker for cg3 streams. |
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
806 |
27433
12f727a5b434
changegroup: add flags field to cg3 delta header
Mike Edgar <adgar@google.com>
parents:
27432
diff
changeset
|
807 cg3 streams add support for exchanging treemanifests and revlog |
27753
d4071cc73f46
changegroup3: add empty chunk separating directories and files
Martin von Zweigbergk <martinvonz@google.com>
parents:
27752
diff
changeset
|
808 flags. It adds the revlog flags to the delta header and an empty chunk |
d4071cc73f46
changegroup3: add empty chunk separating directories and files
Martin von Zweigbergk <martinvonz@google.com>
parents:
27752
diff
changeset
|
809 separating manifests and files. |
27432
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
810 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
811 |
27433
12f727a5b434
changegroup: add flags field to cg3 delta header
Mike Edgar <adgar@google.com>
parents:
27432
diff
changeset
|
812 deltaheader = _CHANGEGROUPV3_DELTA_HEADER |
38896
271854adc3a6
changegroup: make delta header struct formatters actual structs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38895
diff
changeset
|
813 deltaheadersize = deltaheader.size |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
814 version = b'03' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
815 _grouplistcount = 2 # One list of manifests and one list of files |
27432
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
816 |
27433
12f727a5b434
changegroup: add flags field to cg3 delta header
Mike Edgar <adgar@google.com>
parents:
27432
diff
changeset
|
817 def _deltaheader(self, headertuple, prevnode): |
12f727a5b434
changegroup: add flags field to cg3 delta header
Mike Edgar <adgar@google.com>
parents:
27432
diff
changeset
|
818 node, p1, p2, deltabase, cs, flags = headertuple |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
819 protocol_flags = 0 |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
820 return node, p1, p2, deltabase, cs, flags, protocol_flags |
27433
12f727a5b434
changegroup: add flags field to cg3 delta header
Mike Edgar <adgar@google.com>
parents:
27432
diff
changeset
|
821 |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
822 def _unpackmanifests( |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
823 self, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
824 repo, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
825 revmap, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
826 trp, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
827 prog, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
828 addrevisioncb=None, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
829 debug_info=None, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
830 delta_base_reuse_policy=None, |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
831 ): |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
832 super(cg3unpacker, self)._unpackmanifests( |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
833 repo, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
834 revmap, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
835 trp, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
836 prog, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
837 addrevisioncb=addrevisioncb, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
838 debug_info=debug_info, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
839 delta_base_reuse_policy=delta_base_reuse_policy, |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
840 ) |
29724
4e7be6e33269
changegroup: use `iter(callable, sentinel)` instead of while True
Augie Fackler <augie@google.com>
parents:
29690
diff
changeset
|
841 for chunkdata in iter(self.filelogheader, {}): |
27754
a09f143daaf4
changegroup3: move treemanifest support into _unpackmanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27753
diff
changeset
|
842 # If we get here, there are directory manifests in the changegroup |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
843 d = chunkdata[b"filename"] |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
844 repo.ui.debug(b"adding %s revisions\n" % d) |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34257
diff
changeset
|
845 deltas = self.deltaiter() |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
846 if not repo.manifestlog.getstorage(d).addgroup( |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
847 deltas, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
848 revmap, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
849 trp, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
850 addrevisioncb=addrevisioncb, |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
851 debug_info=debug_info, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
852 delta_base_reuse_policy=delta_base_reuse_policy, |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
853 ): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
854 raise error.Abort(_(b"received dir revlog group is empty")) |
27754
a09f143daaf4
changegroup3: move treemanifest support into _unpackmanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27753
diff
changeset
|
855 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
856 |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
857 class cg4unpacker(cg3unpacker): |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
858 """Unpacker for cg4 streams. |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
859 |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
860 cg4 streams add support for exchanging sidedata. |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
861 """ |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
862 |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
863 deltaheader = _CHANGEGROUPV4_DELTA_HEADER |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
864 deltaheadersize = deltaheader.size |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
865 version = b'04' |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
866 |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
867 def _deltaheader(self, headertuple, prevnode): |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
868 protocol_flags, node, p1, p2, deltabase, cs, flags = headertuple |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
869 return node, p1, p2, deltabase, cs, flags, protocol_flags |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
870 |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
871 def deltachunk(self, prevnode): |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
872 res = super(cg4unpacker, self).deltachunk(prevnode) |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
873 if not res: |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
874 return res |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
875 |
47340
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
876 ( |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
877 node, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
878 p1, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
879 p2, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
880 cs, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
881 deltabase, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
882 delta, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
883 flags, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
884 sidedata, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
885 protocol_flags, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
886 ) = res |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
887 assert not sidedata |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
888 |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
889 sidedata = {} |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
890 if protocol_flags & storageutil.CG_FLAG_SIDEDATA: |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
891 sidedata_raw = getchunk(self._stream) |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
892 sidedata = sidedatamod.deserialize_sidedata(sidedata_raw) |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
893 |
47340
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
894 return ( |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
895 node, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
896 p1, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
897 p2, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
898 cs, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
899 deltabase, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
900 delta, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
901 flags, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
902 sidedata, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
903 protocol_flags, |
3f00665bbea0
changegroup: fix deltachunk API to be consistent from one class to another
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47263
diff
changeset
|
904 ) |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
905 |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
906 |
48946
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48913
diff
changeset
|
907 class headerlessfixup: |
12329
7458de933f26
bundle: push chunkbuffer down into decompress
Matt Mackall <mpm@selenic.com>
parents:
12044
diff
changeset
|
908 def __init__(self, fh, h): |
7458de933f26
bundle: push chunkbuffer down into decompress
Matt Mackall <mpm@selenic.com>
parents:
12044
diff
changeset
|
909 self._h = h |
7458de933f26
bundle: push chunkbuffer down into decompress
Matt Mackall <mpm@selenic.com>
parents:
12044
diff
changeset
|
910 self._fh = fh |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
911 |
12329
7458de933f26
bundle: push chunkbuffer down into decompress
Matt Mackall <mpm@selenic.com>
parents:
12044
diff
changeset
|
912 def read(self, n): |
7458de933f26
bundle: push chunkbuffer down into decompress
Matt Mackall <mpm@selenic.com>
parents:
12044
diff
changeset
|
913 if self._h: |
7458de933f26
bundle: push chunkbuffer down into decompress
Matt Mackall <mpm@selenic.com>
parents:
12044
diff
changeset
|
914 d, self._h = self._h[:n], self._h[n:] |
7458de933f26
bundle: push chunkbuffer down into decompress
Matt Mackall <mpm@selenic.com>
parents:
12044
diff
changeset
|
915 if len(d) < n: |
13457
e74fe15dc7fd
changegroup: verify all stream reads
Mads Kiilerich <mads@kiilerich.com>
parents:
13456
diff
changeset
|
916 d += readexactly(self._fh, n - len(d)) |
12329
7458de933f26
bundle: push chunkbuffer down into decompress
Matt Mackall <mpm@selenic.com>
parents:
12044
diff
changeset
|
917 return d |
13457
e74fe15dc7fd
changegroup: verify all stream reads
Mads Kiilerich <mads@kiilerich.com>
parents:
13456
diff
changeset
|
918 return readexactly(self._fh, n) |
12329
7458de933f26
bundle: push chunkbuffer down into decompress
Matt Mackall <mpm@selenic.com>
parents:
12044
diff
changeset
|
919 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
920 |
46780
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46718
diff
changeset
|
921 def _revisiondeltatochunks(repo, delta, headerfn): |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
922 """Serialize a revisiondelta to changegroup chunks.""" |
39016
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
923 |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
924 # The captured revision delta may be encoded as a delta against |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
925 # a base revision or as a full revision. The changegroup format |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
926 # requires that everything on the wire be deltas. So for full |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
927 # revisions, we need to invent a header that says to rewrite |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
928 # data. |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
929 |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
930 if delta.delta is not None: |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
931 prefix, data = b'', delta.delta |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46927
diff
changeset
|
932 elif delta.basenode == repo.nullid: |
39016
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
933 data = delta.revision |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
934 prefix = mdiff.trivialdiffheader(len(data)) |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
935 else: |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
936 data = delta.revision |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
937 prefix = mdiff.replacediffheader(delta.baserevisionsize, len(data)) |
39016
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
938 |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
939 meta = headerfn(delta) |
39016
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
940 |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
941 yield chunkheader(len(meta) + len(prefix) + len(data)) |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
942 yield meta |
39016
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
943 if prefix: |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
944 yield prefix |
39b8277e2115
changegroup: differentiate between fulltext and diff based deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39015
diff
changeset
|
945 yield data |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
946 |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
947 if delta.protocol_flags & storageutil.CG_FLAG_SIDEDATA: |
46712
e8c11a2c96c0
delta: add sidedata field to revision delta
Raphaël Gomès <rgomes@octobus.net>
parents:
46711
diff
changeset
|
948 # Need a separate chunk for sidedata to be able to differentiate |
e8c11a2c96c0
delta: add sidedata field to revision delta
Raphaël Gomès <rgomes@octobus.net>
parents:
46711
diff
changeset
|
949 # "raw delta" length and sidedata length |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
950 sidedata = delta.sidedata |
46712
e8c11a2c96c0
delta: add sidedata field to revision delta
Raphaël Gomès <rgomes@octobus.net>
parents:
46711
diff
changeset
|
951 yield chunkheader(len(sidedata)) |
e8c11a2c96c0
delta: add sidedata field to revision delta
Raphaël Gomès <rgomes@octobus.net>
parents:
46711
diff
changeset
|
952 yield sidedata |
e8c11a2c96c0
delta: add sidedata field to revision delta
Raphaël Gomès <rgomes@octobus.net>
parents:
46711
diff
changeset
|
953 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
954 |
38997
812eec3f89cb
changegroup: remove _clnodetorev
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38996
diff
changeset
|
955 def _sortnodesellipsis(store, nodes, cl, lookup): |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
956 """Sort nodes for changegroup generation.""" |
38982
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
957 # Ellipses serving mode. |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
958 # |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
959 # In a perfect world, we'd generate better ellipsis-ified graphs |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
960 # for non-changelog revlogs. In practice, we haven't started doing |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
961 # that yet, so the resulting DAGs for the manifestlog and filelogs |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
962 # are actually full of bogus parentage on all the ellipsis |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
963 # nodes. This has the side effect that, while the contents are |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
964 # correct, the individual DAGs might be completely out of whack in |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
965 # a case like 882681bc3166 and its ancestors (back about 10 |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
966 # revisions or so) in the main hg repo. |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
967 # |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
968 # The one invariant we *know* holds is that the new (potentially |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
969 # bogus) DAG shape will be valid if we order the nodes in the |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
970 # order that they're introduced in dramatis personae by the |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
971 # changelog, so what we do is we sort the non-changelog histories |
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
972 # by the order in which they are used by the changelog. |
38997
812eec3f89cb
changegroup: remove _clnodetorev
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38996
diff
changeset
|
973 key = lambda n: cl.rev(lookup(n)) |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
974 return sorted(nodes, key=key) |
38982
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
975 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
976 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
977 def _resolvenarrowrevisioninfo( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
978 cl, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
979 store, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
980 ischangelog, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
981 rev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
982 linkrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
983 linknode, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
984 clrevtolocalrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
985 fullclnodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
986 precomputedellipsis, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
987 ): |
39004
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
988 linkparents = precomputedellipsis[linkrev] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
989 |
39004
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
990 def local(clrev): |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
991 """Turn a changelog revnum into a local revnum. |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
992 |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
993 The ellipsis dag is stored as revnums on the changelog, |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
994 but when we're producing ellipsis entries for |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
995 non-changelog revlogs, we need to turn those numbers into |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
996 something local. This does that for us, and during the |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
997 changelog sending phase will also expand the stored |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
998 mappings as needed. |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
999 """ |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1000 if clrev == nullrev: |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1001 return nullrev |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1002 |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1003 if ischangelog: |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1004 return clrev |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1005 |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1006 # Walk the ellipsis-ized changelog breadth-first looking for a |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1007 # change that has been linked from the current revlog. |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1008 # |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1009 # For a flat manifest revlog only a single step should be necessary |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1010 # as all relevant changelog entries are relevant to the flat |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1011 # manifest. |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1012 # |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1013 # For a filelog or tree manifest dirlog however not every changelog |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1014 # entry will have been relevant, so we need to skip some changelog |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1015 # nodes even after ellipsis-izing. |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1016 walk = [clrev] |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1017 while walk: |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1018 p = walk[0] |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1019 walk = walk[1:] |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1020 if p in clrevtolocalrev: |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1021 return clrevtolocalrev[p] |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1022 elif p in fullclnodes: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1023 walk.extend([pp for pp in cl.parentrevs(p) if pp != nullrev]) |
39004
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1024 elif p in precomputedellipsis: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1025 walk.extend( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1026 [pp for pp in precomputedellipsis[p] if pp != nullrev] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1027 ) |
39004
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1028 else: |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1029 # In this case, we've got an ellipsis with parents |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1030 # outside the current bundle (likely an |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1031 # incremental pull). We "know" that we can use the |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1032 # value of this same revlog at whatever revision |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1033 # is pointed to by linknode. "Know" is in scare |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1034 # quotes because I haven't done enough examination |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1035 # of edge cases to convince myself this is really |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1036 # a fact - it works for all the (admittedly |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1037 # thorough) cases in our testsuite, but I would be |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1038 # somewhat unsurprised to find a case in the wild |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1039 # where this breaks down a bit. That said, I don't |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1040 # know if it would hurt anything. |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
1041 for i in range(rev, 0, -1): |
39004
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1042 if store.linkrev(i) == clrev: |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1043 return i |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1044 # We failed to resolve a parent for this node, so |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1045 # we crash the changegroup construction. |
47146
bc7d465ea11e
manifest: drop the `indexfile` from `manifestrevlog`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47086
diff
changeset
|
1046 if util.safehasattr(store, 'target'): |
47156
89e11a6da785
revlog: use revlog.display_id in narrow error message
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47148
diff
changeset
|
1047 target = store.display_id |
47146
bc7d465ea11e
manifest: drop the `indexfile` from `manifestrevlog`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47086
diff
changeset
|
1048 else: |
bc7d465ea11e
manifest: drop the `indexfile` from `manifestrevlog`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47086
diff
changeset
|
1049 # some revlog not actually a revlog |
47156
89e11a6da785
revlog: use revlog.display_id in narrow error message
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47148
diff
changeset
|
1050 target = store._revlog.display_id |
47146
bc7d465ea11e
manifest: drop the `indexfile` from `manifestrevlog`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47086
diff
changeset
|
1051 |
39004
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1052 raise error.Abort( |
46513
c3c7a86e9c24
tests: fix differing output between py2 and py3
Raphaël Gomès <rgomes@octobus.net>
parents:
46510
diff
changeset
|
1053 b"unable to resolve parent while packing '%s' %r" |
47146
bc7d465ea11e
manifest: drop the `indexfile` from `manifestrevlog`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47086
diff
changeset
|
1054 b' for changeset %r' % (target, rev, clrev) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1055 ) |
39004
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1056 |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1057 return nullrev |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1058 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1059 if not linkparents or (store.parentrevs(rev) == (nullrev, nullrev)): |
39004
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1060 p1, p2 = nullrev, nullrev |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1061 elif len(linkparents) == 1: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1062 (p1,) = sorted(local(p) for p in linkparents) |
39004
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1063 p2 = nullrev |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1064 else: |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1065 p1, p2 = sorted(local(p) for p in linkparents) |
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1066 |
39018
e793e11e1462
changegroup: introduce requests to define delta generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39017
diff
changeset
|
1067 p1node, p2node = store.node(p1), store.node(p2) |
39004
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1068 |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1069 return p1node, p2node, linknode |
39004
e11d07cc125c
changegroup: make _revisiondeltanarrow() a standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39003
diff
changeset
|
1070 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1071 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1072 def deltagroup( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1073 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1074 store, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1075 nodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1076 ischangelog, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1077 lookup, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1078 forcedeltaparentprev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1079 topic=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1080 ellipses=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1081 clrevtolocalrev=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1082 fullclnodes=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1083 precomputedellipsis=None, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1084 sidedata_helpers=None, |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1085 debug_info=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1086 ): |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1087 """Calculate deltas for a set of revisions. |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1088 |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1089 Is a generator of ``revisiondelta`` instances. |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1090 |
39239
0617a700ef7b
changegroup: change topics during generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39238
diff
changeset
|
1091 If topic is not None, progress detail will be generated using this |
0617a700ef7b
changegroup: change topics during generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39238
diff
changeset
|
1092 topic name (e.g. changesets, manifests, etc). |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1093 |
47086
8bd769b5c941
sidedata: move documentation about sidedata helpers to sidedata module
Raphaël Gomès <rgomes@octobus.net>
parents:
47085
diff
changeset
|
1094 See `revlogutil.sidedata.get_sidedata_helpers` for the doc on |
8bd769b5c941
sidedata: move documentation about sidedata helpers to sidedata module
Raphaël Gomès <rgomes@octobus.net>
parents:
47085
diff
changeset
|
1095 `sidedata_helpers`. |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1096 """ |
39229
2646b8d66b7b
changegroup: move node sorting into deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39181
diff
changeset
|
1097 if not nodes: |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1098 return |
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1099 |
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1100 cl = repo.changelog |
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1101 |
39229
2646b8d66b7b
changegroup: move node sorting into deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39181
diff
changeset
|
1102 if ischangelog: |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1103 # `hg log` shows changesets in storage order. To preserve order |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1104 # across clones, send out changesets in storage order. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1105 nodesorder = b'storage' |
39229
2646b8d66b7b
changegroup: move node sorting into deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39181
diff
changeset
|
1106 elif ellipses: |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1107 nodes = _sortnodesellipsis(store, nodes, cl, lookup) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1108 nodesorder = b'nodes' |
39229
2646b8d66b7b
changegroup: move node sorting into deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39181
diff
changeset
|
1109 else: |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1110 nodesorder = None |
39229
2646b8d66b7b
changegroup: move node sorting into deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39181
diff
changeset
|
1111 |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1112 # Perform ellipses filtering and revision massaging. We do this before |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1113 # emitrevisions() because a) filtering out revisions creates less work |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1114 # for emitrevisions() b) dropping revisions would break emitrevisions()'s |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1115 # assumptions about delta choices and we would possibly send a delta |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1116 # referencing a missing base revision. |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1117 # |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1118 # Also, calling lookup() has side-effects with regards to populating |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1119 # data structures. If we don't call lookup() for each node or if we call |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1120 # lookup() after the first pass through each node, things can break - |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1121 # possibly intermittently depending on the python hash seed! For that |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1122 # reason, we store a mapping of all linknodes during the initial node |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1123 # pass rather than use lookup() on the output side. |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1124 if ellipses: |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1125 filtered = [] |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1126 adjustedparents = {} |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1127 linknodes = {} |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1128 |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1129 for node in nodes: |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1130 rev = store.rev(node) |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1131 linknode = lookup(node) |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1132 linkrev = cl.rev(linknode) |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1133 clrevtolocalrev[linkrev] = rev |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1134 |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1135 # If linknode is in fullclnodes, it means the corresponding |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1136 # changeset was a full changeset and is being sent unaltered. |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1137 if linknode in fullclnodes: |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1138 linknodes[node] = linknode |
39018
e793e11e1462
changegroup: introduce requests to define delta generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39017
diff
changeset
|
1139 |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1140 # If the corresponding changeset wasn't in the set computed |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1141 # as relevant to us, it should be dropped outright. |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1142 elif linkrev not in precomputedellipsis: |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1143 continue |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1144 |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1145 else: |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1146 # We could probably do this later and avoid the dict |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1147 # holding state. But it likely doesn't matter. |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1148 p1node, p2node, linknode = _resolvenarrowrevisioninfo( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1149 cl, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1150 store, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1151 ischangelog, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1152 rev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1153 linkrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1154 linknode, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1155 clrevtolocalrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1156 fullclnodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1157 precomputedellipsis, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1158 ) |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1159 |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1160 adjustedparents[node] = (p1node, p2node) |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1161 linknodes[node] = linknode |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1162 |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1163 filtered.append(node) |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1164 |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1165 nodes = filtered |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1166 |
39018
e793e11e1462
changegroup: introduce requests to define delta generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39017
diff
changeset
|
1167 # We expect the first pass to be fast, so we only engage the progress |
e793e11e1462
changegroup: introduce requests to define delta generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39017
diff
changeset
|
1168 # meter for constructing the revision deltas. |
e793e11e1462
changegroup: introduce requests to define delta generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39017
diff
changeset
|
1169 progress = None |
39239
0617a700ef7b
changegroup: change topics during generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39238
diff
changeset
|
1170 if topic is not None: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1171 progress = repo.ui.makeprogress( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1172 topic, unit=_(b'chunks'), total=len(nodes) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1173 ) |
39018
e793e11e1462
changegroup: introduce requests to define delta generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39017
diff
changeset
|
1174 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1175 configtarget = repo.ui.config(b'devel', b'bundle.delta') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1176 if configtarget not in (b'', b'p1', b'full'): |
46686
26d1ddc3f398
changegroup: convert a warning message to bytes
Matt Harbison <matt_harbison@yahoo.com>
parents:
45790
diff
changeset
|
1177 msg = _(b"""config "devel.bundle.delta" as unknown value: %s""") |
40432
968dd7e02ac5
changegroup: allow to force delta to be against p1
Boris Feld <boris.feld@octobus.net>
parents:
40430
diff
changeset
|
1178 repo.ui.warn(msg % configtarget) |
968dd7e02ac5
changegroup: allow to force delta to be against p1
Boris Feld <boris.feld@octobus.net>
parents:
40430
diff
changeset
|
1179 |
40430
6a917075535a
storage: also use `deltamode argument` for ifiledata
Boris Feld <boris.feld@octobus.net>
parents:
40344
diff
changeset
|
1180 deltamode = repository.CG_DELTAMODE_STD |
6a917075535a
storage: also use `deltamode argument` for ifiledata
Boris Feld <boris.feld@octobus.net>
parents:
40344
diff
changeset
|
1181 if forcedeltaparentprev: |
6a917075535a
storage: also use `deltamode argument` for ifiledata
Boris Feld <boris.feld@octobus.net>
parents:
40344
diff
changeset
|
1182 deltamode = repository.CG_DELTAMODE_PREV |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1183 elif configtarget == b'p1': |
40432
968dd7e02ac5
changegroup: allow to force delta to be against p1
Boris Feld <boris.feld@octobus.net>
parents:
40430
diff
changeset
|
1184 deltamode = repository.CG_DELTAMODE_P1 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1185 elif configtarget == b'full': |
40433
808b762679cd
changegroup: add a option to create bundle with full snapshot only
Boris Feld <boris.feld@octobus.net>
parents:
40432
diff
changeset
|
1186 deltamode = repository.CG_DELTAMODE_FULL |
40430
6a917075535a
storage: also use `deltamode argument` for ifiledata
Boris Feld <boris.feld@octobus.net>
parents:
40344
diff
changeset
|
1187 |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1188 revisions = store.emitrevisions( |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1189 nodes, |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1190 nodesorder=nodesorder, |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1191 revisiondata=True, |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1192 assumehaveparentrevisions=not ellipses, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1193 deltamode=deltamode, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1194 sidedata_helpers=sidedata_helpers, |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1195 debug_info=debug_info, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1196 ) |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1197 |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1198 for i, revision in enumerate(revisions): |
39018
e793e11e1462
changegroup: introduce requests to define delta generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39017
diff
changeset
|
1199 if progress: |
e793e11e1462
changegroup: introduce requests to define delta generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39017
diff
changeset
|
1200 progress.update(i + 1) |
e793e11e1462
changegroup: introduce requests to define delta generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39017
diff
changeset
|
1201 |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1202 if ellipses: |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1203 linknode = linknodes[revision.node] |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1204 |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1205 if revision.node in adjustedparents: |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1206 p1node, p2node = adjustedparents[revision.node] |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1207 revision.p1node = p1node |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1208 revision.p2node = p2node |
40047
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39866
diff
changeset
|
1209 revision.flags |= repository.REVISION_FLAG_ELLIPSIS |
39865
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1210 |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1211 else: |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1212 linknode = lookup(revision.node) |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1213 |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1214 revision.linknode = linknode |
31b7e8e7132e
changegroup: port to emitrevisions() (issue5976)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39861
diff
changeset
|
1215 yield revision |
39018
e793e11e1462
changegroup: introduce requests to define delta generation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39017
diff
changeset
|
1216 |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1217 if progress: |
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1218 progress.complete() |
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1219 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1220 |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1221 def make_debug_info(): |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1222 """ "build a "new" debug_info dictionnary |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1223 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1224 That dictionnary can be used to gather information about the bundle process |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1225 """ |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1226 return { |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1227 'revision-total': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1228 'revision-changelog': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1229 'revision-manifest': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1230 'revision-files': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1231 'file-count': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1232 'merge-total': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1233 'available-delta': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1234 'available-full': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1235 'delta-against-prev': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1236 'delta-full': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1237 'delta-against-p1': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1238 'denied-delta-candeltafn': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1239 'denied-base-not-available': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1240 'reused-storage-delta': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1241 'computed-delta': 0, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1242 } |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1243 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1244 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1245 def merge_debug_info(base, other): |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1246 """merge the debug information from <other> into <base> |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1247 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1248 This function can be used to gather lower level information into higher level ones. |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1249 """ |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1250 for key in ( |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1251 'revision-total', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1252 'revision-changelog', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1253 'revision-manifest', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1254 'revision-files', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1255 'merge-total', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1256 'available-delta', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1257 'available-full', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1258 'delta-against-prev', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1259 'delta-full', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1260 'delta-against-p1', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1261 'denied-delta-candeltafn', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1262 'denied-base-not-available', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1263 'reused-storage-delta', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1264 'computed-delta', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1265 ): |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1266 base[key] += other[key] |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1267 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1268 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1269 _KEY_PART_WIDTH = 17 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1270 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1271 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1272 def _dbg_bdl_line( |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1273 ui, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1274 indent, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1275 key, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1276 base_value=None, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1277 percentage_base=None, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1278 percentage_key=None, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1279 percentage_ref=None, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1280 extra=None, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1281 ): |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1282 """Print one line of debug_bundle_debug_info""" |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1283 line = b"DEBUG-BUNDLING: " |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1284 line += b' ' * (2 * indent) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1285 key += b":" |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1286 if base_value is not None: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1287 assert len(key) + 1 + (2 * indent) <= _KEY_PART_WIDTH |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1288 line += key.ljust(_KEY_PART_WIDTH - (2 * indent)) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1289 line += b"%10d" % base_value |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1290 else: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1291 line += key |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1292 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1293 if percentage_base is not None: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1294 assert base_value is not None |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1295 percentage = base_value * 100 // percentage_base |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1296 if percentage_key is not None: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1297 line += b" (%d%% of %s %d)" % ( |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1298 percentage, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1299 percentage_key, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1300 percentage_ref, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1301 ) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1302 else: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1303 line += b" (%d%%)" % percentage |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1304 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1305 if extra: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1306 line += b" " |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1307 line += extra |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1308 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1309 line += b'\n' |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1310 ui.write_err(line) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1311 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1312 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1313 def display_bundling_debug_info( |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1314 ui, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1315 debug_info, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1316 cl_debug_info, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1317 mn_debug_info, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1318 fl_debug_info, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1319 ): |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1320 """display debug information gathered during a bundling through `ui`""" |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1321 d = debug_info |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1322 c = cl_debug_info |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1323 m = mn_debug_info |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1324 f = fl_debug_info |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1325 all_info = [ |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1326 (b"changelog", b"cl", c), |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1327 (b"manifests", b"mn", m), |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1328 (b"files", b"fl", f), |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1329 ] |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1330 _dbg_bdl_line(ui, 0, b'revisions', d['revision-total']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1331 _dbg_bdl_line(ui, 1, b'changelog', d['revision-changelog']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1332 _dbg_bdl_line(ui, 1, b'manifest', d['revision-manifest']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1333 extra = b'(for %d revlogs)' % d['file-count'] |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1334 _dbg_bdl_line(ui, 1, b'files', d['revision-files'], extra=extra) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1335 if d['merge-total']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1336 _dbg_bdl_line(ui, 1, b'merge', d['merge-total'], d['revision-total']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1337 for k, __, v in all_info: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1338 if v['merge-total']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1339 _dbg_bdl_line(ui, 2, k, v['merge-total'], v['revision-total']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1340 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1341 _dbg_bdl_line(ui, 0, b'deltas') |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1342 _dbg_bdl_line( |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1343 ui, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1344 1, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1345 b'from-storage', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1346 d['reused-storage-delta'], |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1347 percentage_base=d['available-delta'], |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1348 percentage_key=b"available", |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1349 percentage_ref=d['available-delta'], |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1350 ) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1351 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1352 if d['denied-delta-candeltafn']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1353 _dbg_bdl_line(ui, 2, b'denied-fn', d['denied-delta-candeltafn']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1354 for __, k, v in all_info: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1355 if v['denied-delta-candeltafn']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1356 _dbg_bdl_line(ui, 3, k, v['denied-delta-candeltafn']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1357 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1358 if d['denied-base-not-available']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1359 _dbg_bdl_line(ui, 2, b'denied-nb', d['denied-base-not-available']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1360 for k, __, v in all_info: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1361 if v['denied-base-not-available']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1362 _dbg_bdl_line(ui, 3, k, v['denied-base-not-available']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1363 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1364 if d['computed-delta']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1365 _dbg_bdl_line(ui, 1, b'computed', d['computed-delta']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1366 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1367 if d['available-full']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1368 _dbg_bdl_line( |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1369 ui, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1370 2, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1371 b'full', |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1372 d['delta-full'], |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1373 percentage_base=d['available-full'], |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1374 percentage_key=b"native", |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1375 percentage_ref=d['available-full'], |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1376 ) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1377 for k, __, v in all_info: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1378 if v['available-full']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1379 _dbg_bdl_line( |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1380 ui, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1381 3, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1382 k, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1383 v['delta-full'], |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1384 percentage_base=v['available-full'], |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1385 percentage_key=b"native", |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1386 percentage_ref=v['available-full'], |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1387 ) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1388 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1389 if d['delta-against-prev']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1390 _dbg_bdl_line(ui, 2, b'previous', d['delta-against-prev']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1391 for k, __, v in all_info: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1392 if v['delta-against-prev']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1393 _dbg_bdl_line(ui, 3, k, v['delta-against-prev']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1394 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1395 if d['delta-against-p1']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1396 _dbg_bdl_line(ui, 2, b'parent-1', d['delta-against-prev']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1397 for k, __, v in all_info: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1398 if v['delta-against-p1']: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1399 _dbg_bdl_line(ui, 3, k, v['delta-against-p1']) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1400 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1401 |
48946
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48913
diff
changeset
|
1402 class cgpacker: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1403 def __init__( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1404 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1405 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1406 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1407 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1408 version, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1409 builddeltaheader, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1410 manifestsend, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1411 forcedeltaparentprev=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1412 bundlecaps=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1413 ellipses=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1414 shallow=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1415 ellipsisroots=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1416 fullnodes=None, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
1417 remote_sidedata=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1418 ): |
19202
0455fc94ae00
bundle-ng: move gengroup into bundler, pass repo object to bundler
Sune Foldager <cryo@cyanite.org>
parents:
19201
diff
changeset
|
1419 """Given a source repo, construct a bundler. |
32287
df3cf9422e1b
changegroup: add bundlecaps back
Durham Goode <durham@fb.com>
parents:
32268
diff
changeset
|
1420 |
40344
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1421 oldmatcher is a matcher that matches on files the client already has. |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1422 These will not be included in the changegroup. |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1423 |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1424 matcher is a matcher that matches on files to include in the |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
1425 changegroup. Used to facilitate sparse changegroups. |
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
1426 |
39017
ef3d3a2f9aa5
changegroup: refactor delta parent code
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39016
diff
changeset
|
1427 forcedeltaparentprev indicates whether delta parents must be against |
ef3d3a2f9aa5
changegroup: refactor delta parent code
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39016
diff
changeset
|
1428 the previous revision in a delta group. This should only be used for |
ef3d3a2f9aa5
changegroup: refactor delta parent code
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39016
diff
changeset
|
1429 compatibility with changegroup version 1. |
38901
23ae0c07a3e1
changegroup: control delta parent behavior via constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38900
diff
changeset
|
1430 |
38897
bd64b8b8f0dd
changegroup: pass function to build delta header into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38896
diff
changeset
|
1431 builddeltaheader is a callable that constructs the header for a group |
bd64b8b8f0dd
changegroup: pass function to build delta header into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38896
diff
changeset
|
1432 delta. |
bd64b8b8f0dd
changegroup: pass function to build delta header into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38896
diff
changeset
|
1433 |
38898
67f37e8a5490
changegroup: pass end of manifests marker into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38897
diff
changeset
|
1434 manifestsend is a chunk to send after manifests have been fully emitted. |
67f37e8a5490
changegroup: pass end of manifests marker into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38897
diff
changeset
|
1435 |
38908
1469584ad5fe
changegroup: specify ellipses mode explicitly
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38907
diff
changeset
|
1436 ellipses indicates whether ellipsis serving mode is enabled. |
1469584ad5fe
changegroup: specify ellipses mode explicitly
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38907
diff
changeset
|
1437 |
32287
df3cf9422e1b
changegroup: add bundlecaps back
Durham Goode <durham@fb.com>
parents:
32268
diff
changeset
|
1438 bundlecaps is optional and can be used to specify the set of |
df3cf9422e1b
changegroup: add bundlecaps back
Durham Goode <durham@fb.com>
parents:
32268
diff
changeset
|
1439 capabilities which can be used to build the bundle. While bundlecaps is |
df3cf9422e1b
changegroup: add bundlecaps back
Durham Goode <durham@fb.com>
parents:
32268
diff
changeset
|
1440 unused in core Mercurial, extensions rely on this feature to communicate |
df3cf9422e1b
changegroup: add bundlecaps back
Durham Goode <durham@fb.com>
parents:
32268
diff
changeset
|
1441 capabilities to customize the changegroup packer. |
38904
cdb9bc216771
changegroup: declare shallow flag in constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38903
diff
changeset
|
1442 |
cdb9bc216771
changegroup: declare shallow flag in constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38903
diff
changeset
|
1443 shallow indicates whether shallow data might be sent. The packer may |
cdb9bc216771
changegroup: declare shallow flag in constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38903
diff
changeset
|
1444 need to pack file contents not introduced by the changes being packed. |
38909
1af339c22aeb
changegroup: move fullnodes into cgpacker
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38908
diff
changeset
|
1445 |
38996
5baafb8fe253
changegroup: rename _fullnodes to _fullclnodes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38995
diff
changeset
|
1446 fullnodes is the set of changelog nodes which should not be ellipsis |
5baafb8fe253
changegroup: rename _fullnodes to _fullclnodes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38995
diff
changeset
|
1447 nodes. We store this rather than the set of nodes that should be |
5baafb8fe253
changegroup: rename _fullnodes to _fullclnodes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38995
diff
changeset
|
1448 ellipsis because for very large histories we expect this to be |
5baafb8fe253
changegroup: rename _fullnodes to _fullclnodes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38995
diff
changeset
|
1449 significantly smaller. |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
1450 |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
1451 remote_sidedata is the set of sidedata categories wanted by the remote. |
19202
0455fc94ae00
bundle-ng: move gengroup into bundler, pass repo object to bundler
Sune Foldager <cryo@cyanite.org>
parents:
19201
diff
changeset
|
1452 """ |
40344
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1453 assert oldmatcher |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1454 assert matcher |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1455 self._oldmatcher = oldmatcher |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1456 self._matcher = matcher |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
1457 |
38895
d7ac49c2353c
changegroup: pass version into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38894
diff
changeset
|
1458 self.version = version |
39017
ef3d3a2f9aa5
changegroup: refactor delta parent code
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39016
diff
changeset
|
1459 self._forcedeltaparentprev = forcedeltaparentprev |
38897
bd64b8b8f0dd
changegroup: pass function to build delta header into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38896
diff
changeset
|
1460 self._builddeltaheader = builddeltaheader |
38898
67f37e8a5490
changegroup: pass end of manifests marker into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38897
diff
changeset
|
1461 self._manifestsend = manifestsend |
38908
1469584ad5fe
changegroup: specify ellipses mode explicitly
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38907
diff
changeset
|
1462 self._ellipses = ellipses |
38895
d7ac49c2353c
changegroup: pass version into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38894
diff
changeset
|
1463 |
32287
df3cf9422e1b
changegroup: add bundlecaps back
Durham Goode <durham@fb.com>
parents:
32268
diff
changeset
|
1464 # Set of capabilities we can use to build the bundle. |
df3cf9422e1b
changegroup: add bundlecaps back
Durham Goode <durham@fb.com>
parents:
32268
diff
changeset
|
1465 if bundlecaps is None: |
df3cf9422e1b
changegroup: add bundlecaps back
Durham Goode <durham@fb.com>
parents:
32268
diff
changeset
|
1466 bundlecaps = set() |
df3cf9422e1b
changegroup: add bundlecaps back
Durham Goode <durham@fb.com>
parents:
32268
diff
changeset
|
1467 self._bundlecaps = bundlecaps |
46713
bc2519513ae0
sidedata-exchange: add `wanted_sidedata` and `sidedata_computers` to repos
Raphaël Gomès <rgomes@octobus.net>
parents:
46712
diff
changeset
|
1468 if remote_sidedata is None: |
bc2519513ae0
sidedata-exchange: add `wanted_sidedata` and `sidedata_computers` to repos
Raphaël Gomès <rgomes@octobus.net>
parents:
46712
diff
changeset
|
1469 remote_sidedata = set() |
bc2519513ae0
sidedata-exchange: add `wanted_sidedata` and `sidedata_computers` to repos
Raphaël Gomès <rgomes@octobus.net>
parents:
46712
diff
changeset
|
1470 self._remote_sidedata = remote_sidedata |
38904
cdb9bc216771
changegroup: declare shallow flag in constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38903
diff
changeset
|
1471 self._isshallow = shallow |
38996
5baafb8fe253
changegroup: rename _fullnodes to _fullclnodes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38995
diff
changeset
|
1472 self._fullclnodes = fullnodes |
38900
6e999a2d8fe7
changegroup: control reordering via constructor argument
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38899
diff
changeset
|
1473 |
38907
ad4c4cc9a5ac
changegroup: pass ellipsis roots into cgpacker constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38906
diff
changeset
|
1474 # Maps ellipsis revs to their roots at the changelog level. |
ad4c4cc9a5ac
changegroup: pass ellipsis roots into cgpacker constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38906
diff
changeset
|
1475 self._precomputedellipsis = ellipsisroots |
ad4c4cc9a5ac
changegroup: pass ellipsis roots into cgpacker constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38906
diff
changeset
|
1476 |
19202
0455fc94ae00
bundle-ng: move gengroup into bundler, pass repo object to bundler
Sune Foldager <cryo@cyanite.org>
parents:
19201
diff
changeset
|
1477 self._repo = repo |
38900
6e999a2d8fe7
changegroup: control reordering via constructor argument
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38899
diff
changeset
|
1478 |
23748
4ab66de46a96
bundle: when verbose, show what takes up the space in the generated bundle
Mads Kiilerich <madski@unity3d.com>
parents:
23382
diff
changeset
|
1479 if self._repo.ui.verbose and not self._repo.ui.debugflag: |
4ab66de46a96
bundle: when verbose, show what takes up the space in the generated bundle
Mads Kiilerich <madski@unity3d.com>
parents:
23382
diff
changeset
|
1480 self._verbosenote = self._repo.ui.note |
4ab66de46a96
bundle: when verbose, show what takes up the space in the generated bundle
Mads Kiilerich <madski@unity3d.com>
parents:
23382
diff
changeset
|
1481 else: |
4ab66de46a96
bundle: when verbose, show what takes up the space in the generated bundle
Mads Kiilerich <madski@unity3d.com>
parents:
23382
diff
changeset
|
1482 self._verbosenote = lambda s: None |
4ab66de46a96
bundle: when verbose, show what takes up the space in the generated bundle
Mads Kiilerich <madski@unity3d.com>
parents:
23382
diff
changeset
|
1483 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1484 def generate( |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1485 self, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1486 commonrevs, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1487 clnodes, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1488 fastpathlinkrev, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1489 source, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1490 changelog=True, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1491 ): |
39672
a1942015c10e
changegroup: add functionality to skip adding changelog data to changegroup
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
39670
diff
changeset
|
1492 """Yield a sequence of changegroup byte chunks. |
a1942015c10e
changegroup: add functionality to skip adding changelog data to changegroup
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
39670
diff
changeset
|
1493 If changelog is False, changelog data won't be added to changegroup |
a1942015c10e
changegroup: add functionality to skip adding changelog data to changegroup
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
39670
diff
changeset
|
1494 """ |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1495 |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1496 debug_info = None |
19202
0455fc94ae00
bundle-ng: move gengroup into bundler, pass repo object to bundler
Sune Foldager <cryo@cyanite.org>
parents:
19201
diff
changeset
|
1497 repo = self._repo |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1498 if repo.ui.configbool(b'debug', b'bundling-stats'): |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1499 debug_info = make_debug_info() |
24978
f52560c64953
changegroup: drop _changelog and _manifest properties
Martin von Zweigbergk <martinvonz@google.com>
parents:
24977
diff
changeset
|
1500 cl = repo.changelog |
19204
e9c5b1c246dc
bundle-ng: move bundle generation to changegroup.py
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19202
diff
changeset
|
1501 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1502 self._verbosenote(_(b'uncompressed size of bundle content:\n')) |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1503 size = 0 |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1504 |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1505 sidedata_helpers = None |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1506 if self.version == b'04': |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1507 remote_sidedata = self._remote_sidedata |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1508 if source == b'strip': |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1509 # We're our own remote when stripping, get the no-op helpers |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1510 # TODO a better approach would be for the strip bundle to |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1511 # correctly advertise its sidedata categories directly. |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1512 remote_sidedata = repo._wanted_sidedata |
47085
3aab2330b7d3
sidedata: move sidedata-related utils to the dedicated module
Raphaël Gomès <rgomes@octobus.net>
parents:
47077
diff
changeset
|
1513 sidedata_helpers = sidedatamod.get_sidedata_helpers( |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1514 repo, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1515 remote_sidedata, |
47085
3aab2330b7d3
sidedata: move sidedata-related utils to the dedicated module
Raphaël Gomès <rgomes@octobus.net>
parents:
47077
diff
changeset
|
1516 ) |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1517 |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1518 cl_debug_info = None |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1519 if debug_info is not None: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1520 cl_debug_info = make_debug_info() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1521 clstate, deltas = self._generatechangelog( |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1522 cl, |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1523 clnodes, |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1524 generate=changelog, |
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1525 sidedata_helpers=sidedata_helpers, |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1526 debug_info=cl_debug_info, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1527 ) |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1528 for delta in deltas: |
46780
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46718
diff
changeset
|
1529 for chunk in _revisiondeltatochunks( |
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46718
diff
changeset
|
1530 self._repo, delta, self._builddeltaheader |
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46718
diff
changeset
|
1531 ): |
41448
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1532 size += len(chunk) |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1533 yield chunk |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1534 |
39010
fcdab6629dde
changegroup: emit delta group close chunk outside of deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39009
diff
changeset
|
1535 close = closechunk() |
fcdab6629dde
changegroup: emit delta group close chunk outside of deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39009
diff
changeset
|
1536 size += len(close) |
fcdab6629dde
changegroup: emit delta group close chunk outside of deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39009
diff
changeset
|
1537 yield closechunk() |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1538 if debug_info is not None: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1539 merge_debug_info(debug_info, cl_debug_info) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1540 debug_info['revision-changelog'] = cl_debug_info['revision-total'] |
39010
fcdab6629dde
changegroup: emit delta group close chunk outside of deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39009
diff
changeset
|
1541 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1542 self._verbosenote(_(b'%8.i (changelog)\n') % size) |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1543 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1544 clrevorder = clstate[b'clrevorder'] |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1545 manifests = clstate[b'manifests'] |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1546 changedfiles = clstate[b'changedfiles'] |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1547 |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1548 if debug_info is not None: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1549 debug_info['file-count'] = len(changedfiles) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1550 |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1551 # We need to make sure that the linkrev in the changegroup refers to |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1552 # the first changeset that introduced the manifest or file revision. |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1553 # The fastpath is usually safer than the slowpath, because the filelogs |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1554 # are walked in revlog order. |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1555 # |
39861
db5501d93bcf
changegroup: remove reordering control (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39733
diff
changeset
|
1556 # When taking the slowpath when the manifest revlog uses generaldelta, |
db5501d93bcf
changegroup: remove reordering control (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39733
diff
changeset
|
1557 # the manifest may be walked in the "wrong" order. Without 'clrevorder', |
db5501d93bcf
changegroup: remove reordering control (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39733
diff
changeset
|
1558 # we would get an incorrect linkrev (see fix in cc0ff93d0c0c). |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1559 # |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1560 # When taking the fastpath, we are only vulnerable to reordering |
39861
db5501d93bcf
changegroup: remove reordering control (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39733
diff
changeset
|
1561 # of the changelog itself. The changelog never uses generaldelta and is |
db5501d93bcf
changegroup: remove reordering control (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39733
diff
changeset
|
1562 # never reordered. To handle this case, we simply take the slowpath, |
db5501d93bcf
changegroup: remove reordering control (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39733
diff
changeset
|
1563 # which already has the 'clrevorder' logic. This was also fixed in |
db5501d93bcf
changegroup: remove reordering control (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39733
diff
changeset
|
1564 # cc0ff93d0c0c. |
db5501d93bcf
changegroup: remove reordering control (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39733
diff
changeset
|
1565 |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1566 # Treemanifests don't work correctly with fastpathlinkrev |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1567 # either, because we don't discover which directory nodes to |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1568 # send along with files. This could probably be fixed. |
45552
10284ce3d5ed
scmutil: introduce function to check whether repo uses treemanifest or not
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45372
diff
changeset
|
1569 fastpathlinkrev = fastpathlinkrev and not scmutil.istreemanifest(repo) |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1570 |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1571 fnodes = {} # needed file nodes |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1572 |
39011
2ebdd265fe8c
changegroup: move size tracking and end of manifests to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39010
diff
changeset
|
1573 size = 0 |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1574 mn_debug_info = None |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1575 if debug_info is not None: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1576 mn_debug_info = make_debug_info() |
39012
c921ad9cae08
changegroup: move manifest chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39011
diff
changeset
|
1577 it = self.generatemanifests( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1578 commonrevs, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1579 clrevorder, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1580 fastpathlinkrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1581 manifests, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1582 fnodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1583 source, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1584 clstate[b'clrevtomanifestrev'], |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1585 sidedata_helpers=sidedata_helpers, |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1586 debug_info=mn_debug_info, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1587 ) |
39012
c921ad9cae08
changegroup: move manifest chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39011
diff
changeset
|
1588 |
39233
8b9b93bf70b1
changegroup: rename dir to tree to avoid shadowing a built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
1589 for tree, deltas in it: |
8b9b93bf70b1
changegroup: rename dir to tree to avoid shadowing a built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
1590 if tree: |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
1591 assert self.version in (b'03', b'04') |
39233
8b9b93bf70b1
changegroup: rename dir to tree to avoid shadowing a built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
1592 chunk = _fileheader(tree) |
39012
c921ad9cae08
changegroup: move manifest chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39011
diff
changeset
|
1593 size += len(chunk) |
c921ad9cae08
changegroup: move manifest chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39011
diff
changeset
|
1594 yield chunk |
c921ad9cae08
changegroup: move manifest chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39011
diff
changeset
|
1595 |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1596 for delta in deltas: |
46780
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46718
diff
changeset
|
1597 chunks = _revisiondeltatochunks( |
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46718
diff
changeset
|
1598 self._repo, delta, self._builddeltaheader |
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46718
diff
changeset
|
1599 ) |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1600 for chunk in chunks: |
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1601 size += len(chunk) |
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1602 yield chunk |
39012
c921ad9cae08
changegroup: move manifest chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39011
diff
changeset
|
1603 |
c921ad9cae08
changegroup: move manifest chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39011
diff
changeset
|
1604 close = closechunk() |
c921ad9cae08
changegroup: move manifest chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39011
diff
changeset
|
1605 size += len(close) |
c921ad9cae08
changegroup: move manifest chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39011
diff
changeset
|
1606 yield close |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1607 if debug_info is not None: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1608 merge_debug_info(debug_info, mn_debug_info) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1609 debug_info['revision-manifest'] = mn_debug_info['revision-total'] |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1610 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1611 self._verbosenote(_(b'%8.i (manifests)\n') % size) |
39011
2ebdd265fe8c
changegroup: move size tracking and end of manifests to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39010
diff
changeset
|
1612 yield self._manifestsend |
2ebdd265fe8c
changegroup: move size tracking and end of manifests to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39010
diff
changeset
|
1613 |
38983
fbbda9ff3deb
changegroup: pass mfdicts properly
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38982
diff
changeset
|
1614 mfdicts = None |
fbbda9ff3deb
changegroup: pass mfdicts properly
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38982
diff
changeset
|
1615 if self._ellipses and self._isshallow: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1616 mfdicts = [ |
46624
357d2ea95ce9
changegroup: use the local variable instead of reaching through self
Raphaël Gomès <rgomes@octobus.net>
parents:
46513
diff
changeset
|
1617 (repo.manifestlog[n].read(), lr) |
43106
d783f945a701
py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43085
diff
changeset
|
1618 for (n, lr) in pycompat.iteritems(manifests) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1619 ] |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1620 |
39238
cc957b9dc335
changegroup: rename mfs to manifests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39237
diff
changeset
|
1621 manifests.clear() |
44452
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
44306
diff
changeset
|
1622 clrevs = {cl.rev(x) for x in clnodes} |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1623 |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1624 fl_debug_info = None |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1625 if debug_info is not None: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1626 fl_debug_info = make_debug_info() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1627 it = self.generatefiles( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1628 changedfiles, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1629 commonrevs, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1630 source, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1631 mfdicts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1632 fastpathlinkrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1633 fnodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1634 clrevs, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1635 sidedata_helpers=sidedata_helpers, |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1636 debug_info=fl_debug_info, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1637 ) |
39013
c4a2d19d393a
changegroup: move file chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39012
diff
changeset
|
1638 |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1639 for path, deltas in it: |
39013
c4a2d19d393a
changegroup: move file chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39012
diff
changeset
|
1640 h = _fileheader(path) |
c4a2d19d393a
changegroup: move file chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39012
diff
changeset
|
1641 size = len(h) |
c4a2d19d393a
changegroup: move file chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39012
diff
changeset
|
1642 yield h |
c4a2d19d393a
changegroup: move file chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39012
diff
changeset
|
1643 |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1644 for delta in deltas: |
46780
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46718
diff
changeset
|
1645 chunks = _revisiondeltatochunks( |
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46718
diff
changeset
|
1646 self._repo, delta, self._builddeltaheader |
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46718
diff
changeset
|
1647 ) |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1648 for chunk in chunks: |
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1649 size += len(chunk) |
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1650 yield chunk |
39013
c4a2d19d393a
changegroup: move file chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39012
diff
changeset
|
1651 |
c4a2d19d393a
changegroup: move file chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39012
diff
changeset
|
1652 close = closechunk() |
c4a2d19d393a
changegroup: move file chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39012
diff
changeset
|
1653 size += len(close) |
c4a2d19d393a
changegroup: move file chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39012
diff
changeset
|
1654 yield close |
c4a2d19d393a
changegroup: move file chunk emission to generate()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39012
diff
changeset
|
1655 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1656 self._verbosenote(_(b'%8.i %s\n') % (size, path)) |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1657 |
39002
eb8a0139ace3
changegroup: inline _close()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39001
diff
changeset
|
1658 yield closechunk() |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1659 if debug_info is not None: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1660 merge_debug_info(debug_info, fl_debug_info) |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1661 debug_info['revision-files'] = fl_debug_info['revision-total'] |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1662 |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1663 if debug_info is not None: |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1664 display_bundling_debug_info( |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1665 repo.ui, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1666 debug_info, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1667 cl_debug_info, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1668 mn_debug_info, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1669 fl_debug_info, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1670 ) |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1671 |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1672 if clnodes: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1673 repo.hook(b'outgoing', node=hex(clnodes[0]), source=source) |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1674 |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1675 def _generatechangelog( |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1676 self, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1677 cl, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1678 nodes, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1679 generate=True, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1680 sidedata_helpers=None, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1681 debug_info=None, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1682 ): |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1683 """Generate data for changelog chunks. |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1684 |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1685 Returns a 2-tuple of a dict containing state and an iterable of |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1686 byte chunks. The state will not be fully populated until the |
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1687 chunk stream has been fully consumed. |
41448
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1688 |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1689 if generate is False, the state will be fully populated and no chunk |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1690 stream will be yielded |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1691 |
47086
8bd769b5c941
sidedata: move documentation about sidedata helpers to sidedata module
Raphaël Gomès <rgomes@octobus.net>
parents:
47085
diff
changeset
|
1692 See `revlogutil.sidedata.get_sidedata_helpers` for the doc on |
8bd769b5c941
sidedata: move documentation about sidedata helpers to sidedata module
Raphaël Gomès <rgomes@octobus.net>
parents:
47085
diff
changeset
|
1693 `sidedata_helpers`. |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1694 """ |
23381
cc0ff93d0c0c
changegroup: fix file linkrevs during reorders (issue4462)
Durham Goode <durham@fb.com>
parents:
23226
diff
changeset
|
1695 clrevorder = {} |
39238
cc957b9dc335
changegroup: rename mfs to manifests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39237
diff
changeset
|
1696 manifests = {} |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1697 mfl = self._repo.manifestlog |
28241
a4286175ecba
changegroup: drop special-casing of flat manifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
28240
diff
changeset
|
1698 changedfiles = set() |
38998
40374b4a780f
changegroup: track changelog to manifest revision map explicitly
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38997
diff
changeset
|
1699 clrevtomanifestrev = {} |
19204
e9c5b1c246dc
bundle-ng: move bundle generation to changegroup.py
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19202
diff
changeset
|
1700 |
41445
73a33fe625bb
changegroup: initialize the state variable a bit earlier
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41365
diff
changeset
|
1701 state = { |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1702 b'clrevorder': clrevorder, |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1703 b'manifests': manifests, |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1704 b'changedfiles': changedfiles, |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1705 b'clrevtomanifestrev': clrevtomanifestrev, |
41445
73a33fe625bb
changegroup: initialize the state variable a bit earlier
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41365
diff
changeset
|
1706 } |
73a33fe625bb
changegroup: initialize the state variable a bit earlier
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41365
diff
changeset
|
1707 |
41448
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1708 if not (generate or self._ellipses): |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1709 # sort the nodes in storage order |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1710 nodes = sorted(nodes, key=cl.rev) |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1711 for node in nodes: |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1712 c = cl.changelogrevision(node) |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1713 clrevorder[node] = len(clrevorder) |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1714 # record the first changeset introducing this manifest version |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1715 manifests.setdefault(c.manifest, node) |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1716 # Record a complete list of potentially-changed files in |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1717 # this manifest. |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1718 changedfiles.update(c.files) |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1719 |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1720 return state, () |
fa7d61f9c512
changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41445
diff
changeset
|
1721 |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1722 # Callback for the changelog, used to collect changed files and |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1723 # manifest nodes. |
19207
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1724 # Returns the linkrev node (identity in the changelog case). |
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1725 def lookupcl(x): |
39237
3634ed953a42
changegroup: clean up changelog callback
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39236
diff
changeset
|
1726 c = cl.changelogrevision(x) |
23381
cc0ff93d0c0c
changegroup: fix file linkrevs during reorders (issue4462)
Durham Goode <durham@fb.com>
parents:
23226
diff
changeset
|
1727 clrevorder[x] = len(clrevorder) |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1728 |
38908
1469584ad5fe
changegroup: specify ellipses mode explicitly
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38907
diff
changeset
|
1729 if self._ellipses: |
39238
cc957b9dc335
changegroup: rename mfs to manifests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39237
diff
changeset
|
1730 # Only update manifests if x is going to be sent. Otherwise we |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1731 # end up with bogus linkrevs specified for manifests and |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1732 # we skip some manifest nodes that we should otherwise |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1733 # have sent. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1734 if ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1735 x in self._fullclnodes |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1736 or cl.rev(x) in self._precomputedellipsis |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1737 ): |
39237
3634ed953a42
changegroup: clean up changelog callback
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39236
diff
changeset
|
1738 |
3634ed953a42
changegroup: clean up changelog callback
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39236
diff
changeset
|
1739 manifestnode = c.manifest |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1740 # Record the first changeset introducing this manifest |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1741 # version. |
39238
cc957b9dc335
changegroup: rename mfs to manifests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39237
diff
changeset
|
1742 manifests.setdefault(manifestnode, x) |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1743 # Set this narrow-specific dict so we have the lowest |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1744 # manifest revnum to look up for this cl revnum. (Part of |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1745 # mapping changelog ellipsis parents to manifest ellipsis |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1746 # parents) |
39237
3634ed953a42
changegroup: clean up changelog callback
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39236
diff
changeset
|
1747 clrevtomanifestrev.setdefault( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1748 cl.rev(x), mfl.rev(manifestnode) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1749 ) |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1750 # We can't trust the changed files list in the changeset if the |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1751 # client requested a shallow clone. |
38904
cdb9bc216771
changegroup: declare shallow flag in constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38903
diff
changeset
|
1752 if self._isshallow: |
39237
3634ed953a42
changegroup: clean up changelog callback
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39236
diff
changeset
|
1753 changedfiles.update(mfl[c.manifest].read().keys()) |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1754 else: |
39237
3634ed953a42
changegroup: clean up changelog callback
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39236
diff
changeset
|
1755 changedfiles.update(c.files) |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1756 else: |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1757 # record the first changeset introducing this manifest version |
39238
cc957b9dc335
changegroup: rename mfs to manifests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39237
diff
changeset
|
1758 manifests.setdefault(c.manifest, x) |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1759 # Record a complete list of potentially-changed files in |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1760 # this manifest. |
39237
3634ed953a42
changegroup: clean up changelog callback
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39236
diff
changeset
|
1761 changedfiles.update(c.files) |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1762 |
19207
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1763 return x |
19204
e9c5b1c246dc
bundle-ng: move bundle generation to changegroup.py
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19202
diff
changeset
|
1764 |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1765 gen = deltagroup( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1766 self._repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1767 cl, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1768 nodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1769 True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1770 lookupcl, |
39017
ef3d3a2f9aa5
changegroup: refactor delta parent code
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39016
diff
changeset
|
1771 self._forcedeltaparentprev, |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1772 ellipses=self._ellipses, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1773 topic=_(b'changesets'), |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1774 clrevtolocalrev={}, |
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1775 fullclnodes=self._fullclnodes, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1776 precomputedellipsis=self._precomputedellipsis, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1777 sidedata_helpers=sidedata_helpers, |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1778 debug_info=debug_info, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1779 ) |
28227
1c36cc8e7870
changegroup: extract generatemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27953
diff
changeset
|
1780 |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1781 return state, gen |
28227
1c36cc8e7870
changegroup: extract generatemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27953
diff
changeset
|
1782 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1783 def generatemanifests( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1784 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1785 commonrevs, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1786 clrevorder, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1787 fastpathlinkrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1788 manifests, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1789 fnodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1790 source, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1791 clrevtolocalrev, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1792 sidedata_helpers=None, |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1793 debug_info=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1794 ): |
34149
75cc1f1e11f2
changegroup: add source parameter to generatemanifests
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
1795 """Returns an iterator of changegroup chunks containing manifests. |
75cc1f1e11f2
changegroup: add source parameter to generatemanifests
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
1796 |
75cc1f1e11f2
changegroup: add source parameter to generatemanifests
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
1797 `source` is unused here, but is used by extensions like remotefilelog to |
75cc1f1e11f2
changegroup: add source parameter to generatemanifests
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
1798 change what is sent based in pulls vs pushes, etc. |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1799 |
47086
8bd769b5c941
sidedata: move documentation about sidedata helpers to sidedata module
Raphaël Gomès <rgomes@octobus.net>
parents:
47085
diff
changeset
|
1800 See `revlogutil.sidedata.get_sidedata_helpers` for the doc on |
8bd769b5c941
sidedata: move documentation about sidedata helpers to sidedata module
Raphaël Gomès <rgomes@octobus.net>
parents:
47085
diff
changeset
|
1801 `sidedata_helpers`. |
34149
75cc1f1e11f2
changegroup: add source parameter to generatemanifests
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
1802 """ |
28227
1c36cc8e7870
changegroup: extract generatemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27953
diff
changeset
|
1803 repo = self._repo |
30294
bce79dfcf5e4
manifest: get rid of manifest.readshallowfast
Durham Goode <durham@fb.com>
parents:
30268
diff
changeset
|
1804 mfl = repo.manifestlog |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1805 tmfnodes = {b'': manifests} |
28227
1c36cc8e7870
changegroup: extract generatemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27953
diff
changeset
|
1806 |
19207
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1807 # Callback for the manifest, used to collect linkrevs for filelog |
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1808 # revisions. |
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1809 # Returns the linkrev node (collected in lookupcl). |
39233
8b9b93bf70b1
changegroup: rename dir to tree to avoid shadowing a built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
1810 def makelookupmflinknode(tree, nodes): |
28231
3faba927dd93
changegroup: introduce makelookupmflinknode(dir)
Martin von Zweigbergk <martinvonz@google.com>
parents:
28230
diff
changeset
|
1811 if fastpathlinkrev: |
39233
8b9b93bf70b1
changegroup: rename dir to tree to avoid shadowing a built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
1812 assert not tree |
46787
70f8c64812db
typing: fix directives mangled by black
Matt Harbison <matt_harbison@yahoo.com>
parents:
46686
diff
changeset
|
1813 |
70f8c64812db
typing: fix directives mangled by black
Matt Harbison <matt_harbison@yahoo.com>
parents:
46686
diff
changeset
|
1814 # pytype: disable=unsupported-operands |
70f8c64812db
typing: fix directives mangled by black
Matt Harbison <matt_harbison@yahoo.com>
parents:
46686
diff
changeset
|
1815 return manifests.__getitem__ |
70f8c64812db
typing: fix directives mangled by black
Matt Harbison <matt_harbison@yahoo.com>
parents:
46686
diff
changeset
|
1816 # pytype: enable=unsupported-operands |
28231
3faba927dd93
changegroup: introduce makelookupmflinknode(dir)
Martin von Zweigbergk <martinvonz@google.com>
parents:
28230
diff
changeset
|
1817 |
27239
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1818 def lookupmflinknode(x): |
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1819 """Callback for looking up the linknode for manifests. |
27219
beb60a898dd0
changegroup: document manifest linkrev callback some more
Augie Fackler <augie@google.com>
parents:
27218
diff
changeset
|
1820 |
27239
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1821 Returns the linkrev node for the specified manifest. |
27219
beb60a898dd0
changegroup: document manifest linkrev callback some more
Augie Fackler <augie@google.com>
parents:
27218
diff
changeset
|
1822 |
27239
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1823 SIDE EFFECT: |
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1824 |
27432
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
1825 1) fclnodes gets populated with the list of relevant |
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
1826 file nodes if we're not using fastpathlinkrev |
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
1827 2) When treemanifests are in use, collects treemanifest nodes |
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
1828 to send |
27219
beb60a898dd0
changegroup: document manifest linkrev callback some more
Augie Fackler <augie@google.com>
parents:
27218
diff
changeset
|
1829 |
27432
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
1830 Note that this means manifests must be completely sent to |
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
1831 the client before you can trust the list of files and |
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
1832 treemanifests to send. |
27239
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1833 """ |
35012
d80380ba8e7d
changegroup: use any node, not min(), in treemanifest's generatemanifests
Kyle Lippincott <spectral@google.com>
parents:
34734
diff
changeset
|
1834 clnode = nodes[x] |
39233
8b9b93bf70b1
changegroup: rename dir to tree to avoid shadowing a built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
1835 mdata = mfl.get(tree, x).readfast(shallow=True) |
28241
a4286175ecba
changegroup: drop special-casing of flat manifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
28240
diff
changeset
|
1836 for p, n, fl in mdata.iterentries(): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1837 if fl == b't': # subdirectory manifest |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1838 subtree = tree + p + b'/' |
39233
8b9b93bf70b1
changegroup: rename dir to tree to avoid shadowing a built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
1839 tmfclnodes = tmfnodes.setdefault(subtree, {}) |
28241
a4286175ecba
changegroup: drop special-casing of flat manifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
28240
diff
changeset
|
1840 tmfclnode = tmfclnodes.setdefault(n, clnode) |
a4286175ecba
changegroup: drop special-casing of flat manifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
28240
diff
changeset
|
1841 if clrevorder[clnode] < clrevorder[tmfclnode]: |
a4286175ecba
changegroup: drop special-casing of flat manifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
28240
diff
changeset
|
1842 tmfclnodes[n] = clnode |
a4286175ecba
changegroup: drop special-casing of flat manifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
28240
diff
changeset
|
1843 else: |
39233
8b9b93bf70b1
changegroup: rename dir to tree to avoid shadowing a built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
1844 f = tree + p |
28240
1ac8ce137377
changegroup: fix treemanifests on merges
Martin von Zweigbergk <martinvonz@google.com>
parents:
28232
diff
changeset
|
1845 fclnodes = fnodes.setdefault(f, {}) |
1ac8ce137377
changegroup: fix treemanifests on merges
Martin von Zweigbergk <martinvonz@google.com>
parents:
28232
diff
changeset
|
1846 fclnode = fclnodes.setdefault(n, clnode) |
1ac8ce137377
changegroup: fix treemanifests on merges
Martin von Zweigbergk <martinvonz@google.com>
parents:
28232
diff
changeset
|
1847 if clrevorder[clnode] < clrevorder[fclnode]: |
1ac8ce137377
changegroup: fix treemanifests on merges
Martin von Zweigbergk <martinvonz@google.com>
parents:
28232
diff
changeset
|
1848 fclnodes[n] = clnode |
27239
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1849 return clnode |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1850 |
28231
3faba927dd93
changegroup: introduce makelookupmflinknode(dir)
Martin von Zweigbergk <martinvonz@google.com>
parents:
28230
diff
changeset
|
1851 return lookupmflinknode |
19206
6308896b1d4a
bundle-ng: simplify bundle10.generate
Sune Foldager <cryo@cyanite.org>
parents:
19204
diff
changeset
|
1852 |
28232
829d369fc5a8
changegroup: write root manifests and subdir manifests in a single loop
Martin von Zweigbergk <martinvonz@google.com>
parents:
28231
diff
changeset
|
1853 while tmfnodes: |
39233
8b9b93bf70b1
changegroup: rename dir to tree to avoid shadowing a built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
1854 tree, nodes = tmfnodes.popitem() |
40664
dba590f27c7a
changegroup: avoid instantiating storage if we are not using it
Kyle Lippincott <spectral@google.com>
parents:
40433
diff
changeset
|
1855 |
42341
27d6956d386b
match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
41767
diff
changeset
|
1856 should_visit = self._matcher.visitdir(tree[:-1]) |
40664
dba590f27c7a
changegroup: avoid instantiating storage if we are not using it
Kyle Lippincott <spectral@google.com>
parents:
40433
diff
changeset
|
1857 if tree and not should_visit: |
dba590f27c7a
changegroup: avoid instantiating storage if we are not using it
Kyle Lippincott <spectral@google.com>
parents:
40433
diff
changeset
|
1858 continue |
dba590f27c7a
changegroup: avoid instantiating storage if we are not using it
Kyle Lippincott <spectral@google.com>
parents:
40433
diff
changeset
|
1859 |
39244
73cf21b2e8a6
manifest: add getstorage() to manifestlog and use it globally
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39243
diff
changeset
|
1860 store = mfl.getstorage(tree) |
39007
39f5c7afdc25
changegroup: inline _prune() into call sites
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39006
diff
changeset
|
1861 |
40664
dba590f27c7a
changegroup: avoid instantiating storage if we are not using it
Kyle Lippincott <spectral@google.com>
parents:
40433
diff
changeset
|
1862 if not should_visit: |
39733
5adc5fe41a7d
changegroup: reintroduce some comments that have gotten lost over the years
Augie Fackler <augie@google.com>
parents:
39732
diff
changeset
|
1863 # No nodes to send because this directory is out of |
5adc5fe41a7d
changegroup: reintroduce some comments that have gotten lost over the years
Augie Fackler <augie@google.com>
parents:
39732
diff
changeset
|
1864 # the client's view of the repository (probably |
40664
dba590f27c7a
changegroup: avoid instantiating storage if we are not using it
Kyle Lippincott <spectral@google.com>
parents:
40433
diff
changeset
|
1865 # because of narrow clones). Do this even for the root |
dba590f27c7a
changegroup: avoid instantiating storage if we are not using it
Kyle Lippincott <spectral@google.com>
parents:
40433
diff
changeset
|
1866 # directory (tree=='') |
39007
39f5c7afdc25
changegroup: inline _prune() into call sites
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39006
diff
changeset
|
1867 prunednodes = [] |
39f5c7afdc25
changegroup: inline _prune() into call sites
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39006
diff
changeset
|
1868 else: |
39733
5adc5fe41a7d
changegroup: reintroduce some comments that have gotten lost over the years
Augie Fackler <augie@google.com>
parents:
39732
diff
changeset
|
1869 # Avoid sending any manifest nodes we can prove the |
5adc5fe41a7d
changegroup: reintroduce some comments that have gotten lost over the years
Augie Fackler <augie@google.com>
parents:
39732
diff
changeset
|
1870 # client already has by checking linkrevs. See the |
5adc5fe41a7d
changegroup: reintroduce some comments that have gotten lost over the years
Augie Fackler <augie@google.com>
parents:
39732
diff
changeset
|
1871 # related comment in generatefiles(). |
39732
e03c1a63155c
changegroup: tease out a temporary prune method for manifests
Augie Fackler <augie@google.com>
parents:
39731
diff
changeset
|
1872 prunednodes = self._prunemanifests(store, nodes, commonrevs) |
40664
dba590f27c7a
changegroup: avoid instantiating storage if we are not using it
Kyle Lippincott <spectral@google.com>
parents:
40433
diff
changeset
|
1873 |
39233
8b9b93bf70b1
changegroup: rename dir to tree to avoid shadowing a built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
1874 if tree and not prunednodes: |
39005
d56a6b78de3b
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39004
diff
changeset
|
1875 continue |
d56a6b78de3b
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39004
diff
changeset
|
1876 |
39233
8b9b93bf70b1
changegroup: rename dir to tree to avoid shadowing a built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
1877 lookupfn = makelookupmflinknode(tree, nodes) |
38982
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
1878 |
39014
d662959dc881
changegroup: emit revisiondelta instances from deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39013
diff
changeset
|
1879 deltas = deltagroup( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1880 self._repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1881 store, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1882 prunednodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1883 False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1884 lookupfn, |
39861
db5501d93bcf
changegroup: remove reordering control (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39733
diff
changeset
|
1885 self._forcedeltaparentprev, |
39008
8c84f1ef949e
changegroup: pass all state into group()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39007
diff
changeset
|
1886 ellipses=self._ellipses, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1887 topic=_(b'manifests'), |
39008
8c84f1ef949e
changegroup: pass all state into group()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39007
diff
changeset
|
1888 clrevtolocalrev=clrevtolocalrev, |
8c84f1ef949e
changegroup: pass all state into group()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39007
diff
changeset
|
1889 fullclnodes=self._fullclnodes, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1890 precomputedellipsis=self._precomputedellipsis, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1891 sidedata_helpers=sidedata_helpers, |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1892 debug_info=debug_info, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1893 ) |
39008
8c84f1ef949e
changegroup: pass all state into group()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39007
diff
changeset
|
1894 |
42341
27d6956d386b
match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
41767
diff
changeset
|
1895 if not self._oldmatcher.visitdir(store.tree[:-1]): |
40344
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1896 yield tree, deltas |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1897 else: |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1898 # 'deltas' is a generator and we need to consume it even if |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1899 # we are not going to send it because a side-effect is that |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1900 # it updates tmdnodes (via lookupfn) |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1901 for d in deltas: |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1902 pass |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1903 if not tree: |
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
1904 yield tree, [] |
39010
fcdab6629dde
changegroup: emit delta group close chunk outside of deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39009
diff
changeset
|
1905 |
39732
e03c1a63155c
changegroup: tease out a temporary prune method for manifests
Augie Fackler <augie@google.com>
parents:
39731
diff
changeset
|
1906 def _prunemanifests(self, store, nodes, commonrevs): |
41767
1c1c4ef8b72e
changegroup: move non-pruning of non-ellipsis manifests to _prunemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
41719
diff
changeset
|
1907 if not self._ellipses: |
1c1c4ef8b72e
changegroup: move non-pruning of non-ellipsis manifests to _prunemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
41719
diff
changeset
|
1908 # In non-ellipses case and large repositories, it is better to |
1c1c4ef8b72e
changegroup: move non-pruning of non-ellipsis manifests to _prunemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
41719
diff
changeset
|
1909 # prevent calling of store.rev and store.linkrev on a lot of |
1c1c4ef8b72e
changegroup: move non-pruning of non-ellipsis manifests to _prunemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
41719
diff
changeset
|
1910 # nodes as compared to sending some extra data |
1c1c4ef8b72e
changegroup: move non-pruning of non-ellipsis manifests to _prunemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
41719
diff
changeset
|
1911 return nodes.copy() |
39732
e03c1a63155c
changegroup: tease out a temporary prune method for manifests
Augie Fackler <augie@google.com>
parents:
39731
diff
changeset
|
1912 # This is split out as a separate method to allow filtering |
e03c1a63155c
changegroup: tease out a temporary prune method for manifests
Augie Fackler <augie@google.com>
parents:
39731
diff
changeset
|
1913 # commonrevs in extension code. |
e03c1a63155c
changegroup: tease out a temporary prune method for manifests
Augie Fackler <augie@google.com>
parents:
39731
diff
changeset
|
1914 # |
e03c1a63155c
changegroup: tease out a temporary prune method for manifests
Augie Fackler <augie@google.com>
parents:
39731
diff
changeset
|
1915 # TODO(augie): this shouldn't be required, instead we should |
e03c1a63155c
changegroup: tease out a temporary prune method for manifests
Augie Fackler <augie@google.com>
parents:
39731
diff
changeset
|
1916 # make filtering of revisions to send delegated to the store |
e03c1a63155c
changegroup: tease out a temporary prune method for manifests
Augie Fackler <augie@google.com>
parents:
39731
diff
changeset
|
1917 # layer. |
e03c1a63155c
changegroup: tease out a temporary prune method for manifests
Augie Fackler <augie@google.com>
parents:
39731
diff
changeset
|
1918 frev, flr = store.rev, store.linkrev |
e03c1a63155c
changegroup: tease out a temporary prune method for manifests
Augie Fackler <augie@google.com>
parents:
39731
diff
changeset
|
1919 return [n for n in nodes if flr(frev(n)) not in commonrevs] |
e03c1a63155c
changegroup: tease out a temporary prune method for manifests
Augie Fackler <augie@google.com>
parents:
39731
diff
changeset
|
1920 |
24897
5c35a6040352
changegroup: document that 'source' parameter exists for extensions
Martin von Zweigbergk <martinvonz@google.com>
parents:
24896
diff
changeset
|
1921 # The 'source' parameter is useful for extensions |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1922 def generatefiles( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1923 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1924 changedfiles, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1925 commonrevs, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1926 source, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1927 mfdicts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1928 fastpathlinkrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1929 fnodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1930 clrevs, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1931 sidedata_helpers=None, |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
1932 debug_info=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1933 ): |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1934 changedfiles = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1935 f |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1936 for f in changedfiles |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1937 if self._matcher(f) and not self._oldmatcher(f) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1938 ] |
38889
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1939 |
38999
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1940 if not fastpathlinkrev: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1941 |
38999
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1942 def normallinknodes(unused, fname): |
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1943 return fnodes.get(fname, {}) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1944 |
38999
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1945 else: |
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1946 cln = self._repo.changelog.node |
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1947 |
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1948 def normallinknodes(store, fname): |
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1949 flinkrev = store.linkrev |
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1950 fnode = store.node |
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1951 revs = ((r, flinkrev(r)) for r in store) |
44452
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
44306
diff
changeset
|
1952 return {fnode(r): cln(lr) for r, lr in revs if lr in clrevs} |
38999
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1953 |
39001
a6e1ff40e335
changegroup: pass clrevtolocalrev to each group
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39000
diff
changeset
|
1954 clrevtolocalrev = {} |
a6e1ff40e335
changegroup: pass clrevtolocalrev to each group
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39000
diff
changeset
|
1955 |
38904
cdb9bc216771
changegroup: declare shallow flag in constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38903
diff
changeset
|
1956 if self._isshallow: |
38889
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1957 # In a shallow clone, the linknodes callback needs to also include |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1958 # those file nodes that are in the manifests we sent but weren't |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1959 # introduced by those manifests. |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1960 commonctxs = [self._repo[c] for c in commonrevs] |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1961 clrev = self._repo.changelog.rev |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1962 |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1963 def linknodes(flog, fname): |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1964 for c in commonctxs: |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1965 try: |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1966 fnode = c.filenode(fname) |
39001
a6e1ff40e335
changegroup: pass clrevtolocalrev to each group
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39000
diff
changeset
|
1967 clrevtolocalrev[c.rev()] = flog.rev(fnode) |
38889
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1968 except error.ManifestLookupError: |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1969 pass |
38999
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1970 links = normallinknodes(flog, fname) |
38889
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1971 if len(links) != len(mfdicts): |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1972 for mf, lr in mfdicts: |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1973 fnode = mf.get(fname, None) |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1974 if fnode in links: |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1975 links[fnode] = min(links[fnode], lr, key=clrev) |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1976 elif fnode: |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1977 links[fnode] = lr |
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1978 return links |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1979 |
38999
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1980 else: |
b83e9c503f2f
changegroup: define linknodes callbacks in generatefiles()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38998
diff
changeset
|
1981 linknodes = normallinknodes |
38889
a06aab274aef
changegroup: move generatefiles() from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38888
diff
changeset
|
1982 |
19334
95a49112e7ab
bundle: move file chunk generation to it's own function
Durham Goode <durham@fb.com>
parents:
19325
diff
changeset
|
1983 repo = self._repo |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1984 progress = repo.ui.makeprogress( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1985 _(b'files'), unit=_(b'files'), total=len(changedfiles) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1986 ) |
19334
95a49112e7ab
bundle: move file chunk generation to it's own function
Durham Goode <durham@fb.com>
parents:
19325
diff
changeset
|
1987 for i, fname in enumerate(sorted(changedfiles)): |
95a49112e7ab
bundle: move file chunk generation to it's own function
Durham Goode <durham@fb.com>
parents:
19325
diff
changeset
|
1988 filerevlog = repo.file(fname) |
95a49112e7ab
bundle: move file chunk generation to it's own function
Durham Goode <durham@fb.com>
parents:
19325
diff
changeset
|
1989 if not filerevlog: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1990 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1991 _(b"empty or missing file data for %s") % fname |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1992 ) |
19334
95a49112e7ab
bundle: move file chunk generation to it's own function
Durham Goode <durham@fb.com>
parents:
19325
diff
changeset
|
1993 |
39001
a6e1ff40e335
changegroup: pass clrevtolocalrev to each group
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39000
diff
changeset
|
1994 clrevtolocalrev.clear() |
a6e1ff40e335
changegroup: pass clrevtolocalrev to each group
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39000
diff
changeset
|
1995 |
19334
95a49112e7ab
bundle: move file chunk generation to it's own function
Durham Goode <durham@fb.com>
parents:
19325
diff
changeset
|
1996 linkrevnodes = linknodes(filerevlog, fname) |
19207
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1997 # Lookup for filenodes, we collected the linkrev nodes above in the |
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1998 # fastpath case and with lookupmf in the slowpath case. |
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1999 def lookupfilelog(x): |
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
2000 return linkrevnodes[x] |
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
2001 |
39007
39f5c7afdc25
changegroup: inline _prune() into call sites
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39006
diff
changeset
|
2002 frev, flr = filerevlog.rev, filerevlog.linkrev |
39733
5adc5fe41a7d
changegroup: reintroduce some comments that have gotten lost over the years
Augie Fackler <augie@google.com>
parents:
39732
diff
changeset
|
2003 # Skip sending any filenode we know the client already |
5adc5fe41a7d
changegroup: reintroduce some comments that have gotten lost over the years
Augie Fackler <augie@google.com>
parents:
39732
diff
changeset
|
2004 # has. This avoids over-sending files relatively |
5adc5fe41a7d
changegroup: reintroduce some comments that have gotten lost over the years
Augie Fackler <augie@google.com>
parents:
39732
diff
changeset
|
2005 # inexpensively, so it's not a problem if we under-filter |
5adc5fe41a7d
changegroup: reintroduce some comments that have gotten lost over the years
Augie Fackler <augie@google.com>
parents:
39732
diff
changeset
|
2006 # here. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2007 filenodes = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2008 n for n in linkrevnodes if flr(frev(n)) not in commonrevs |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2009 ] |
39007
39f5c7afdc25
changegroup: inline _prune() into call sites
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39006
diff
changeset
|
2010 |
39020
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2011 if not filenodes: |
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2012 continue |
38982
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
2013 |
39020
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2014 progress.update(i + 1, item=fname) |
39008
8c84f1ef949e
changegroup: pass all state into group()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39007
diff
changeset
|
2015 |
39020
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2016 deltas = deltagroup( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2017 self._repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2018 filerevlog, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2019 filenodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2020 False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2021 lookupfilelog, |
39861
db5501d93bcf
changegroup: remove reordering control (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39733
diff
changeset
|
2022 self._forcedeltaparentprev, |
39020
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2023 ellipses=self._ellipses, |
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2024 clrevtolocalrev=clrevtolocalrev, |
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2025 fullclnodes=self._fullclnodes, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2026 precomputedellipsis=self._precomputedellipsis, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents:
46713
diff
changeset
|
2027 sidedata_helpers=sidedata_helpers, |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2028 debug_info=debug_info, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2029 ) |
39020
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2030 |
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2031 yield fname, deltas |
39010
fcdab6629dde
changegroup: emit delta group close chunk outside of deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39009
diff
changeset
|
2032 |
38410
1c5c4a5dd86d
changegroup: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents:
38382
diff
changeset
|
2033 progress.complete() |
19200
4cfdec944edf
bundle-ng: move group into the bundler
Sune Foldager <cryo@cyanite.org>
parents:
19199
diff
changeset
|
2034 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2035 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2036 def _makecg1packer( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2037 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2038 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2039 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2040 bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2041 ellipses=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2042 shallow=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2043 ellipsisroots=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2044 fullnodes=None, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2045 remote_sidedata=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2046 ): |
38897
bd64b8b8f0dd
changegroup: pass function to build delta header into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38896
diff
changeset
|
2047 builddeltaheader = lambda d: _CHANGEGROUPV1_DELTA_HEADER.pack( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2048 d.node, d.p1node, d.p2node, d.linknode |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2049 ) |
27432
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
2050 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2051 return cgpacker( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2052 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2053 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2054 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2055 b'01', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2056 builddeltaheader=builddeltaheader, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2057 manifestsend=b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2058 forcedeltaparentprev=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2059 bundlecaps=bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2060 ellipses=ellipses, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2061 shallow=shallow, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2062 ellipsisroots=ellipsisroots, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2063 fullnodes=fullnodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2064 ) |
38894
19344024a8e1
changegroup: define functions for creating changegroup packers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38893
diff
changeset
|
2065 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2066 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2067 def _makecg2packer( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2068 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2069 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2070 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2071 bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2072 ellipses=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2073 shallow=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2074 ellipsisroots=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2075 fullnodes=None, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2076 remote_sidedata=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2077 ): |
38897
bd64b8b8f0dd
changegroup: pass function to build delta header into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38896
diff
changeset
|
2078 builddeltaheader = lambda d: _CHANGEGROUPV2_DELTA_HEADER.pack( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2079 d.node, d.p1node, d.p2node, d.basenode, d.linknode |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2080 ) |
38897
bd64b8b8f0dd
changegroup: pass function to build delta header into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38896
diff
changeset
|
2081 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2082 return cgpacker( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2083 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2084 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2085 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2086 b'02', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2087 builddeltaheader=builddeltaheader, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2088 manifestsend=b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2089 bundlecaps=bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2090 ellipses=ellipses, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2091 shallow=shallow, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2092 ellipsisroots=ellipsisroots, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2093 fullnodes=fullnodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2094 ) |
38894
19344024a8e1
changegroup: define functions for creating changegroup packers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38893
diff
changeset
|
2095 |
38897
bd64b8b8f0dd
changegroup: pass function to build delta header into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38896
diff
changeset
|
2096 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2097 def _makecg3packer( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2098 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2099 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2100 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2101 bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2102 ellipses=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2103 shallow=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2104 ellipsisroots=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2105 fullnodes=None, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2106 remote_sidedata=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2107 ): |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2108 builddeltaheader = lambda d: _CHANGEGROUPV3_DELTA_HEADER.pack( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2109 d.node, d.p1node, d.p2node, d.basenode, d.linknode, d.flags |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2110 ) |
38894
19344024a8e1
changegroup: define functions for creating changegroup packers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38893
diff
changeset
|
2111 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2112 return cgpacker( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2113 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2114 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2115 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2116 b'03', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2117 builddeltaheader=builddeltaheader, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2118 manifestsend=closechunk(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2119 bundlecaps=bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2120 ellipses=ellipses, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2121 shallow=shallow, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2122 ellipsisroots=ellipsisroots, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2123 fullnodes=fullnodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2124 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2125 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2126 |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2127 def _makecg4packer( |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2128 repo, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2129 oldmatcher, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2130 matcher, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2131 bundlecaps, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2132 ellipses=False, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2133 shallow=False, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2134 ellipsisroots=None, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2135 fullnodes=None, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2136 remote_sidedata=None, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2137 ): |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2138 # Sidedata is in a separate chunk from the delta to differentiate |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2139 # "raw delta" and sidedata. |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2140 def builddeltaheader(d): |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2141 return _CHANGEGROUPV4_DELTA_HEADER.pack( |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2142 d.protocol_flags, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2143 d.node, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2144 d.p1node, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2145 d.p2node, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2146 d.basenode, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2147 d.linknode, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2148 d.flags, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2149 ) |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2150 |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2151 return cgpacker( |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2152 repo, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2153 oldmatcher, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2154 matcher, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2155 b'04', |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2156 builddeltaheader=builddeltaheader, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2157 manifestsend=closechunk(), |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2158 bundlecaps=bundlecaps, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2159 ellipses=ellipses, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2160 shallow=shallow, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2161 ellipsisroots=ellipsisroots, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2162 fullnodes=fullnodes, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2163 remote_sidedata=remote_sidedata, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2164 ) |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2165 |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2166 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2167 _packermap = { |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2168 b'01': (_makecg1packer, cg1unpacker), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2169 # cg2 adds support for exchanging generaldelta |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2170 b'02': (_makecg2packer, cg2unpacker), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2171 # cg3 adds support for exchanging revlog flags and treemanifests |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2172 b'03': (_makecg3packer, cg3unpacker), |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2173 # ch4 adds support for exchanging sidedata |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2174 b'04': (_makecg4packer, cg4unpacker), |
26709
42733e956887
changegroup: reformat packermap and add comment
Augie Fackler <augie@google.com>
parents:
26708
diff
changeset
|
2175 } |
23168
a92ba36a1a9d
changegroup: add a "packermap" dictionary to track different packer versions
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22971
diff
changeset
|
2176 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2177 |
30627
7ace5304fec5
changegroup: pass 'repo' to allsupportedversions
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30626
diff
changeset
|
2178 def allsupportedversions(repo): |
27928
c0f11347b107
changegroup: don't support versions 01 and 02 with treemanifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
27920
diff
changeset
|
2179 versions = set(_packermap.keys()) |
43059
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2180 needv03 = False |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2181 if ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2182 repo.ui.configbool(b'experimental', b'changegroup3') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2183 or repo.ui.configbool(b'experimental', b'treemanifest') |
45552
10284ce3d5ed
scmutil: introduce function to check whether repo uses treemanifest or not
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45372
diff
changeset
|
2184 or scmutil.istreemanifest(repo) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2185 ): |
43059
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2186 # we keep version 03 because we need to to exchange treemanifest data |
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2187 # |
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2188 # we also keep vresion 01 and 02, because it is possible for repo to |
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2189 # contains both normal and tree manifest at the same time. so using |
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2190 # older version to pull data is viable |
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2191 # |
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2192 # (or even to push subset of history) |
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2193 needv03 = True |
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2194 if not needv03: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2195 versions.discard(b'03') |
47076
08e26ef4ad35
changegroup: don't limit cgv4 to revlogv2 repos
Raphaël Gomès <rgomes@octobus.net>
parents:
47075
diff
changeset
|
2196 want_v4 = ( |
08e26ef4ad35
changegroup: don't limit cgv4 to revlogv2 repos
Raphaël Gomès <rgomes@octobus.net>
parents:
47075
diff
changeset
|
2197 repo.ui.configbool(b'experimental', b'changegroup4') |
08e26ef4ad35
changegroup: don't limit cgv4 to revlogv2 repos
Raphaël Gomès <rgomes@octobus.net>
parents:
47075
diff
changeset
|
2198 or requirements.REVLOGV2_REQUIREMENT in repo.requirements |
47263
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47216
diff
changeset
|
2199 or requirements.CHANGELOGV2_REQUIREMENT in repo.requirements |
47076
08e26ef4ad35
changegroup: don't limit cgv4 to revlogv2 repos
Raphaël Gomès <rgomes@octobus.net>
parents:
47075
diff
changeset
|
2200 ) |
08e26ef4ad35
changegroup: don't limit cgv4 to revlogv2 repos
Raphaël Gomès <rgomes@octobus.net>
parents:
47075
diff
changeset
|
2201 if not want_v4: |
08e26ef4ad35
changegroup: don't limit cgv4 to revlogv2 repos
Raphaël Gomès <rgomes@octobus.net>
parents:
47075
diff
changeset
|
2202 versions.discard(b'04') |
27953
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2203 return versions |
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2204 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2205 |
27953
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2206 # Changegroup versions that can be applied to the repo |
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2207 def supportedincomingversions(repo): |
30628
a001cd7296a5
changegroup: simplify logic around enabling changegroup 03
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30627
diff
changeset
|
2208 return allsupportedversions(repo) |
27953
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2209 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2210 |
27953
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2211 # Changegroup versions that can be created from the repo |
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2212 def supportedoutgoingversions(repo): |
30627
7ace5304fec5
changegroup: pass 'repo' to allsupportedversions
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30626
diff
changeset
|
2213 versions = allsupportedversions(repo) |
45552
10284ce3d5ed
scmutil: introduce function to check whether repo uses treemanifest or not
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45372
diff
changeset
|
2214 if scmutil.istreemanifest(repo): |
27928
c0f11347b107
changegroup: don't support versions 01 and 02 with treemanifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
27920
diff
changeset
|
2215 # Versions 01 and 02 support only flat manifests and it's just too |
c0f11347b107
changegroup: don't support versions 01 and 02 with treemanifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
27920
diff
changeset
|
2216 # expensive to convert between the flat manifest and tree manifest on |
c0f11347b107
changegroup: don't support versions 01 and 02 with treemanifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
27920
diff
changeset
|
2217 # the fly. Since tree manifests are hashed differently, all of history |
c0f11347b107
changegroup: don't support versions 01 and 02 with treemanifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
27920
diff
changeset
|
2218 # would have to be converted. Instead, we simply don't even pretend to |
c0f11347b107
changegroup: don't support versions 01 and 02 with treemanifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
27920
diff
changeset
|
2219 # support versions 01 and 02. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2220 versions.discard(b'01') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2221 versions.discard(b'02') |
45372
77b8588dd84e
requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45371
diff
changeset
|
2222 if requirements.NARROW_REQUIREMENT in repo.requirements: |
36465
94709406f10d
narrow: move changegroup.supportedoutgoingversions() override to core
Martin von Zweigbergk <martinvonz@google.com>
parents:
36464
diff
changeset
|
2223 # Versions 01 and 02 don't support revlog flags, and we need to |
94709406f10d
narrow: move changegroup.supportedoutgoingversions() override to core
Martin von Zweigbergk <martinvonz@google.com>
parents:
36464
diff
changeset
|
2224 # support that for stripping and unbundling to work. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2225 versions.discard(b'01') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2226 versions.discard(b'02') |
37132
a54113fcc8c9
lfs: move the 'supportedoutgoingversions' handling to changegroup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
37084
diff
changeset
|
2227 if LFS_REQUIREMENT in repo.requirements: |
a54113fcc8c9
lfs: move the 'supportedoutgoingversions' handling to changegroup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
37084
diff
changeset
|
2228 # Versions 01 and 02 don't support revlog flags, and we need to |
a54113fcc8c9
lfs: move the 'supportedoutgoingversions' handling to changegroup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
37084
diff
changeset
|
2229 # mark LFS entries with REVIDX_EXTSTORED. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2230 versions.discard(b'01') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2231 versions.discard(b'02') |
37132
a54113fcc8c9
lfs: move the 'supportedoutgoingversions' handling to changegroup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
37084
diff
changeset
|
2232 |
27752
29cfc474c5fd
changegroup3: introduce experimental.changegroup3 boolean config
Martin von Zweigbergk <martinvonz@google.com>
parents:
27751
diff
changeset
|
2233 return versions |
27751
a40e2f7fe49d
changegroup: hide packermap behind methods
Martin von Zweigbergk <martinvonz@google.com>
parents:
27739
diff
changeset
|
2234 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2235 |
34144
91f0677dc920
repair: preserve phase also when not using generaldelta (issue5678)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33461
diff
changeset
|
2236 def localversion(repo): |
91f0677dc920
repair: preserve phase also when not using generaldelta (issue5678)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33461
diff
changeset
|
2237 # Finds the best version to use for bundles that are meant to be used |
91f0677dc920
repair: preserve phase also when not using generaldelta (issue5678)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33461
diff
changeset
|
2238 # locally, such as those from strip and shelve, and temporary bundles. |
91f0677dc920
repair: preserve phase also when not using generaldelta (issue5678)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33461
diff
changeset
|
2239 return max(supportedoutgoingversions(repo)) |
91f0677dc920
repair: preserve phase also when not using generaldelta (issue5678)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33461
diff
changeset
|
2240 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2241 |
27929
3b2ac2115464
changegroup: introduce safeversion()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27928
diff
changeset
|
2242 def safeversion(repo): |
3b2ac2115464
changegroup: introduce safeversion()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27928
diff
changeset
|
2243 # Finds the smallest version that it's safe to assume clients of the repo |
27931
1289a122cf3f
shelve: use cg3 for treemanifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
27929
diff
changeset
|
2244 # will support. For example, all hg versions that support generaldelta also |
1289a122cf3f
shelve: use cg3 for treemanifests
Martin von Zweigbergk <martinvonz@google.com>
parents:
27929
diff
changeset
|
2245 # support changegroup 02. |
27953
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2246 versions = supportedoutgoingversions(repo) |
46627
f4c325bf80fc
requirements: also add a generaldelta constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46624
diff
changeset
|
2247 if requirements.GENERALDELTA_REQUIREMENT in repo.requirements: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2248 versions.discard(b'01') |
27929
3b2ac2115464
changegroup: introduce safeversion()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27928
diff
changeset
|
2249 assert versions |
3b2ac2115464
changegroup: introduce safeversion()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27928
diff
changeset
|
2250 return min(versions) |
3b2ac2115464
changegroup: introduce safeversion()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27928
diff
changeset
|
2251 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2252 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2253 def getbundler( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2254 version, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2255 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2256 bundlecaps=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2257 oldmatcher=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2258 matcher=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2259 ellipses=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2260 shallow=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2261 ellipsisroots=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2262 fullnodes=None, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2263 remote_sidedata=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2264 ): |
27953
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2265 assert version in supportedoutgoingversions(repo) |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
2266 |
40344
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
2267 if matcher is None: |
41676
0531dff73d0b
match: delete unused root and cwd arguments from {always,never,exact}() (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
41673
diff
changeset
|
2268 matcher = matchmod.always() |
40344
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
2269 if oldmatcher is None: |
41676
0531dff73d0b
match: delete unused root and cwd arguments from {always,never,exact}() (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
41673
diff
changeset
|
2270 oldmatcher = matchmod.never() |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
2271 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2272 if version == b'01' and not matcher.always(): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2273 raise error.ProgrammingError( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43106
diff
changeset
|
2274 b'version 01 changegroups do not support sparse file matchers' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2275 ) |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
2276 |
38908
1469584ad5fe
changegroup: specify ellipses mode explicitly
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38907
diff
changeset
|
2277 if ellipses and version in (b'01', b'02'): |
1469584ad5fe
changegroup: specify ellipses mode explicitly
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38907
diff
changeset
|
2278 raise error.Abort( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2279 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2280 b'ellipsis nodes require at least cg3 on client and server, ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2281 b'but negotiated version %s' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2282 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2283 % version |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2284 ) |
38908
1469584ad5fe
changegroup: specify ellipses mode explicitly
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38907
diff
changeset
|
2285 |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
2286 # Requested files could include files not in the local store. So |
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
2287 # filter those out. |
40344
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
2288 matcher = repo.narrowmatch(matcher) |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
2289 |
38894
19344024a8e1
changegroup: define functions for creating changegroup packers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38893
diff
changeset
|
2290 fn = _packermap[version][0] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2291 return fn( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2292 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2293 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2294 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2295 bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2296 ellipses=ellipses, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2297 shallow=shallow, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2298 ellipsisroots=ellipsisroots, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2299 fullnodes=fullnodes, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2300 remote_sidedata=remote_sidedata, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2301 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2302 |
27751
a40e2f7fe49d
changegroup: hide packermap behind methods
Martin von Zweigbergk <martinvonz@google.com>
parents:
27739
diff
changeset
|
2303 |
29593
953839de96ab
bundle2: store changeset count when creating file bundles
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29371
diff
changeset
|
2304 def getunbundler(version, fh, alg, extras=None): |
953839de96ab
bundle2: store changeset count when creating file bundles
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29371
diff
changeset
|
2305 return _packermap[version][1](fh, alg, extras=extras) |
27751
a40e2f7fe49d
changegroup: hide packermap behind methods
Martin von Zweigbergk <martinvonz@google.com>
parents:
27739
diff
changeset
|
2306 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2307 |
20926
7c1ed40e3325
localrepo: move the changegroupinfo method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20925
diff
changeset
|
2308 def _changegroupinfo(repo, nodes, source): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2309 if repo.ui.verbose or source == b'bundle': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2310 repo.ui.status(_(b"%d changesets found\n") % len(nodes)) |
20926
7c1ed40e3325
localrepo: move the changegroupinfo method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20925
diff
changeset
|
2311 if repo.ui.debugflag: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2312 repo.ui.debug(b"list of changesets:\n") |
20926
7c1ed40e3325
localrepo: move the changegroupinfo method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20925
diff
changeset
|
2313 for node in nodes: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2314 repo.ui.debug(b"%s\n" % hex(node)) |
20926
7c1ed40e3325
localrepo: move the changegroupinfo method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20925
diff
changeset
|
2315 |
34096
f85dfde1731a
changegroup: replace getsubset with makechangegroup
Durham Goode <durham@fb.com>
parents:
34091
diff
changeset
|
2316 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2317 def makechangegroup( |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2318 repo, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2319 outgoing, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2320 version, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2321 source, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2322 fastpath=False, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2323 bundlecaps=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2324 ): |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2325 cgstream = makestream( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2326 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2327 outgoing, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2328 version, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2329 source, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2330 fastpath=fastpath, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2331 bundlecaps=bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2332 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2333 return getunbundler( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2334 version, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2335 util.chunkbuffer(cgstream), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2336 None, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2337 {b'clcount': len(outgoing.missing)}, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2338 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2339 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2340 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2341 def makestream( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2342 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2343 outgoing, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2344 version, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2345 source, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2346 fastpath=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2347 bundlecaps=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2348 matcher=None, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2349 remote_sidedata=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2350 ): |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2351 bundler = getbundler( |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2352 version, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2353 repo, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2354 bundlecaps=bundlecaps, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2355 matcher=matcher, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2356 remote_sidedata=remote_sidedata, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2357 ) |
34103
92f1e2be8ab6
changegroup: rename getsubsetraw to makestream
Durham Goode <durham@fb.com>
parents:
34101
diff
changeset
|
2358 |
20925
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2359 repo = repo.unfiltered() |
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2360 commonrevs = outgoing.common |
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2361 csets = outgoing.missing |
45144
c93dd9d9f1e6
discovery: change users of `outgoing.missingheads` to `outgoing.ancestorsof`
Manuel Jacob <me@manueljacob.de>
parents:
44452
diff
changeset
|
2362 heads = outgoing.ancestorsof |
20925
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2363 # We go through the fast path if we get told to, or if all (unfiltered |
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2364 # heads have been requested (since we then know there all linkrevs will |
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2365 # be pulled by the client). |
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2366 heads.sort() |
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2367 fastpathlinkrev = fastpath or ( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2368 repo.filtername is None and heads == sorted(repo.heads()) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2369 ) |
20925
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2370 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2371 repo.hook(b'preoutgoing', throw=True, source=source) |
20926
7c1ed40e3325
localrepo: move the changegroupinfo method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20925
diff
changeset
|
2372 _changegroupinfo(repo, csets, source) |
49609
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2373 return bundler.generate( |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2374 commonrevs, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2375 csets, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2376 fastpathlinkrev, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2377 source, |
9cac281eb9c0
debug: add an option to display statistic about a bundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49284
diff
changeset
|
2378 ) |
23177
706547a14b8b
changegroup: introduce "raw" versions of some commands
Sune Foldager <cryo@cyanite.org>
parents:
23168
diff
changeset
|
2379 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2380 |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2381 def _addchangegroupfiles( |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2382 repo, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2383 source, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2384 revmap, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2385 trp, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2386 expectedfiles, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2387 needfiles, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2388 addrevisioncb=None, |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
2389 debug_info=None, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
2390 delta_base_reuse_policy=None, |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2391 ): |
20932
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2392 revisions = 0 |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2393 files = 0 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2394 progress = repo.ui.makeprogress( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2395 _(b'files'), unit=_(b'files'), total=expectedfiles |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2396 ) |
29724
4e7be6e33269
changegroup: use `iter(callable, sentinel)` instead of while True
Augie Fackler <augie@google.com>
parents:
29690
diff
changeset
|
2397 for chunkdata in iter(source.filelogheader, {}): |
28361
277a22cd8741
changegroup: progress for added files is not measured in "chunks"
Martin von Zweigbergk <martinvonz@google.com>
parents:
28360
diff
changeset
|
2398 files += 1 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2399 f = chunkdata[b"filename"] |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2400 repo.ui.debug(b"adding %s revisions\n" % f) |
38382
daa08d45740f
changegroup: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents:
38373
diff
changeset
|
2401 progress.increment() |
27754
a09f143daaf4
changegroup3: move treemanifest support into _unpackmanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27753
diff
changeset
|
2402 fl = repo.file(f) |
20932
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2403 o = len(fl) |
24120
a450e0a2ba0a
revlog: in addgroup, reject ill-formed deltas based on censored nodes
Mike Edgar <adgar@google.com>
parents:
23897
diff
changeset
|
2404 try: |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34257
diff
changeset
|
2405 deltas = source.deltaiter() |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2406 added = fl.addgroup( |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2407 deltas, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2408 revmap, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2409 trp, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2410 addrevisioncb=addrevisioncb, |
49610
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
2411 debug_info=debug_info, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
2412 delta_base_reuse_policy=delta_base_reuse_policy, |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2413 ) |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2414 if not added: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2415 raise error.Abort(_(b"received file revlog group is empty")) |
25660
328739ea70c3
global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25624
diff
changeset
|
2416 except error.CensoredBaseError as e: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2417 raise error.Abort(_(b"received delta base is censored: %s") % e) |
27754
a09f143daaf4
changegroup3: move treemanifest support into _unpackmanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27753
diff
changeset
|
2418 revisions += len(fl) - o |
20932
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2419 if f in needfiles: |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2420 needs = needfiles[f] |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
2421 for new in range(o, len(fl)): |
20932
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2422 n = fl.node(new) |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2423 if n in needs: |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2424 needs.remove(n) |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2425 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2426 raise error.Abort(_(b"received spurious file revlog entry")) |
20932
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2427 if not needs: |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2428 del needfiles[f] |
38382
daa08d45740f
changegroup: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents:
38373
diff
changeset
|
2429 progress.complete() |
20932
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2430 |
48913
f254fc73d956
global: bulk replace simple pycompat.iteritems(x) with x.items()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48875
diff
changeset
|
2431 for f, needs in needfiles.items(): |
20932
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2432 fl = repo.file(f) |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2433 for n in needs: |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2434 try: |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2435 fl.rev(n) |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2436 except error.LookupError: |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26540
diff
changeset
|
2437 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2438 _(b'missing file data for %s:%s - run hg verify') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2439 % (f, hex(n)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2440 ) |
20932
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2441 |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2442 return revisions, files |