# HG changeset patch # User Siddharth Agarwal # Date 1377969366 25200 # Node ID 36f48c7d594456b4ef7809230507518de2b958ce # Parent 5528c31c629cbf48c2b043b44c9db3534eba349b 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 -r 5528c31c629c -r 36f48c7d5944 mercurial/localrepo.py --- a/mercurial/localrepo.py Tue Sep 03 15:12:35 2013 -0400 +++ b/mercurial/localrepo.py Sat Aug 31 10:16:06 2013 -0700 @@ -1557,7 +1557,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 -r 5528c31c629c -r 36f48c7d5944 tests/test-symlink-placeholder.t --- a/tests/test-symlink-placeholder.t Tue Sep 03 15:12:35 2013 -0400 +++ b/tests/test-symlink-placeholder.t Sat Aug 31 10:16:06 2013 -0700 @@ -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')