# HG changeset patch # User FUJIWARA Katsunori # Date 2014-11-25 09:37:28 # 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 @@ def reposetup(ui, repo): 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 @@ def reposetup(ui, repo): 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 @@ the working context) $ 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 < # 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 ..