Mercurial > hg
changeset 21393:a45af4da0421
localrepo: move symlink logic to workingctx
author | Sean Farley <sean.michael.farley@gmail.com> |
---|---|
date | Fri, 07 Mar 2014 13:32:37 -0800 |
parents | b1ce47dadbdf |
children | 20a30cd41d21 |
files | mercurial/context.py mercurial/localrepo.py |
diffstat | 2 files changed, 21 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/context.py Fri May 09 12:01:56 2014 +0200 +++ b/mercurial/context.py Fri Mar 07 13:32:37 2014 -0800 @@ -1178,6 +1178,25 @@ finally: wlock.release() + def _filtersuspectsymlink(self, files): + if not files or self._repo.dirstate._checklink: + return files + + # Symlink placeholders may get non-symlink-like contents + # via user error or dereferencing by NFS or Samba servers, + # so we filter out any placeholders that don't look like a + # symlink + sane = [] + for f in files: + if self.flags(f) == 'l': + d = self[f].data() + if d == '' or len(d) >= 1024 or '\n' in d or util.binary(d): + self._repo.ui.debug('ignoring suspect symlink placeholder' + ' "%s"\n' % f) + continue + sane.append(f) + return sane + class committablefilectx(basefilectx): """A committablefilectx provides common functionality for a file context that wants the ability to commit, e.g. workingfilectx or memfilectx."""
--- a/mercurial/localrepo.py Fri May 09 12:01:56 2014 +0200 +++ b/mercurial/localrepo.py Fri Mar 07 13:32:37 2014 -0800 @@ -1609,21 +1609,8 @@ added.append(fn) removed = mf1.keys() - if working and modified and not self.dirstate._checklink: - # Symlink placeholders may get non-symlink-like contents - # via user error or dereferencing by NFS or Samba servers, - # so we filter out any placeholders that don't look like a - # symlink - sane = [] - for f in modified: - if ctx2.flags(f) == 'l': - d = ctx2[f].data() - 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 - sane.append(f) - modified = sane + if working: + modified = ctx2._filtersuspectsymlink(modified) r = modified, added, removed, deleted, unknown, ignored, clean