Mercurial > hg-stable
annotate mercurial/filelog.py @ 45811:a5206e71c536
revlog: extend addgroup() with callback for duplicates
The addgroup() interface currently doesn't allow the caller to keep
track of duplicated nodes except by looking at the returned node list.
Add an optional second callback for this purpose and change the return
type to a boolean. This allows follow-up changes to use more efficient
storage for the node list in places that are memory-sensitive.
Differential Revision: https://phab.mercurial-scm.org/D9231
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Sun, 18 Oct 2020 22:18:02 +0200 |
parents | 687b865b95ad |
children | b994db7c4d1e f7b61ad3c64a |
rev | line source |
---|---|
1089 | 1 # filelog.py - file history class for mercurial |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
2 # |
4635
63b9d2deed48
Updated copyright notices and add "and others" to "hg version"
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4258
diff
changeset
|
3 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
4 # |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
7634
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. |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
7 |
25948
34bd1a5eef5b
filelog: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24255
diff
changeset
|
8 from __future__ import absolute_import |
34bd1a5eef5b
filelog: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24255
diff
changeset
|
9 |
40389
1b183edbb68e
repository: teach addgroup() to receive data with missing parents
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40387
diff
changeset
|
10 from .i18n import _ |
40387
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
11 from .node import ( |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
12 nullid, |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
13 nullrev, |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
14 ) |
25948
34bd1a5eef5b
filelog: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24255
diff
changeset
|
15 from . import ( |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
16 error, |
42823
268662aac075
interfaces: create a new folder for interfaces and move repository.py in it
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
42737
diff
changeset
|
17 revlog, |
268662aac075
interfaces: create a new folder for interfaces and move repository.py in it
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
42737
diff
changeset
|
18 ) |
268662aac075
interfaces: create a new folder for interfaces and move repository.py in it
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
42737
diff
changeset
|
19 from .interfaces import ( |
37441
a3202fa83aff
filelog: declare that filelog implements a storage interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35567
diff
changeset
|
20 repository, |
42824
2c4f656c8e9f
interfaceutil: move to interfaces/
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
42823
diff
changeset
|
21 util as interfaceutil, |
25948
34bd1a5eef5b
filelog: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24255
diff
changeset
|
22 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
23 from .utils import storageutil |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
24 |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
25 |
37810
856f381ad74b
interfaceutil: module to stub out zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37497
diff
changeset
|
26 @interfaceutil.implementer(repository.ifilestorage) |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
27 class filelog(object): |
4258
b11a2fb59cf5
revlog: simplify revlog version handling
Matt Mackall <mpm@selenic.com>
parents:
4257
diff
changeset
|
28 def __init__(self, opener, path): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
29 self._revlog = revlog.revlog( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
30 opener, b'/'.join((b'data', path + b'.i')), censorable=True |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
31 ) |
39799
76f92d208f7a
filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39798
diff
changeset
|
32 # Full name of the user visible file, relative to the repository root. |
76f92d208f7a
filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39798
diff
changeset
|
33 # Used by LFS. |
39861
96838b620b9c
filelog: store filename directly on revlog instance
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39860
diff
changeset
|
34 self._revlog.filename = path |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
35 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
36 def __len__(self): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
37 return len(self._revlog) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
38 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
39 def __iter__(self): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
40 return self._revlog.__iter__() |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
41 |
40387
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
42 def hasnode(self, node): |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
43 if node in (nullid, nullrev): |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
44 return False |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
45 |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
46 try: |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
47 self._revlog.rev(node) |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
48 return True |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
49 except (TypeError, ValueError, IndexError, error.LookupError): |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
50 return False |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40057
diff
changeset
|
51 |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
52 def revs(self, start=0, stop=None): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
53 return self._revlog.revs(start=start, stop=stop) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
54 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
55 def parents(self, node): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
56 return self._revlog.parents(node) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
57 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
58 def parentrevs(self, rev): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
59 return self._revlog.parentrevs(rev) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
60 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
61 def rev(self, node): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
62 return self._revlog.rev(node) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
63 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
64 def node(self, rev): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
65 return self._revlog.node(rev) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
66 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
67 def lookup(self, node): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
68 return storageutil.fileidlookup( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
69 self._revlog, node, self._revlog.indexfile |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
70 ) |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
71 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
72 def linkrev(self, rev): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
73 return self._revlog.linkrev(rev) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
74 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
75 def commonancestorsheads(self, node1, node2): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
76 return self._revlog.commonancestorsheads(node1, node2) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
77 |
39799
76f92d208f7a
filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39798
diff
changeset
|
78 # Used by dagop.blockdescendants(). |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
79 def descendants(self, revs): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
80 return self._revlog.descendants(revs) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
81 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
82 def heads(self, start=None, stop=None): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
83 return self._revlog.heads(start, stop) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
84 |
39799
76f92d208f7a
filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39798
diff
changeset
|
85 # Used by hgweb, children extension. |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
86 def children(self, node): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
87 return self._revlog.children(node) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
88 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
89 def iscensored(self, rev): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
90 return self._revlog.iscensored(rev) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
91 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
92 def revision(self, node, _df=None, raw=False): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
93 return self._revlog.revision(node, _df=_df, raw=raw) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
94 |
42737
bf1e8d2ab900
rawdata: forward the method call on `filelog` object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
40496
diff
changeset
|
95 def rawdata(self, node, _df=None): |
bf1e8d2ab900
rawdata: forward the method call on `filelog` object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
40496
diff
changeset
|
96 return self._revlog.rawdata(node, _df=_df) |
bf1e8d2ab900
rawdata: forward the method call on `filelog` object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
40496
diff
changeset
|
97 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
98 def emitrevisions( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
99 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
100 nodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
101 nodesorder=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
102 revisiondata=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
103 assumehaveparentrevisions=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
104 deltamode=repository.CG_DELTAMODE_STD, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
105 ): |
39867
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
106 return self._revlog.emitrevisions( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
107 nodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
108 nodesorder=nodesorder, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
109 revisiondata=revisiondata, |
39867
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
110 assumehaveparentrevisions=assumehaveparentrevisions, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
111 deltamode=deltamode, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
112 ) |
39867
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
113 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
114 def addrevision( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
115 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
116 revisiondata, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
117 transaction, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
118 linkrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
119 p1, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
120 p2, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
121 node=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
122 flags=revlog.REVIDX_DEFAULT_FLAGS, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
123 cachedelta=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
124 ): |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
125 return self._revlog.addrevision( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
126 revisiondata, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
127 transaction, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
128 linkrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
129 p1, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
130 p2, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
131 node=node, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
132 flags=flags, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
133 cachedelta=cachedelta, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
134 ) |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
135 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
136 def addgroup( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
137 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
138 deltas, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
139 linkmapper, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
140 transaction, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
141 addrevisioncb=None, |
45811
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
43077
diff
changeset
|
142 duplicaterevisioncb=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
143 maybemissingparents=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
144 ): |
40389
1b183edbb68e
repository: teach addgroup() to receive data with missing parents
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40387
diff
changeset
|
145 if maybemissingparents: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
146 raise error.Abort( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
147 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
148 b'revlog storage does not support missing ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
149 b'parents write mode' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
150 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
151 ) |
40389
1b183edbb68e
repository: teach addgroup() to receive data with missing parents
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40387
diff
changeset
|
152 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
153 return self._revlog.addgroup( |
45811
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
43077
diff
changeset
|
154 deltas, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
43077
diff
changeset
|
155 linkmapper, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
43077
diff
changeset
|
156 transaction, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
43077
diff
changeset
|
157 addrevisioncb=addrevisioncb, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
43077
diff
changeset
|
158 duplicaterevisioncb=duplicaterevisioncb, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
159 ) |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
160 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
161 def getstrippoint(self, minlink): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
162 return self._revlog.getstrippoint(minlink) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
163 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
164 def strip(self, minlink, transaction): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
165 return self._revlog.strip(minlink, transaction) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
166 |
39794
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39781
diff
changeset
|
167 def censorrevision(self, tr, node, tombstone=b''): |
40057
324b4b10351e
revlog: rewrite censoring logic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40008
diff
changeset
|
168 return self._revlog.censorrevision(tr, node, tombstone=tombstone) |
39794
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39781
diff
changeset
|
169 |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
170 def files(self): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
171 return self._revlog.files() |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
172 |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
173 def read(self, node): |
39885
1b65fb4d43d6
storageutil: new function for extracting metadata-less content from text
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39883
diff
changeset
|
174 return storageutil.filtermetadata(self.revision(node)) |
360 | 175 |
176 def add(self, text, meta, transaction, link, p1=None, p2=None): | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
177 if meta or text.startswith(b'\1\n'): |
39883
3e896b51aa5d
storageutil: move metadata parsing and packing from revlog (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39881
diff
changeset
|
178 text = storageutil.packmeta(meta, text) |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
179 return self.addrevision(text, transaction, link, p1, p2) |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
180 |
1116 | 181 def renamed(self, node): |
40006
1d97a332c6d9
storageutil: extract copy metadata retrieval out of filelog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
182 return storageutil.filerevisioncopied(self, node) |
1116 | 183 |
2898
db397c38005d
merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents:
2895
diff
changeset
|
184 def size(self, rev): |
db397c38005d
merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents:
2895
diff
changeset
|
185 """return the size of a given revision""" |
db397c38005d
merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents:
2895
diff
changeset
|
186 |
db397c38005d
merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents:
2895
diff
changeset
|
187 # for revisions with renames, we have to go the slow way |
db397c38005d
merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents:
2895
diff
changeset
|
188 node = self.node(rev) |
db397c38005d
merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents:
2895
diff
changeset
|
189 if self.renamed(node): |
db397c38005d
merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents:
2895
diff
changeset
|
190 return len(self.read(node)) |
24118
76f6ae06ddf5
revlog: add "iscensored()" to revlog public API
Mike Edgar <adgar@google.com>
parents:
24117
diff
changeset
|
191 if self.iscensored(rev): |
22597
58ec36686f0e
filelog: censored files compare against empty data, have 0 size
Mike Edgar <adgar@google.com>
parents:
22596
diff
changeset
|
192 return 0 |
2898
db397c38005d
merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents:
2895
diff
changeset
|
193 |
11540
2370e270a29a
filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11539
diff
changeset
|
194 # XXX if self.read(node).startswith("\1\n"), this returns (size+4) |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
195 return self._revlog.size(rev) |
2898
db397c38005d
merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents:
2895
diff
changeset
|
196 |
2887
05257fd28591
filelog: add hash-based comparisons
Matt Mackall <mpm@selenic.com>
parents:
2859
diff
changeset
|
197 def cmp(self, node, text): |
11539
a463e3c50212
cmp: document the fact that we return True if content is different
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10706
diff
changeset
|
198 """compare text with a given file revision |
a463e3c50212
cmp: document the fact that we return True if content is different
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10706
diff
changeset
|
199 |
a463e3c50212
cmp: document the fact that we return True if content is different
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10706
diff
changeset
|
200 returns True if text is different than what is stored. |
a463e3c50212
cmp: document the fact that we return True if content is different
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10706
diff
changeset
|
201 """ |
40008
1470183068b8
storageutil: invert logic of file data comparison
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40007
diff
changeset
|
202 return not storageutil.filedataequivalent(self, node, text) |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
203 |
39847
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
204 def verifyintegrity(self, state): |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
205 return self._revlog.verifyintegrity(state) |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
206 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
207 def storageinfo( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
208 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
209 exclusivefiles=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
210 sharedfiles=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
211 revisionscount=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
212 trackedsize=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
213 storedsize=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
214 ): |
39874
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
215 return self._revlog.storageinfo( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
216 exclusivefiles=exclusivefiles, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
217 sharedfiles=sharedfiles, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
218 revisionscount=revisionscount, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
219 trackedsize=trackedsize, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
220 storedsize=storedsize, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
221 ) |
39874
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
222 |
39799
76f92d208f7a
filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39798
diff
changeset
|
223 # TODO these aren't part of the interface and aren't internal methods. |
76f92d208f7a
filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39798
diff
changeset
|
224 # Callers should be fixed to not use them. |
76f92d208f7a
filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39798
diff
changeset
|
225 |
76f92d208f7a
filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39798
diff
changeset
|
226 # Used by bundlefilelog, unionfilelog. |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
227 @property |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
228 def indexfile(self): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
229 return self._revlog.indexfile |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
230 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
231 @indexfile.setter |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
232 def indexfile(self, value): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
233 self._revlog.indexfile = value |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
234 |
39799
76f92d208f7a
filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39798
diff
changeset
|
235 # Used by repo upgrade. |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
236 def clone(self, tr, destrevlog, **kwargs): |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
237 if not isinstance(destrevlog, filelog): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
238 raise error.ProgrammingError(b'expected filelog to clone()') |
37497
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
239 |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
240 return self._revlog.clone(tr, destrevlog._revlog, **kwargs) |
1541e1a8e87d
filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37443
diff
changeset
|
241 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42824
diff
changeset
|
242 |
39781
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
243 class narrowfilelog(filelog): |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
244 """Filelog variation to be used with narrow stores.""" |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
245 |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
246 def __init__(self, opener, path, narrowmatch): |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
247 super(narrowfilelog, self).__init__(opener, path) |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
248 self._narrowmatch = narrowmatch |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
249 |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
250 def renamed(self, node): |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
251 res = super(narrowfilelog, self).renamed(node) |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
252 |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
253 # Renames that come from outside the narrowspec are problematic |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
254 # because we may lack the base text for the rename. This can result |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
255 # in code attempting to walk the ancestry or compute a diff |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
256 # encountering a missing revision. We address this by silently |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
257 # removing rename metadata if the source file is outside the |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
258 # narrow spec. |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
259 # |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
260 # A better solution would be to see if the base revision is available, |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
261 # rather than assuming it isn't. |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
262 # |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
263 # An even better solution would be to teach all consumers of rename |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
264 # metadata that the base revision may not be available. |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
265 # |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
266 # TODO consider better ways of doing this. |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
267 if res and not self._narrowmatch(res[0]): |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
268 return None |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
269 |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
270 return res |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
271 |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
272 def size(self, rev): |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
273 # Because we have a custom renamed() that may lie, we need to call |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
274 # the base renamed() to report accurate results. |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
275 node = self.node(rev) |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
276 if super(narrowfilelog, self).renamed(node): |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
277 return len(self.read(node)) |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
278 else: |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
279 return super(narrowfilelog, self).size(rev) |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
280 |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
281 def cmp(self, node, text): |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
282 different = super(narrowfilelog, self).cmp(node, text) |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
283 |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
284 # Because renamed() may lie, we may get false positives for |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
285 # different content. Check for this by comparing against the original |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
286 # renamed() implementation. |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
287 if different: |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
288 if super(narrowfilelog, self).renamed(node): |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
289 t2 = self.read(node) |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
290 return t2 != text |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
291 |
3e801ffd7269
filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39310
diff
changeset
|
292 return different |