# HG changeset patch # User FUJIWARA Katsunori <foozy@lares.dti.ne.jp> # Date 1416908248 -32400 # Tue Nov 25 18:37:28 2014 +0900 # Branch stable # Node ID 7f8d27e1f862819b6f13e368c949aa824de5ae45 # Parent cc0ff93d0c0c29526465a1d07b9eddf5b2da51dd largefiles: avoid exec-bit examination on the platform being unaware of it Changeset 24600c9d7f4e introduced the examination of exec bit of largefiles in "hg status --rev REV" case, but it doesn't avoid it on the platform being unaware of exec-bit (e.g. on NTFS of Windows). diff --git a/hgext/largefiles/reposetup.py b/hgext/largefiles/reposetup.py --- a/hgext/largefiles/reposetup.py +++ b/hgext/largefiles/reposetup.py @@ -170,6 +170,7 @@ else: tocheck = unsure + modified + added + clean modified, added, clean = [], [], [] + checkexec = self.dirstate._checkexec for lfile in tocheck: standin = lfutil.standin(lfile) @@ -177,7 +178,8 @@ abslfile = self.wjoin(lfile) if ((ctx1[standin].data().strip() != lfutil.hashfile(abslfile)) or - (('x' in ctx1.flags(standin)) != + (checkexec and + ('x' in ctx1.flags(standin)) != bool(lfutil.getexecutable(abslfile)))): modified.append(lfile) elif listclean: diff --git a/tests/test-largefiles-update.t b/tests/test-largefiles-update.t --- a/tests/test-largefiles-update.t +++ b/tests/test-largefiles-update.t @@ -577,6 +577,31 @@ $ hg status -A --rev '.^1' large2 M large2 +#else + +Test that "hg status" against revisions other than parent ignores exec +bit correctly on the platform being unaware of it. + + $ hg update -q -C 4 + + $ cat > exec-bit.patch <<EOF + > # HG changeset patch + > # User test + > # Date 0 0 + > # Thu Jan 01 00:00:00 1970 +0000 + > # Node ID be1b433a65b12b27b5519d92213e14f7e1769b90 + > # Parent 07d6153b5c04313efb75deec9ba577de7faeb727 + > chmod +x large2 + > + > diff --git a/.hglf/large2 b/.hglf/large2 + > old mode 100644 + > new mode 100755 + > EOF + $ hg import --exact --bypass exec-bit.patch + applying exec-bit.patch + $ hg status -A --rev tip large2 + C large2 + #endif $ cd ..