##// END OF EJS Templates
revlog: recommit 49fd21f32695 with a fix for issue6528...
Joerg Sonnenberger -
r49876:5b65721a default
parent child Browse files
Show More
@@ -992,6 +992,16 b' class basefilectx:'
992 992 if self._repo._encodefilterpats:
993 993 # can't rely on size() because wdir content may be decoded
994 994 return self._filelog.cmp(self._filenode, fctx.data())
995 # filelog.size() has two special cases:
996 # - censored metadata
997 # - copy/rename tracking
998 # The first is detected by peaking into the delta,
999 # the second is detected by abusing parent order
1000 # in the revlog index as flag bit. This leaves files using
1001 # the dummy encoding and non-standard meta attributes.
1002 # The following check is a special case for the empty
1003 # metadata block used if the raw file content starts with '\1\n'.
1004 # Cases of arbitrary metadata flags are currently mishandled.
995 1005 if self.size() - 4 == fctx.size():
996 1006 # size() can match:
997 1007 # if file data starts with '\1\n', empty metadata block is
@@ -32,6 +32,7 b' class filelog:'
32 32 target=(revlog_constants.KIND_FILELOG, path),
33 33 radix=b'/'.join((b'data', path)),
34 34 censorable=True,
35 canonical_parent_order=False, # see comment in revlog.py
35 36 )
36 37 # Full name of the user visible file, relative to the repository root.
37 38 # Used by LFS.
@@ -207,6 +208,7 b' class filelog:'
207 208 return 0
208 209
209 210 # XXX if self.read(node).startswith("\1\n"), this returns (size+4)
211 # XXX See also basefilectx.cmp.
210 212 return self._revlog.size(rev)
211 213
212 214 def cmp(self, node, text):
@@ -298,6 +298,7 b' class revlog:'
298 298 persistentnodemap=False,
299 299 concurrencychecker=None,
300 300 trypending=False,
301 canonical_parent_order=True,
301 302 ):
302 303 """
303 304 create a revlog object
@@ -373,6 +374,13 b' class revlog:'
373 374
374 375 self._concurrencychecker = concurrencychecker
375 376
377 # parent order is supposed to be semantically irrelevant, so we
378 # normally resort parents to ensure that the first parent is non-null,
379 # if there is a non-null parent at all.
380 # filelog abuses the parent order as flag to mark some instances of
381 # meta-encoded files, so allow it to disable this behavior.
382 self.canonical_parent_order = canonical_parent_order
383
376 384 def _init_opts(self):
377 385 """process options (from above/config) to setup associated default revlog mode
378 386
@@ -898,7 +906,10 b' class revlog:'
898 906 raise error.WdirUnsupported
899 907 raise
900 908
901 return entry[5], entry[6]
909 if self.canonical_parent_order and entry[5] == nullrev:
910 return entry[6], entry[5]
911 else:
912 return entry[5], entry[6]
902 913
903 914 # fast parentrevs(rev) where rev isn't filtered
904 915 _uncheckedparentrevs = parentrevs
@@ -919,7 +930,11 b' class revlog:'
919 930 def parents(self, node):
920 931 i = self.index
921 932 d = i[self.rev(node)]
922 return i[d[5]][7], i[d[6]][7] # map revisions to nodes inline
933 # inline node() to avoid function call overhead
934 if self.canonical_parent_order and d[5] == self.nullid:
935 return i[d[6]][7], i[d[5]][7]
936 else:
937 return i[d[5]][7], i[d[6]][7]
923 938
924 939 def chainlen(self, rev):
925 940 return self._chaininfo(rev)[0]
@@ -179,7 +179,7 b' has been emitted, just in a different or'
179 179
180 180
181 181 $ hg log -T '{if(ellipsis,"...")}{node|short} {p1node|short} {p2node|short} {desc}\n' | sort
182 ...2a20009de83e 000000000000 3ac1f5779de3 outside 10
182 ...2a20009de83e 3ac1f5779de3 000000000000 outside 10
183 183 ...3ac1f5779de3 bb96a08b062a 465567bdfb2d merge a/b/c/d 9
184 184 ...8d874d57adea 7ef88b4dd4fa 000000000000 outside 12
185 185 ...b844052e7b3b 000000000000 000000000000 outside 2c
General Comments 0
You need to be logged in to leave comments. Login now