Mercurial > public > mercurial-scm > hg
annotate mercurial/changegroup.py @ 52049:af54626bf358
dirstate-map: add a missing debug wait point when accessing the v2 docket
fc8e37c380d3 added synchronization points to the dirstate to allow for race
condition testing without actually requiring a time-based race condition
to happen.
This changes adds the `pre-read-file` wait point before we read the docket,
since callers might ask for the parents before anything else is
read, leading to the first read being done before the wait point.
This removes some differences in test output which were presumed to be
speed related, but weren't.
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Mon, 14 Oct 2024 14:14:21 +0200 |
parents | f4733654f144 |
children | d98b56a1d41c |
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 |
51859
f4733654f144
typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents:
51858
diff
changeset
|
8 from __future__ import annotations |
25921
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
9 |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
10 import os |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
11 import struct |
20933
d3775db748a0
localrepo: move the addchangegroup method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20932
diff
changeset
|
12 import weakref |
25921
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
13 |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
14 from .i18n import _ |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
15 from .node import ( |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
16 hex, |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
17 nullrev, |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
18 short, |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
19 ) |
43085
eef9a2d67051
py3: manually import pycompat.open into files that need it
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43077
diff
changeset
|
20 from .pycompat import open |
25921
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
21 |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
22 from . import ( |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
23 error, |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
24 match as matchmod, |
25921
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
25 mdiff, |
74b303a637bc
changegroup: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25831
diff
changeset
|
26 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
|
27 pycompat, |
45372
77b8588dd84e
requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45371
diff
changeset
|
28 requirements, |
45552
10284ce3d5ed
scmutil: introduce function to check whether repo uses treemanifest or not
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45372
diff
changeset
|
29 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
|
30 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
|
31 ) |
268662aac075
interfaces: create a new folder for interfaces and move repository.py in it
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
42341
diff
changeset
|
32 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
33 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
|
34 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
|
35 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
|
36 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
|
37 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
38 _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
|
39 _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
|
40 _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
|
41 _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
|
42 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
43 LFS_REQUIREMENT = b'lfs' |
37132
a54113fcc8c9
lfs: move the 'supportedoutgoingversions' handling to changegroup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
37084
diff
changeset
|
44 |
35754
fb0be099063f
util: move 'readexactly' in the util module
Boris Feld <boris.feld@octobus.net>
parents:
35012
diff
changeset
|
45 readexactly = util.readexactly |
13457
e74fe15dc7fd
changegroup: verify all stream reads
Mads Kiilerich <mads@kiilerich.com>
parents:
13456
diff
changeset
|
46 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
47 |
13457
e74fe15dc7fd
changegroup: verify all stream reads
Mads Kiilerich <mads@kiilerich.com>
parents:
13456
diff
changeset
|
48 def getchunk(stream): |
e74fe15dc7fd
changegroup: verify all stream reads
Mads Kiilerich <mads@kiilerich.com>
parents:
13456
diff
changeset
|
49 """return the next chunk from stream as a string""" |
e74fe15dc7fd
changegroup: verify all stream reads
Mads Kiilerich <mads@kiilerich.com>
parents:
13456
diff
changeset
|
50 d = readexactly(stream, 4) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
51 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
|
52 if l <= 4: |
13458
9f2c407caf34
changegroup: don't accept odd chunk headers
Mads Kiilerich <mads@kiilerich.com>
parents:
13457
diff
changeset
|
53 if l: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
54 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
|
55 return b"" |
13457
e74fe15dc7fd
changegroup: verify all stream reads
Mads Kiilerich <mads@kiilerich.com>
parents:
13456
diff
changeset
|
56 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
|
57 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
58 |
5368
61462e7d62ed
changegroup: avoid large copies
Matt Mackall <mpm@selenic.com>
parents:
3932
diff
changeset
|
59 def chunkheader(length): |
9437
1c4e4004f3a6
Improve some docstrings relating to changegroups and prepush().
Greg Ward <greg-hg@gerg.ca>
parents:
9087
diff
changeset
|
60 """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
|
61 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
|
62 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
63 |
1981
736b6c96bbbc
make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
64 def closechunk(): |
9437
1c4e4004f3a6
Improve some docstrings relating to changegroups and prepush().
Greg Ward <greg-hg@gerg.ca>
parents:
9087
diff
changeset
|
65 """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
|
66 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
|
67 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
68 |
38981
227ebd88ce5e
changegroup: pull _fileheader out of cgpacker
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38980
diff
changeset
|
69 def _fileheader(path): |
227ebd88ce5e
changegroup: pull _fileheader out of cgpacker
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38980
diff
changeset
|
70 """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
|
71 return chunkheader(len(path)) + path |
227ebd88ce5e
changegroup: pull _fileheader out of cgpacker
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38980
diff
changeset
|
72 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
73 |
26540
7469067de2ba
changegroup: extract the file management part in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26509
diff
changeset
|
74 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
|
75 """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
|
76 |
26540
7469067de2ba
changegroup: extract the file management part in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26509
diff
changeset
|
77 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
|
78 Existing files will not be overwritten. |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
79 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
|
80 """ |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
81 fh = None |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
82 cleanup = None |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
83 try: |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
84 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
|
85 if vfs: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
86 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
|
87 else: |
30212
260af19891f2
changegroup: increase write buffer size to 128k
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30211
diff
changeset
|
88 # 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
|
89 # 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
|
90 fh = open(filename, b"wb", 131072) |
3659
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
91 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
92 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
|
93 fh = os.fdopen(fd, "wb") |
3659
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
94 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
|
95 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
|
96 fh.write(c) |
3659
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
97 cleanup = None |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
98 return filename |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
99 finally: |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
100 if fh is not None: |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
101 fh.close() |
025f68f22ae2
move write_bundle to changegroup.py
Matt Mackall <mpm@selenic.com>
parents:
2470
diff
changeset
|
102 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
|
103 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
|
104 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
|
105 else: |
c20f4898631e
changegroup: add "vfs" argument to "writebundle()" for relative access via vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20966
diff
changeset
|
106 os.unlink(cleanup) |
3660
8500a13ec44b
create a readbundle function
Matt Mackall <mpm@selenic.com>
parents:
3659
diff
changeset
|
107 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
108 |
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
|
109 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
|
110 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
|
111 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
|
112 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
|
113 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
|
114 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
|
115 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
|
116 ): |
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 """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
|
118 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
|
119 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
|
120 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
|
121 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
|
122 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
|
123 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
|
124 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
|
125 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
|
126 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
|
127 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
|
128 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
|
129 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
|
130 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
|
131 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
|
132 |
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 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
|
134 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
|
135 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
|
136 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
|
137 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
|
138 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
|
139 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
|
140 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
|
141 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
|
142 ) |
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 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
|
144 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
|
145 |
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 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
|
147 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
|
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 |
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 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
|
151 # 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
|
152 # 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
|
153 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
|
154 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
|
155 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
|
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 |
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 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
|
159 """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
|
160 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
|
161 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
|
162 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
|
163 _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
|
164 (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
|
165 (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
|
166 (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
|
167 ] |
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 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
|
169 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
|
170 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
|
171 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
|
172 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
|
173 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
|
174 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
|
175 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
|
176 (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
|
177 (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
|
178 (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
|
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 |
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 # 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
|
182 _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
|
183 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
|
184 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
|
185 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
|
186 _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
|
187 |
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 # 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
|
189 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
|
190 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
|
191 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
|
192 _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
|
193 |
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 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
|
195 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
|
196 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
|
197 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
|
198 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
|
199 _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
|
200 |
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 # 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
|
202 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
|
203 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
|
204 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
|
205 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
|
206 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
|
207 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
|
208 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
|
209 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
|
210 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
|
211 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
|
212 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
|
213 } |
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 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
|
215 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
|
216 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
|
217 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
|
218 |
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 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
|
220 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
|
221 _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
|
222 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
|
223 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
|
224 _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
|
225 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
|
226 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
|
227 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
|
228 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
|
229 _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
|
230 _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
|
231 |
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 # 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
|
233 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
|
234 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
|
235 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
|
236 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
|
237 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
|
238 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
|
239 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
|
240 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
|
241 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
|
242 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
|
243 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
|
244 } |
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 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
|
246 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
|
247 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
|
248 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
|
249 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
|
250 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
|
251 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
|
252 |
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 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
|
254 _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
|
255 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
|
256 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
|
257 _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
|
258 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
|
259 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
|
260 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
|
261 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
|
262 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
|
263 _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
|
264 _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
|
265 |
35d4c2124073
debug: add an option to display statistic about a unbundling operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49609
diff
changeset
|
266 |
48946
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48913
diff
changeset
|
267 class cg1unpacker: |
26708
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
268 """Unpacker for cg1 changegroup streams. |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
269 |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
270 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
|
271 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
|
272 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
|
273 |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
274 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
|
275 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
|
276 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
|
277 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
|
278 |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
279 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
|
280 consumers should prefer apply() instead. |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
281 |
749d913f24b8
changegroup: document the public surface area of cg?unpackers
Augie Fackler <augie@google.com>
parents:
26707
diff
changeset
|
282 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
|
283 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
|
284 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
285 |
22390
e2806b8613ca
changegroup: rename bundle-related functions and classes
Sune Foldager <cryo@cyanite.org>
parents:
22070
diff
changeset
|
286 deltaheader = _CHANGEGROUPV1_DELTA_HEADER |
38896
271854adc3a6
changegroup: make delta header struct formatters actual structs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38895
diff
changeset
|
287 deltaheadersize = deltaheader.size |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
288 version = b'01' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
289 _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
|
290 |
29593
953839de96ab
bundle2: store changeset count when creating file bundles
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29371
diff
changeset
|
291 def __init__(self, fh, alg, extras=None): |
30354
a37a96d838b9
changegroup: use compression engines API
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30339
diff
changeset
|
292 if alg is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
293 alg = b'UN' |
30354
a37a96d838b9
changegroup: use compression engines API
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30339
diff
changeset
|
294 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
|
295 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
|
296 if alg == b'BZ': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
297 alg = b'_truncatedBZ' |
30354
a37a96d838b9
changegroup: use compression engines API
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30339
diff
changeset
|
298 |
a37a96d838b9
changegroup: use compression engines API
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30339
diff
changeset
|
299 compengine = util.compengines.forbundletype(alg) |
a37a96d838b9
changegroup: use compression engines API
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30339
diff
changeset
|
300 self._stream = compengine.decompressorreader(fh) |
12044
bcc7139521b7
bundlerepo: remove duplication of bundle decompressors
Matt Mackall <mpm@selenic.com>
parents:
12043
diff
changeset
|
301 self._type = alg |
29593
953839de96ab
bundle2: store changeset count when creating file bundles
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29371
diff
changeset
|
302 self.extras = extras or {} |
12334
50946802593d
bundle: refactor progress callback
Matt Mackall <mpm@selenic.com>
parents:
12333
diff
changeset
|
303 self.callback = None |
26706
8c0c3059f478
changegroup: note why a few methods on cg1unpacker exist
Augie Fackler <augie@google.com>
parents:
26704
diff
changeset
|
304 |
8c0c3059f478
changegroup: note why a few methods on cg1unpacker exist
Augie Fackler <augie@google.com>
parents:
26704
diff
changeset
|
305 # 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
|
306 # 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
|
307 def compressed(self): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
308 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
|
309 |
12043
bef5effb3db0
bundle: introduce bundle class
Matt Mackall <mpm@selenic.com>
parents:
12042
diff
changeset
|
310 def read(self, l): |
bef5effb3db0
bundle: introduce bundle class
Matt Mackall <mpm@selenic.com>
parents:
12042
diff
changeset
|
311 return self._stream.read(l) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
312 |
12330
e527b8635881
bundle: make unbundle object seekable
Matt Mackall <mpm@selenic.com>
parents:
12329
diff
changeset
|
313 def seek(self, pos): |
e527b8635881
bundle: make unbundle object seekable
Matt Mackall <mpm@selenic.com>
parents:
12329
diff
changeset
|
314 return self._stream.seek(pos) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
315 |
12330
e527b8635881
bundle: make unbundle object seekable
Matt Mackall <mpm@selenic.com>
parents:
12329
diff
changeset
|
316 def tell(self): |
12332
680fe77ab5b8
bundlerepo: use bundle objects everywhere
Matt Mackall <mpm@selenic.com>
parents:
12330
diff
changeset
|
317 return self._stream.tell() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
318 |
12347
6277a9469dff
bundlerepo: restore close() method
Matt Mackall <mpm@selenic.com>
parents:
12336
diff
changeset
|
319 def close(self): |
6277a9469dff
bundlerepo: restore close() method
Matt Mackall <mpm@selenic.com>
parents:
12336
diff
changeset
|
320 return self._stream.close() |
12334
50946802593d
bundle: refactor progress callback
Matt Mackall <mpm@selenic.com>
parents:
12333
diff
changeset
|
321 |
26707
5ee6bd529300
changegroup: mark cg1unpacker.chunklength as private
Augie Fackler <augie@google.com>
parents:
26706
diff
changeset
|
322 def _chunklength(self): |
13459
acbe171c8fbe
changegroup: fix typo introduced in 9f2c407caf34
Jim Hague <jim.hague@acm.org>
parents:
13458
diff
changeset
|
323 d = readexactly(self._stream, 4) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
324 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
|
325 if l <= 4: |
9f2c407caf34
changegroup: don't accept odd chunk headers
Mads Kiilerich <mads@kiilerich.com>
parents:
13457
diff
changeset
|
326 if l: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
327 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
|
328 return 0 |
9f2c407caf34
changegroup: don't accept odd chunk headers
Mads Kiilerich <mads@kiilerich.com>
parents:
13457
diff
changeset
|
329 if self.callback: |
12334
50946802593d
bundle: refactor progress callback
Matt Mackall <mpm@selenic.com>
parents:
12333
diff
changeset
|
330 self.callback() |
13458
9f2c407caf34
changegroup: don't accept odd chunk headers
Mads Kiilerich <mads@kiilerich.com>
parents:
13457
diff
changeset
|
331 return l - 4 |
12334
50946802593d
bundle: refactor progress callback
Matt Mackall <mpm@selenic.com>
parents:
12333
diff
changeset
|
332 |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
333 def changelogheader(self): |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
334 """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
|
335 return {} |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
336 |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
337 def manifestheader(self): |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
338 """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
|
339 return {} |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
340 |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
341 def filelogheader(self): |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
342 """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
|
343 l = self._chunklength() |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
344 if not l: |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
345 return {} |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
346 fname = readexactly(self._stream, l) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
347 return {b'filename': fname} |
12334
50946802593d
bundle: refactor progress callback
Matt Mackall <mpm@selenic.com>
parents:
12333
diff
changeset
|
348 |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
349 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
|
350 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
|
351 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
|
352 deltabase = p1 |
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
353 else: |
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
354 deltabase = prevnode |
27433
12f727a5b434
changegroup: add flags field to cg3 delta header
Mike Edgar <adgar@google.com>
parents:
27432
diff
changeset
|
355 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
|
356 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
|
357 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
|
358 |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14143
diff
changeset
|
359 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
|
360 # 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
|
361 l = self._chunklength() |
12336
9d234f7d8a77
bundle: move chunk parsing into unbundle class
Matt Mackall <mpm@selenic.com>
parents:
12335
diff
changeset
|
362 if not l: |
9d234f7d8a77
bundle: move chunk parsing into unbundle class
Matt Mackall <mpm@selenic.com>
parents:
12335
diff
changeset
|
363 return {} |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14060
diff
changeset
|
364 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
|
365 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
|
366 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
|
367 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
|
368 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
|
369 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
|
370 |
20999
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
371 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
|
372 """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
|
373 |
1e28ec9744bf
changegroup: move chunk extraction into a getchunks method of unbundle10
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20978
diff
changeset
|
374 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
|
375 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
|
376 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
|
377 """ |
34091
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
378 # 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
|
379 # 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
|
380 # 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
|
381 # filelogs. |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
382 # |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
383 # 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
|
384 # 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
|
385 # 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
|
386 # 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
|
387 # 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
|
388 # 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
|
389 |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
390 parts = 0 |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
391 while parts < 2 + self._grouplistcount: |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
392 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
|
393 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
|
394 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
|
395 if not chunk: |
34091
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
396 # 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
|
397 # changelog and the manifestlog portions. The remaining |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
398 # 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
|
399 # 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
|
400 # 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
|
401 # 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
|
402 if parts < 2: |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
403 parts += 1 |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
404 elif noentries: |
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
405 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
|
406 break |
34091
bbdca7e460c0
changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com>
parents:
33712
diff
changeset
|
407 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
|
408 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
|
409 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
|
410 while pos < len(chunk): |
51699
ca7bde5dbafb
black: format the codebase with 23.3.0
Rapha?l Gom?s <rgomes@octobus.net>
parents:
51696
diff
changeset
|
411 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
|
412 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
|
413 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
|
414 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
|
415 |
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
|
416 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
|
417 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
|
418 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
|
419 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
|
420 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
|
421 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
|
422 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
|
423 debug_info=None, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
424 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
|
425 ): |
38346
83534c4ec58b
changegroup: use progress helper in apply() (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
38164
diff
changeset
|
426 self.callback = prog.increment |
26712
04176eaf911b
changegroup: move manifest unpacking into its own method
Augie Fackler <augie@google.com>
parents:
26711
diff
changeset
|
427 # 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
|
428 # 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
|
429 # 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
|
430 # be empty during the pull |
04176eaf911b
changegroup: move manifest unpacking into its own method
Augie Fackler <augie@google.com>
parents:
26711
diff
changeset
|
431 self.manifestheader() |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34257
diff
changeset
|
432 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
|
433 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
|
434 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
|
435 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
|
436 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
|
437 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
|
438 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
|
439 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
|
440 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
|
441 ) |
38373
ef692614e601
progress: hide update(None) in a new complete() method
Martin von Zweigbergk <martinvonz@google.com>
parents:
38346
diff
changeset
|
442 prog.complete() |
28360
11287888ce4b
changegroup: exclude submanifests from manifest progress
Martin von Zweigbergk <martinvonz@google.com>
parents:
28281
diff
changeset
|
443 self.callback = None |
26712
04176eaf911b
changegroup: move manifest unpacking into its own method
Augie Fackler <augie@google.com>
parents:
26711
diff
changeset
|
444 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
445 def apply( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
446 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
447 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
448 tr, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
449 srctype, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
450 url, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
451 targetphase=phases.draft, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
452 expectedtotal=None, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
453 sidedata_categories=None, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
454 delta_base_reuse_policy=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
455 ): |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
456 """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
|
457 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
|
458 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
|
459 |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
460 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
|
461 - 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
|
462 - 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
|
463 - 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
|
464 - number of heads stays the same: 1 |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
465 |
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
466 `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
|
467 categories. |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
468 |
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
469 `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
|
470 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
|
471 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
|
472 |
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
473 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
|
474 """ |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
475 repo = repo.unfiltered() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
476 |
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
|
477 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
|
478 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
|
479 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
|
480 |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
481 # 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
|
482 # 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
|
483 adding_sidedata = ( |
47263
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47216
diff
changeset
|
484 ( |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47216
diff
changeset
|
485 requirements.REVLOGV2_REQUIREMENT in repo.requirements |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47216
diff
changeset
|
486 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
|
487 ) |
47075
5554aacd783f
sidedata: gate sidedata functionality to revlogv2 in more places
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47073
diff
changeset
|
488 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
|
489 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
|
490 ) |
5554aacd783f
sidedata: gate sidedata functionality to revlogv2 in more places
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47073
diff
changeset
|
491 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
|
492 sidedata_helpers = sidedatamod.get_sidedata_helpers( |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
493 repo, |
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
494 sidedata_categories or set(), |
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
495 pull=True, |
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
496 ) |
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
497 else: |
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
498 sidedata_helpers = None |
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
499 |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
500 def csmap(x): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
501 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
|
502 return len(cl) |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
503 |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
504 def revmap(x): |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
505 return cl.rev(x) |
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
506 |
26880
fa7f8b686633
changegroup: fix the scope of a try finally
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26859
diff
changeset
|
507 try: |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
508 # 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
|
509 # 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
|
510 # 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
|
511 # in this function. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
512 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
|
513 tr.hookargs.setdefault(b'url', url) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
514 repo.hook( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
515 b'prechangegroup', throw=True, **pycompat.strkwargs(tr.hookargs) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
516 ) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
517 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
518 # 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
|
519 # will not see an inconsistent view |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
520 cl = repo.changelog |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
521 cl.delayupdate(tr) |
51392
a0d88b021a98
unbundle: faster computation of changed heads
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50925
diff
changeset
|
522 oldrevcount = len(cl) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
523 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
524 trp = weakref.proxy(tr) |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
525 # pull off the changeset group |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
526 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
|
527 clstart = len(cl) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
528 progress = repo.ui.makeprogress( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
529 _(b'changesets'), unit=_(b'chunks'), total=expectedtotal |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
530 ) |
38346
83534c4ec58b
changegroup: use progress helper in apply() (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
38164
diff
changeset
|
531 self.callback = progress.increment |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
532 |
43489
ea0b44255a31
changegroup: avoid shadowing a set with an int
Augie Fackler <augie@google.com>
parents:
43132
diff
changeset
|
533 efilesset = set() |
46510
fa7ae7aa0efd
changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de>
parents:
46509
diff
changeset
|
534 duprevs = [] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
535 |
46509
7a93b7b3dc2d
revlog: change addgroup callbacks to take revision numbers
Joerg Sonnenberger <joerg@bec.de>
parents:
46373
diff
changeset
|
536 def ondupchangelog(cl, rev): |
7a93b7b3dc2d
revlog: change addgroup callbacks to take revision numbers
Joerg Sonnenberger <joerg@bec.de>
parents:
46373
diff
changeset
|
537 if rev < clstart: |
48473
8843c9a8771b
pytype: stop excluding changegroup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
47340
diff
changeset
|
538 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
|
539 |
46509
7a93b7b3dc2d
revlog: change addgroup callbacks to take revision numbers
Joerg Sonnenberger <joerg@bec.de>
parents:
46373
diff
changeset
|
540 def onchangelog(cl, rev): |
46371
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45790
diff
changeset
|
541 ctx = cl.changelogrevision(rev) |
48473
8843c9a8771b
pytype: stop excluding changegroup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
47340
diff
changeset
|
542 assert efilesset is not None # help pytype |
46371
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45790
diff
changeset
|
543 efilesset.update(ctx.files) |
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45790
diff
changeset
|
544 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
|
545 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
546 self.changelogheader() |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34257
diff
changeset
|
547 deltas = self.deltaiter() |
45788
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
548 if not cl.addgroup( |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
549 deltas, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
550 csmap, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
551 trp, |
46373
711ba0f1057e
revlog: decouple caching from addrevision callback for addgroup
Joerg Sonnenberger <joerg@bec.de>
parents:
46371
diff
changeset
|
552 alwayscache=True, |
45788
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
553 addrevisioncb=onchangelog, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
554 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
|
555 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
|
556 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
|
557 ): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
558 repo.ui.develwarn( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
559 b'applied empty changelog from changegroup', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
560 config=b'warn-empty-changegroup', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
561 ) |
45788
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45729
diff
changeset
|
562 efiles = len(efilesset) |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
563 clend = len(cl) |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
564 changesets = clend - clstart |
38373
ef692614e601
progress: hide update(None) in a new complete() method
Martin von Zweigbergk <martinvonz@google.com>
parents:
38346
diff
changeset
|
565 progress.complete() |
45729
44d84b726c8a
unbundle: free temporary objects after use
Joerg Sonnenberger <joerg@bec.de>
parents:
45552
diff
changeset
|
566 del deltas |
44d84b726c8a
unbundle: free temporary objects after use
Joerg Sonnenberger <joerg@bec.de>
parents:
45552
diff
changeset
|
567 # TODO Python 2.7 removal |
44d84b726c8a
unbundle: free temporary objects after use
Joerg Sonnenberger <joerg@bec.de>
parents:
45552
diff
changeset
|
568 # del efilesset |
44d84b726c8a
unbundle: free temporary objects after use
Joerg Sonnenberger <joerg@bec.de>
parents:
45552
diff
changeset
|
569 efilesset = None |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
570 self.callback = None |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
571 |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
572 # 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
|
573 # 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
|
574 # 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
|
575 # 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
|
576 touched_manifests = {} |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
577 touched_filelogs = {} |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
578 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
579 # pull off the manifest group |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
580 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
|
581 # 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
|
582 # changesets. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
583 progress = repo.ui.makeprogress( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
584 _(b'manifests'), unit=_(b'chunks'), total=changesets |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
585 ) |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
586 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
|
587 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
|
588 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
|
589 |
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
|
590 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
|
591 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
|
592 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
|
593 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
|
594 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
|
595 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
|
596 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
|
597 |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
598 self._unpackmanifests( |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
599 repo, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
600 revmap, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
601 trp, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
602 progress, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
603 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
|
604 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
|
605 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
|
606 ) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
607 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
608 needfiles = {} |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
609 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
|
610 cl = repo.changelog |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
611 ml = repo.manifestlog |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
612 # validate incoming csets have their manifests |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
613 for cset in range(clstart, clend): |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
614 mfnode = cl.changelogrevision(cset).manifest |
51782
e4954fd3d1c3
manifest: use read_delta_new_entries in changegroup validate
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51779
diff
changeset
|
615 mfest = ml[mfnode].read_delta_new_entries() |
45789
09735cde6275
phases: allow registration and boundary advancement with revision sets
Joerg Sonnenberger <joerg@bec.de>
parents:
45788
diff
changeset
|
616 # 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
|
617 for f, n in mfest.items(): |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
618 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
|
619 |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
620 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
|
621 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
|
622 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
|
623 |
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
|
624 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
|
625 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
|
626 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
|
627 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
|
628 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
|
629 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
|
630 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
|
631 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
632 # process the files |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
633 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
|
634 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
|
635 repo, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
636 self, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
637 revmap, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
638 trp, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
639 efiles, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
640 needfiles, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
641 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
|
642 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
|
643 delta_base_reuse_policy=delta_base_reuse_policy, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
644 ) |
42897
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
645 |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
646 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
|
647 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
|
648 cl.rewrite_sidedata( |
2bd4b5218918
revlog: pass a transaction object to `rewrite_sidedata`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47156
diff
changeset
|
649 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
|
650 ) |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
651 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
|
652 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
|
653 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
|
654 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
|
655 |
42897
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
656 # making sure the value exists |
43077
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-changesets', 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-revisions', 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-files', 0) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
660 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
|
661 |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
662 # 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
|
663 # 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
|
664 # 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
|
665 # 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
|
666 # |
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
667 # 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
|
668 # 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
|
669 # 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
|
670 # 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
|
671 if not repo.ui.quiet: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
672 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
|
673 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
|
674 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
|
675 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
676 deltaheads = 0 |
51392
a0d88b021a98
unbundle: faster computation of changed heads
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50925
diff
changeset
|
677 newrevcount = len(cl) |
a0d88b021a98
unbundle: faster computation of changed heads
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50925
diff
changeset
|
678 heads_removed, heads_added = cl.diffheads(oldrevcount, newrevcount) |
a0d88b021a98
unbundle: faster computation of changed heads
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50925
diff
changeset
|
679 deltaheads += len(heads_added) - len(heads_removed) |
a0d88b021a98
unbundle: faster computation of changed heads
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50925
diff
changeset
|
680 for h in heads_added: |
a0d88b021a98
unbundle: faster computation of changed heads
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50925
diff
changeset
|
681 if repo[h].closesbranch(): |
a0d88b021a98
unbundle: faster computation of changed heads
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50925
diff
changeset
|
682 deltaheads -= 1 |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
683 |
42897
d7304434390f
changegroup: move message about added changes to transaction summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42813
diff
changeset
|
684 # 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
|
685 if not repo.ui.quiet: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
686 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
|
687 repo.invalidatevolatilesets() |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
688 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
689 if changesets > 0: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
690 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
|
691 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
|
692 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
|
693 hookargs = dict(tr.hookargs) |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
694 else: |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
695 hookargs = dict(tr.hookargs) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
696 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
|
697 hookargs[b'node_last'] = hex(cl.node(clend - 1)) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
698 repo.hook( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
699 b'pretxnchangegroup', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
700 throw=True, |
51858
607e94e01851
format: add many "missing" comma
Matt Harbison <matt_harbison@yahoo.com>
parents:
51782
diff
changeset
|
701 **pycompat.strkwargs(hookargs), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
702 ) |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
703 |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
704 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
|
705 phaseall = None |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
706 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
|
707 # 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
|
708 # 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
|
709 # exists locally as secret |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
710 # |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
711 # 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
|
712 # the bundle |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
713 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
|
714 targetphase = phaseall = phases.public |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
715 else: |
33456
ae052d04b89e
phases: rework phase movement code in 'cg.apply' to use 'registernew'
Boris Feld <boris.feld@octobus.net>
parents:
33406
diff
changeset
|
716 # 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
|
717 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
718 # Those changesets have been pushed from the |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
719 # 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
|
720 # alongside. Therefor `targetphase` is |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
721 # ignored. |
33456
ae052d04b89e
phases: rework phase movement code in 'cg.apply' to use 'registernew'
Boris Feld <boris.feld@octobus.net>
parents:
33406
diff
changeset
|
722 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
|
723 if added: |
45790
5d65e04b6a80
phases: convert registernew users to use revision sets
Joerg Sonnenberger <joerg@bec.de>
parents:
45789
diff
changeset
|
724 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
|
725 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
|
726 if duprevs: |
fa7ae7aa0efd
changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de>
parents:
46509
diff
changeset
|
727 duprevs.extend(added) |
fa7ae7aa0efd
changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de>
parents:
46509
diff
changeset
|
728 else: |
fa7ae7aa0efd
changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de>
parents:
46509
diff
changeset
|
729 duprevs = added |
fa7ae7aa0efd
changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de>
parents:
46509
diff
changeset
|
730 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
|
731 duprevs = [] |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
732 |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
733 if changesets > 0: |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
734 |
43778
888bd39ed555
lock: pass "success" boolean to _afterlock callbacks
Kyle Lippincott <spectral@google.com>
parents:
43503
diff
changeset
|
735 def runhooks(unused_success): |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
736 # 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
|
737 # 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
|
738 # 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
|
739 if clstart >= len(repo): |
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
740 return |
26695
1121fced5b20
changegroup: migrate addchangegroup() to forward to cg?unpacker.apply()
Augie Fackler <augie@google.com>
parents:
26694
diff
changeset
|
741 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
742 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
|
743 |
45789
09735cde6275
phases: allow registration and boundary advancement with revision sets
Joerg Sonnenberger <joerg@bec.de>
parents:
45788
diff
changeset
|
744 for rev in added: |
32931
b08431e1b062
changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com>
parents:
32930
diff
changeset
|
745 args = hookargs.copy() |
45789
09735cde6275
phases: allow registration and boundary advancement with revision sets
Joerg Sonnenberger <joerg@bec.de>
parents:
45788
diff
changeset
|
746 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
|
747 del args[b'node_last'] |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
748 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
|
749 |
43076
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), |
51392
a0d88b021a98
unbundle: faster computation of changed heads
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50925
diff
changeset
|
754 b', '.join([hex(c[:6]) for c in heads_added]), |
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. |
50925
d718eddf01d9
safehasattr: drop usage in favor of hasattr
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49766
diff
changeset
|
1046 if hasattr(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 manifestnode = c.manifest |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1739 # Record the first changeset introducing this manifest |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1740 # version. |
39238
cc957b9dc335
changegroup: rename mfs to manifests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39237
diff
changeset
|
1741 manifests.setdefault(manifestnode, x) |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1742 # 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
|
1743 # 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
|
1744 # mapping changelog ellipsis parents to manifest ellipsis |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1745 # parents) |
39237
3634ed953a42
changegroup: clean up changelog callback
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39236
diff
changeset
|
1746 clrevtomanifestrev.setdefault( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1747 cl.rev(x), mfl.rev(manifestnode) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1748 ) |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1749 # 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
|
1750 # client requested a shallow clone. |
38904
cdb9bc216771
changegroup: declare shallow flag in constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38903
diff
changeset
|
1751 if self._isshallow: |
39237
3634ed953a42
changegroup: clean up changelog callback
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39236
diff
changeset
|
1752 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
|
1753 else: |
39237
3634ed953a42
changegroup: clean up changelog callback
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39236
diff
changeset
|
1754 changedfiles.update(c.files) |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1755 else: |
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1756 # 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
|
1757 manifests.setdefault(c.manifest, x) |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1758 # 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
|
1759 # this manifest. |
39237
3634ed953a42
changegroup: clean up changelog callback
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39236
diff
changeset
|
1760 changedfiles.update(c.files) |
38890
d706c77449f9
changegroup: move generate() modifications from narrow
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38889
diff
changeset
|
1761 |
19207
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1762 return x |
19204
e9c5b1c246dc
bundle-ng: move bundle generation to changegroup.py
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19202
diff
changeset
|
1763 |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1764 gen = deltagroup( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1765 self._repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1766 cl, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1767 nodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1768 True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1769 lookupcl, |
39017
ef3d3a2f9aa5
changegroup: refactor delta parent code
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39016
diff
changeset
|
1770 self._forcedeltaparentprev, |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1771 ellipses=self._ellipses, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1772 topic=_(b'changesets'), |
39009
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1773 clrevtolocalrev={}, |
9e8eb2b444e5
changegroup: extract cgpacker.group() to standalone function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39008
diff
changeset
|
1774 fullclnodes=self._fullclnodes, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1775 precomputedellipsis=self._precomputedellipsis, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1776 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
|
1777 debug_info=debug_info, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1778 ) |
28227
1c36cc8e7870
changegroup: extract generatemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27953
diff
changeset
|
1779 |
38976
f7228c907ef4
changegroup: factor changelog chunk generation into own function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38975
diff
changeset
|
1780 return state, gen |
28227
1c36cc8e7870
changegroup: extract generatemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27953
diff
changeset
|
1781 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1782 def generatemanifests( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1783 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1784 commonrevs, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1785 clrevorder, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1786 fastpathlinkrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1787 manifests, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1788 fnodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1789 source, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1790 clrevtolocalrev, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
1791 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
|
1792 debug_info=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
1793 ): |
34149
75cc1f1e11f2
changegroup: add source parameter to generatemanifests
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
1794 """Returns an iterator of changegroup chunks containing manifests. |
75cc1f1e11f2
changegroup: add source parameter to generatemanifests
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
1795 |
75cc1f1e11f2
changegroup: add source parameter to generatemanifests
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
1796 `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
|
1797 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
|
1798 |
47086
8bd769b5c941
sidedata: move documentation about sidedata helpers to sidedata module
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47085
diff
changeset
|
1799 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
|
1800 `sidedata_helpers`. |
34149
75cc1f1e11f2
changegroup: add source parameter to generatemanifests
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
1801 """ |
28227
1c36cc8e7870
changegroup: extract generatemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27953
diff
changeset
|
1802 repo = self._repo |
30294
bce79dfcf5e4
manifest: get rid of manifest.readshallowfast
Durham Goode <durham@fb.com>
parents:
30268
diff
changeset
|
1803 mfl = repo.manifestlog |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1804 tmfnodes = {b'': manifests} |
28227
1c36cc8e7870
changegroup: extract generatemanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27953
diff
changeset
|
1805 |
19207
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1806 # 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
|
1807 # revisions. |
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1808 # 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
|
1809 def makelookupmflinknode(tree, nodes): |
28231
3faba927dd93
changegroup: introduce makelookupmflinknode(dir)
Martin von Zweigbergk <martinvonz@google.com>
parents:
28230
diff
changeset
|
1810 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
|
1811 assert not tree |
46787
70f8c64812db
typing: fix directives mangled by black
Matt Harbison <matt_harbison@yahoo.com>
parents:
46686
diff
changeset
|
1812 |
70f8c64812db
typing: fix directives mangled by black
Matt Harbison <matt_harbison@yahoo.com>
parents:
46686
diff
changeset
|
1813 # pytype: disable=unsupported-operands |
70f8c64812db
typing: fix directives mangled by black
Matt Harbison <matt_harbison@yahoo.com>
parents:
46686
diff
changeset
|
1814 return manifests.__getitem__ |
70f8c64812db
typing: fix directives mangled by black
Matt Harbison <matt_harbison@yahoo.com>
parents:
46686
diff
changeset
|
1815 # pytype: enable=unsupported-operands |
28231
3faba927dd93
changegroup: introduce makelookupmflinknode(dir)
Martin von Zweigbergk <martinvonz@google.com>
parents:
28230
diff
changeset
|
1816 |
27239
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1817 def lookupmflinknode(x): |
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1818 """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
|
1819 |
27239
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1820 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
|
1821 |
27239
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1822 SIDE EFFECT: |
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1823 |
27432
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
1824 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
|
1825 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
|
1826 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
|
1827 to send |
27219
beb60a898dd0
changegroup: document manifest linkrev callback some more
Augie Fackler <augie@google.com>
parents:
27218
diff
changeset
|
1828 |
27432
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
1829 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
|
1830 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
|
1831 treemanifests to send. |
27239
65c47779bcb5
changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com>
parents:
27238
diff
changeset
|
1832 """ |
35012
d80380ba8e7d
changegroup: use any node, not min(), in treemanifest's generatemanifests
Kyle Lippincott <spectral@google.com>
parents:
34734
diff
changeset
|
1833 clnode = nodes[x] |
51779
acc2d0f08fc9
manifest: use the `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51699
diff
changeset
|
1834 mctx = mfl.get(tree, x) |
acc2d0f08fc9
manifest: use the `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51699
diff
changeset
|
1835 mdata = mctx.read_delta_parents(shallow=True, exact=False) |
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) |
51392
a0d88b021a98
unbundle: faster computation of changed heads
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50925
diff
changeset
|
1997 |
19207
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
1998 # 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
|
1999 # 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
|
2000 def lookupfilelog(x): |
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
2001 return linkrevnodes[x] |
a67e1380dfbd
bundle-ng: simplify lookup and state handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19206
diff
changeset
|
2002 |
39007
39f5c7afdc25
changegroup: inline _prune() into call sites
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39006
diff
changeset
|
2003 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
|
2004 # 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
|
2005 # 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
|
2006 # 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
|
2007 # here. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2008 filenodes = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2009 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
|
2010 ] |
39007
39f5c7afdc25
changegroup: inline _prune() into call sites
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39006
diff
changeset
|
2011 |
39020
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2012 if not filenodes: |
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2013 continue |
38982
037debbf869c
changegroup: pass sorted revisions into group() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38981
diff
changeset
|
2014 |
39020
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2015 progress.update(i + 1, item=fname) |
39008
8c84f1ef949e
changegroup: pass all state into group()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39007
diff
changeset
|
2016 |
39020
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2017 deltas = deltagroup( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2018 self._repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2019 filerevlog, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2020 filenodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2021 False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2022 lookupfilelog, |
39861
db5501d93bcf
changegroup: remove reordering control (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39733
diff
changeset
|
2023 self._forcedeltaparentprev, |
39020
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2024 ellipses=self._ellipses, |
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2025 clrevtolocalrev=clrevtolocalrev, |
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2026 fullclnodes=self._fullclnodes, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2027 precomputedellipsis=self._precomputedellipsis, |
46715
45f0d5297698
changegroupv4: add sidedata helpers
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46713
diff
changeset
|
2028 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
|
2029 debug_info=debug_info, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2030 ) |
39020
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2031 |
0b5f534df82a
changegroup: invert conditional and dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39019
diff
changeset
|
2032 yield fname, deltas |
39010
fcdab6629dde
changegroup: emit delta group close chunk outside of deltagroup()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39009
diff
changeset
|
2033 |
38410
1c5c4a5dd86d
changegroup: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents:
38382
diff
changeset
|
2034 progress.complete() |
19200
4cfdec944edf
bundle-ng: move group into the bundler
Sune Foldager <cryo@cyanite.org>
parents:
19199
diff
changeset
|
2035 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2036 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2037 def _makecg1packer( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2038 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2039 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2040 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2041 bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2042 ellipses=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2043 shallow=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2044 ellipsisroots=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2045 fullnodes=None, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2046 remote_sidedata=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2047 ): |
38897
bd64b8b8f0dd
changegroup: pass function to build delta header into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38896
diff
changeset
|
2048 builddeltaheader = lambda d: _CHANGEGROUPV1_DELTA_HEADER.pack( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2049 d.node, d.p1node, d.p2node, d.linknode |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2050 ) |
27432
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
27241
diff
changeset
|
2051 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2052 return cgpacker( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2053 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2054 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2055 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2056 b'01', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2057 builddeltaheader=builddeltaheader, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2058 manifestsend=b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2059 forcedeltaparentprev=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2060 bundlecaps=bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2061 ellipses=ellipses, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2062 shallow=shallow, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2063 ellipsisroots=ellipsisroots, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2064 fullnodes=fullnodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2065 ) |
38894
19344024a8e1
changegroup: define functions for creating changegroup packers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38893
diff
changeset
|
2066 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2067 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2068 def _makecg2packer( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2069 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2070 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2071 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2072 bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2073 ellipses=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2074 shallow=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2075 ellipsisroots=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2076 fullnodes=None, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2077 remote_sidedata=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2078 ): |
38897
bd64b8b8f0dd
changegroup: pass function to build delta header into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38896
diff
changeset
|
2079 builddeltaheader = lambda d: _CHANGEGROUPV2_DELTA_HEADER.pack( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2080 d.node, d.p1node, d.p2node, d.basenode, d.linknode |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2081 ) |
38897
bd64b8b8f0dd
changegroup: pass function to build delta header into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38896
diff
changeset
|
2082 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2083 return cgpacker( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2084 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2085 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2086 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2087 b'02', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2088 builddeltaheader=builddeltaheader, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2089 manifestsend=b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2090 bundlecaps=bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2091 ellipses=ellipses, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2092 shallow=shallow, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2093 ellipsisroots=ellipsisroots, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2094 fullnodes=fullnodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2095 ) |
38894
19344024a8e1
changegroup: define functions for creating changegroup packers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38893
diff
changeset
|
2096 |
38897
bd64b8b8f0dd
changegroup: pass function to build delta header into constructor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38896
diff
changeset
|
2097 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2098 def _makecg3packer( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2099 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2100 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2101 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2102 bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2103 ellipses=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2104 shallow=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2105 ellipsisroots=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2106 fullnodes=None, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2107 remote_sidedata=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2108 ): |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2109 builddeltaheader = lambda d: _CHANGEGROUPV3_DELTA_HEADER.pack( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2110 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
|
2111 ) |
38894
19344024a8e1
changegroup: define functions for creating changegroup packers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38893
diff
changeset
|
2112 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2113 return cgpacker( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2114 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2115 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2116 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2117 b'03', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2118 builddeltaheader=builddeltaheader, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2119 manifestsend=closechunk(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2120 bundlecaps=bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2121 ellipses=ellipses, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2122 shallow=shallow, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2123 ellipsisroots=ellipsisroots, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2124 fullnodes=fullnodes, |
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 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2127 |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2128 def _makecg4packer( |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2129 repo, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2130 oldmatcher, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2131 matcher, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2132 bundlecaps, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2133 ellipses=False, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2134 shallow=False, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2135 ellipsisroots=None, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2136 fullnodes=None, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2137 remote_sidedata=None, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2138 ): |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2139 # 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
|
2140 # "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
|
2141 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
|
2142 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
|
2143 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
|
2144 d.node, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2145 d.p1node, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2146 d.p2node, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2147 d.basenode, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2148 d.linknode, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2149 d.flags, |
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47076
diff
changeset
|
2150 ) |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2151 |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2152 return cgpacker( |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2153 repo, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2154 oldmatcher, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2155 matcher, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2156 b'04', |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2157 builddeltaheader=builddeltaheader, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2158 manifestsend=closechunk(), |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2159 bundlecaps=bundlecaps, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2160 ellipses=ellipses, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2161 shallow=shallow, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2162 ellipsisroots=ellipsisroots, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2163 fullnodes=fullnodes, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2164 remote_sidedata=remote_sidedata, |
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 |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2167 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2168 _packermap = { |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2169 b'01': (_makecg1packer, cg1unpacker), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2170 # 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
|
2171 b'02': (_makecg2packer, cg2unpacker), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2172 # 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
|
2173 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
|
2174 # 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
|
2175 b'04': (_makecg4packer, cg4unpacker), |
26709
42733e956887
changegroup: reformat packermap and add comment
Augie Fackler <augie@google.com>
parents:
26708
diff
changeset
|
2176 } |
23168
a92ba36a1a9d
changegroup: add a "packermap" dictionary to track different packer versions
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22971
diff
changeset
|
2177 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2178 |
30627
7ace5304fec5
changegroup: pass 'repo' to allsupportedversions
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30626
diff
changeset
|
2179 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
|
2180 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
|
2181 needv03 = False |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2182 if ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2183 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
|
2184 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
|
2185 or scmutil.istreemanifest(repo) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2186 ): |
43059
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2187 # 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
|
2188 # |
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2189 # 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
|
2190 # 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
|
2191 # 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
|
2192 # |
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2193 # (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
|
2194 needv03 = True |
4bbc9569e722
changegroup: use positive logic for treemanifest changegroup3 logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42897
diff
changeset
|
2195 if not needv03: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2196 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
|
2197 want_v4 = ( |
08e26ef4ad35
changegroup: don't limit cgv4 to revlogv2 repos
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47075
diff
changeset
|
2198 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
|
2199 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
|
2200 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
|
2201 ) |
08e26ef4ad35
changegroup: don't limit cgv4 to revlogv2 repos
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47075
diff
changeset
|
2202 if not want_v4: |
08e26ef4ad35
changegroup: don't limit cgv4 to revlogv2 repos
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47075
diff
changeset
|
2203 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
|
2204 return versions |
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2205 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2206 |
27953
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2207 # 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
|
2208 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
|
2209 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
|
2210 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2211 |
27953
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2212 # 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
|
2213 def supportedoutgoingversions(repo): |
30627
7ace5304fec5
changegroup: pass 'repo' to allsupportedversions
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30626
diff
changeset
|
2214 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
|
2215 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
|
2216 # 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
|
2217 # 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
|
2218 # 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
|
2219 # 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
|
2220 # support versions 01 and 02. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2221 versions.discard(b'01') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2222 versions.discard(b'02') |
45372
77b8588dd84e
requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45371
diff
changeset
|
2223 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
|
2224 # 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
|
2225 # 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
|
2226 versions.discard(b'01') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2227 versions.discard(b'02') |
37132
a54113fcc8c9
lfs: move the 'supportedoutgoingversions' handling to changegroup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
37084
diff
changeset
|
2228 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
|
2229 # 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
|
2230 # 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
|
2231 versions.discard(b'01') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2232 versions.discard(b'02') |
37132
a54113fcc8c9
lfs: move the 'supportedoutgoingversions' handling to changegroup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
37084
diff
changeset
|
2233 |
27752
29cfc474c5fd
changegroup3: introduce experimental.changegroup3 boolean config
Martin von Zweigbergk <martinvonz@google.com>
parents:
27751
diff
changeset
|
2234 return versions |
27751
a40e2f7fe49d
changegroup: hide packermap behind methods
Martin von Zweigbergk <martinvonz@google.com>
parents:
27739
diff
changeset
|
2235 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2236 |
34144
91f0677dc920
repair: preserve phase also when not using generaldelta (issue5678)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33461
diff
changeset
|
2237 def localversion(repo): |
91f0677dc920
repair: preserve phase also when not using generaldelta (issue5678)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33461
diff
changeset
|
2238 # 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
|
2239 # 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
|
2240 return max(supportedoutgoingversions(repo)) |
91f0677dc920
repair: preserve phase also when not using generaldelta (issue5678)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33461
diff
changeset
|
2241 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2242 |
27929
3b2ac2115464
changegroup: introduce safeversion()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27928
diff
changeset
|
2243 def safeversion(repo): |
3b2ac2115464
changegroup: introduce safeversion()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27928
diff
changeset
|
2244 # 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
|
2245 # 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
|
2246 # 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
|
2247 versions = supportedoutgoingversions(repo) |
46627
f4c325bf80fc
requirements: also add a generaldelta constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46624
diff
changeset
|
2248 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
|
2249 versions.discard(b'01') |
27929
3b2ac2115464
changegroup: introduce safeversion()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27928
diff
changeset
|
2250 assert versions |
3b2ac2115464
changegroup: introduce safeversion()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27928
diff
changeset
|
2251 return min(versions) |
3b2ac2115464
changegroup: introduce safeversion()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27928
diff
changeset
|
2252 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2253 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2254 def getbundler( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2255 version, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2256 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2257 bundlecaps=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2258 oldmatcher=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2259 matcher=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2260 ellipses=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2261 shallow=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2262 ellipsisroots=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2263 fullnodes=None, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2264 remote_sidedata=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2265 ): |
27953
88609cfa3745
changegroup: fix pulling to treemanifest repo from flat repo (issue5066)
Martin von Zweigbergk <martinvonz@google.com>
parents:
27946
diff
changeset
|
2266 assert version in supportedoutgoingversions(repo) |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
2267 |
40344
2c5835b4246b
narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com>
parents:
40082
diff
changeset
|
2268 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
|
2269 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
|
2270 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
|
2271 oldmatcher = matchmod.never() |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
2272 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2273 if version == b'01' and not matcher.always(): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2274 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
|
2275 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
|
2276 ) |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
2277 |
38908
1469584ad5fe
changegroup: specify ellipses mode explicitly
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38907
diff
changeset
|
2278 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
|
2279 raise error.Abort( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2280 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2281 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
|
2282 b'but negotiated version %s' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2283 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2284 % version |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2285 ) |
38908
1469584ad5fe
changegroup: specify ellipses mode explicitly
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38907
diff
changeset
|
2286 |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
2287 # 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
|
2288 # 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
|
2289 matcher = repo.narrowmatch(matcher) |
38794
1d01cf0416a5
changegroup: move file matcher from narrow extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38783
diff
changeset
|
2290 |
38894
19344024a8e1
changegroup: define functions for creating changegroup packers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38893
diff
changeset
|
2291 fn = _packermap[version][0] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2292 return fn( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2293 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2294 oldmatcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2295 matcher, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2296 bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2297 ellipses=ellipses, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2298 shallow=shallow, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2299 ellipsisroots=ellipsisroots, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2300 fullnodes=fullnodes, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2301 remote_sidedata=remote_sidedata, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2302 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2303 |
27751
a40e2f7fe49d
changegroup: hide packermap behind methods
Martin von Zweigbergk <martinvonz@google.com>
parents:
27739
diff
changeset
|
2304 |
29593
953839de96ab
bundle2: store changeset count when creating file bundles
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29371
diff
changeset
|
2305 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
|
2306 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
|
2307 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2308 |
20926
7c1ed40e3325
localrepo: move the changegroupinfo method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20925
diff
changeset
|
2309 def _changegroupinfo(repo, nodes, source): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2310 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
|
2311 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
|
2312 if repo.ui.debugflag: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2313 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
|
2314 for node in nodes: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2315 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
|
2316 |
34096
f85dfde1731a
changegroup: replace getsubset with makechangegroup
Durham Goode <durham@fb.com>
parents:
34091
diff
changeset
|
2317 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2318 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
|
2319 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
|
2320 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
|
2321 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
|
2322 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
|
2323 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
|
2324 bundlecaps=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2325 ): |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2326 cgstream = makestream( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2327 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2328 outgoing, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2329 version, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2330 source, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2331 fastpath=fastpath, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2332 bundlecaps=bundlecaps, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2333 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2334 return getunbundler( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2335 version, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2336 util.chunkbuffer(cgstream), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2337 None, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2338 {b'clcount': len(outgoing.missing)}, |
43076
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 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2342 def makestream( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2343 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2344 outgoing, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2345 version, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2346 source, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2347 fastpath=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2348 bundlecaps=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2349 matcher=None, |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2350 remote_sidedata=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2351 ): |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2352 bundler = getbundler( |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2353 version, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2354 repo, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2355 bundlecaps=bundlecaps, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2356 matcher=matcher, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2357 remote_sidedata=remote_sidedata, |
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46627
diff
changeset
|
2358 ) |
34103
92f1e2be8ab6
changegroup: rename getsubsetraw to makestream
Durham Goode <durham@fb.com>
parents:
34101
diff
changeset
|
2359 |
20925
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2360 repo = repo.unfiltered() |
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2361 commonrevs = outgoing.common |
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2362 csets = outgoing.missing |
45144
c93dd9d9f1e6
discovery: change users of `outgoing.missingheads` to `outgoing.ancestorsof`
Manuel Jacob <me@manueljacob.de>
parents:
44452
diff
changeset
|
2363 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
|
2364 # 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
|
2365 # 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
|
2366 # 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
|
2367 heads.sort() |
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2368 fastpathlinkrev = fastpath or ( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2369 repo.filtername is None and heads == sorted(repo.heads()) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2370 ) |
20925
5174c48ed8d8
localrepo: move the _changegroupsubset method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20675
diff
changeset
|
2371 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2372 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
|
2373 _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
|
2374 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
|
2375 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
|
2376 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
|
2377 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
|
2378 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
|
2379 ) |
23177
706547a14b8b
changegroup: introduce "raw" versions of some commands
Sune Foldager <cryo@cyanite.org>
parents:
23168
diff
changeset
|
2380 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2381 |
46718
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2382 def _addchangegroupfiles( |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2383 repo, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2384 source, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2385 revmap, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2386 trp, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2387 expectedfiles, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2388 needfiles, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2389 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
|
2390 debug_info=None, |
49766
152d9c011bcd
changegroup: add `delta_base_reuse_policy` argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49610
diff
changeset
|
2391 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
|
2392 ): |
20932
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2393 revisions = 0 |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2394 files = 0 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2395 progress = repo.ui.makeprogress( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2396 _(b'files'), unit=_(b'files'), total=expectedfiles |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2397 ) |
29724
4e7be6e33269
changegroup: use `iter(callable, sentinel)` instead of while True
Augie Fackler <augie@google.com>
parents:
29690
diff
changeset
|
2398 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
|
2399 files += 1 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2400 f = chunkdata[b"filename"] |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2401 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
|
2402 progress.increment() |
27754
a09f143daaf4
changegroup3: move treemanifest support into _unpackmanifests()
Martin von Zweigbergk <martinvonz@google.com>
parents:
27753
diff
changeset
|
2403 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
|
2404 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
|
2405 try: |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34257
diff
changeset
|
2406 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
|
2407 added = fl.addgroup( |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2408 deltas, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2409 revmap, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2410 trp, |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2411 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
|
2412 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
|
2413 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
|
2414 ) |
ba8e508a8e69
sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46715
diff
changeset
|
2415 if not added: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2416 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
|
2417 except error.CensoredBaseError as e: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2418 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
|
2419 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
|
2420 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
|
2421 needs = needfiles[f] |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
2422 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
|
2423 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
|
2424 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
|
2425 needs.remove(n) |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2426 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2427 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
|
2428 if not needs: |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2429 del needfiles[f] |
38382
daa08d45740f
changegroup: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents:
38373
diff
changeset
|
2430 progress.complete() |
20932
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2431 |
48913
f254fc73d956
global: bulk replace simple pycompat.iteritems(x) with x.items()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48875
diff
changeset
|
2432 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
|
2433 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
|
2434 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
|
2435 try: |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2436 fl.rev(n) |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2437 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
|
2438 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2439 _(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
|
2440 % (f, hex(n)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43059
diff
changeset
|
2441 ) |
20932
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2442 |
0ac83e4e4f7c
localrepo: move the addchangegroupfiles method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20931
diff
changeset
|
2443 return revisions, files |