Comments
Patch
@@ -16,6 +16,7 @@ from .i18n import _
from .node import (
bin,
hex,
+ newnodeid,
nullid,
nullrev,
short,
@@ -39,11 +40,6 @@ from . import (
propertycache = util.propertycache
-# Phony node value to stand-in for new files in some uses of
-# manifests. Manifests support 21-byte hashes for nodes which are
-# dirty in the working copy.
-_newnode = '!' * 21
-
nonascii = re.compile(r'[^\x21-\x7f]').search
class basectx(object):
@@ -142,7 +138,7 @@ class basectx(object):
removed.append(fn)
elif flag1 != flag2:
modified.append(fn)
- elif node2 != _newnode:
+ elif node2 != newnodeid:
# When comparing files between two commits, we save time by
# not comparing the file contents when the nodeids differ.
# Note that this means we incorrectly report a reverted change
@@ -1580,7 +1576,7 @@ class workingctx(committablectx):
"""
mf = self._repo['.']._manifestmatches(match, s)
for f in s.modified + s.added:
- mf[f] = _newnode
+ mf[f] = newnodeid
mf.setflag(f, self.flags(f))
for f in s.removed:
if f in mf:
@@ -278,7 +278,7 @@ def _makegetfctx(ctx):
ac = repo.changelog.ancestors(revs, inclusive=True)
ctx._ancestrycontext = ac
def makectx(f, n):
- if len(n) != 20: # in a working context?
+ if len(n) != 20 or n in node.wdirnodes: # in a working context?
if ctx.rev() is None:
return ctx.filectx(f)
return repo[None][f]
@@ -17,6 +17,12 @@ nullrev = -1
nullid = b"\0" * 20
nullhex = hex(nullid)
+# Phony node value to stand-in for new files in some uses of
+# manifests.
+newnodeid = '!' * 20
+
+wdirnodes = set((newnodeid,))
+
# pseudo identifiers for working directory
# (they are experimental, so don't add too many dependencies on them)
wdirrev = 0x7fffffff