Code

Use core.filemode.
authorJunio C Hamano <junkio@cox.net>
Wed, 12 Oct 2005 01:45:33 +0000 (18:45 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 12 Oct 2005 01:45:33 +0000 (18:45 -0700)
commit3e09cdfd114651fc61656dbd45d5ec3d9352cb2b
treec72ab5b681371a4a78fe3fdc1c2843cd531d75d4
parent5cbb401dbaff5fd810a85b84333cb0c22d264f36
Use core.filemode.

With "[core] filemode = false", you can tell git to ignore
differences in the working tree file only in executable bit.

 * "git-update-index --refresh" does not say "needs update" if index
   entry and working tree file differs only in executable bit.

 * "git-update-index" on an existing path takes executable bit
   from the existing index entry, if the path and index entry are
   both regular files.

 * "git-diff-files" and "git-diff-index" without --cached flag
   pretend the path on the filesystem has the same executable
   bit as the existing index entry, if the path and index entry
   are both regular files.

If you are on a filesystem with unreliable mode bits, you may need to
force the executable bit after registering the path in the index.

 * "git-update-index --chmod=+x foo" flips the executable bit of the
   index file entry for path "foo" on.  Use "--chmod=-x" to flip it
   off.

Note that --chmod only works in index file and does not look at nor
update the working tree.

So if you are on a filesystem and do not have working executable bit,
you would do:

 1. set the appropriate .git/config option;

 2. "git-update-index --add new-file.c"

 3. "git-ls-files --stage new-file.c" to see if it has the desired
   mode bits.  If not, e.g. to drop executable bit picked up from the
   filesystem, say "git-update-index --chmod=-x new-file.c".

Signed-off-by: Junio C Hamano <junkio@cox.net>
diff-files.c
diff-index.c
read-cache.c
update-index.c