summaryrefslogtreecommitdiff
path: root/builtin-update-index.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-11-22 16:33:32 -0800
committerJunio C Hamano <junkio@cox.net>2006-11-22 16:36:49 -0800
commit2bbaaed9eefa92e8a17e74ec5f9b87ecdc7a5949 (patch)
treeacd44cdce2d8a530bdb63d5c0a6fa35648a50b91 /builtin-update-index.c
parent5d1faf8791fa85ba9be2282900d4f704c7790648 (diff)
downloadgit-2bbaaed9eefa92e8a17e74ec5f9b87ecdc7a5949.tar.gz
trust-executable-bit: fix breakage for symlinks
An earlier commit f28b34a broke symlinks when trust-executable-bit is not set because it incorrectly assumed that everything was a regular file. Reported by Juergen Ruehle. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'builtin-update-index.c')
-rw-r--r--builtin-update-index.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/builtin-update-index.c b/builtin-update-index.c
index 7f9c638466..182331d341 100644
--- a/builtin-update-index.c
+++ b/builtin-update-index.c
@@ -112,13 +112,13 @@ static int add_file_to_cache(const char *path)
ce->ce_mode = create_ce_mode(st.st_mode);
if (!trust_executable_bit) {
/* If there is an existing entry, pick the mode bits
- * from it, otherwise force to 644.
+ * from it, otherwise assume unexecutable.
*/
int pos = cache_name_pos(path, namelen);
if (0 <= pos)
ce->ce_mode = active_cache[pos]->ce_mode;
- else
- ce->ce_mode = create_ce_mode(S_IFREG | 0644);
+ else if (S_ISREG(st.st_mode))
+ ce->ce_mode = create_ce_mode(S_IFREG | 0666);
}
if (index_path(ce->sha1, path, &st, !info_only))