# HG changeset patch # User Alexis S. L. Carvalho # Date 1203621751 10800 # Node ID 23ffe82615d80f97dc3ca029c82884c8620b598d # Parent 09b00faa867093f32ad17d1a8eabe75a61ddc9bc repo.status: also compare flags for files in the lookup list. We might be able to do something smarter about this in dirstate.status for files in normallookup state, but that would require some extra care to keep backwards compatibility. diff -r 09b00faa8670 -r 23ffe82615d8 mercurial/localrepo.py --- a/mercurial/localrepo.py Thu Feb 21 16:22:31 2008 -0300 +++ b/mercurial/localrepo.py Thu Feb 21 16:22:31 2008 -0300 @@ -1003,8 +1003,15 @@ fixup = [] # do a full compare of any files that might have changed ctx = self.changectx() + mexec = lambda f: 'x' in ctx.fileflags(f) + mlink = lambda f: 'l' in ctx.fileflags(f) + is_exec = util.execfunc(self.root, mexec) + is_link = util.linkfunc(self.root, mlink) + def flags(f): + return is_link(f) and 'l' or is_exec(f) and 'x' or '' for f in lookup: - if f not in ctx or ctx[f].cmp(self.wread(f)): + if (f not in ctx or flags(f) != ctx.fileflags(f) + or ctx[f].cmp(self.wread(f))): modified.append(f) else: fixup.append(f) diff -r 09b00faa8670 -r 23ffe82615d8 tests/test-execute-bit --- a/tests/test-execute-bit Thu Feb 21 16:22:31 2008 -0300 +++ b/tests/test-execute-bit Thu Feb 21 16:22:31 2008 -0300 @@ -4,12 +4,18 @@ hg init echo a > a -hg ci -d'0 0' -Am'not executable' +hg ci -Am'not executable' chmod +x a -hg ci -d'1 0' -m'executable' +hg ci -m'executable' hg id +echo '% make sure we notice the change of mode if the cached size == -1' +hg rm a +hg revert -r 0 a +hg debugstate +hg st + hg up 0 hg id test -x a && echo executable -- eek || echo not executable -- whew diff -r 09b00faa8670 -r 23ffe82615d8 tests/test-execute-bit.out --- a/tests/test-execute-bit.out Thu Feb 21 16:22:31 2008 -0300 +++ b/tests/test-execute-bit.out Thu Feb 21 16:22:31 2008 -0300 @@ -1,5 +1,8 @@ adding a -1549299e88d1 tip +79abf14474dc tip +% make sure we notice the change of mode if the cached size == -1 +n 0 -1 unset a +M a 0 files updated, 0 files merged, 0 files removed, 0 files unresolved d69afc33ff8a not executable -- whew