[PATCH 1 of 3 V2] localrepo.status: ignore empty symlink placeholders
Siddharth Agarwal
sid0 at fb.com
Sat Aug 31 20:14:19 UTC 2013
# HG changeset patch
# User Siddharth Agarwal <sid0 at fb.com>
# Date 1377969366 25200
# Sat Aug 31 10:16:06 2013 -0700
# Node ID 47ca48b126a91692716003fc904b27be519bcdcf
# Parent d61b5370569659bd54a6de324655a0bb11d2af73
localrepo.status: ignore empty symlink placeholders
A symlink's target should never be empty in normal use. Solaris and some BSDs
do allow empty symlinks to be created (with varying semantics on dereference),
but a symlink placeholder that started off as empty is either
- going to be empty, in which case ignoring it is fine, since it's unchanged, or
- going to not be empty, in which case this check is irrelevant.
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1561,7 +1561,7 @@
for f in modified:
if ctx2.flags(f) == 'l':
d = ctx2[f].data()
- if len(d) >= 1024 or '\n' in d or util.binary(d):
+ if d == '' or len(d) >= 1024 or '\n' in d or util.binary(d):
self.ui.debug('ignoring suspect symlink placeholder'
' "%s"\n' % f)
continue
diff --git a/tests/test-symlink-placeholder.t b/tests/test-symlink-placeholder.t
--- a/tests/test-symlink-placeholder.t
+++ b/tests/test-symlink-placeholder.t
@@ -41,6 +41,13 @@
a (no-eol)
$ hg --config extensions.n=$TESTTMP/nolink.py st --debug
+Empty placeholder:
+
+ $ rm b
+ $ touch b
+ $ hg --config extensions.n=$TESTTMP/nolink.py st --debug
+ ignoring suspect symlink placeholder "b"
+
Write binary data to the placeholder:
>>> open('b', 'w').write('this is a binary\0')
More information about the Mercurial-devel
mailing list