path: root/read-cache.c
diff options
authorShawn Pearce <>2006-09-27 05:21:19 (GMT)
committerJunio C Hamano <>2006-09-27 05:42:52 (GMT)
commitfd28b34afd9bbd58297a25edced3f504c9a5487a (patch)
tree10cb72b80632e673169d9952d3053dc76c8a47eb /read-cache.c
parent4dafd7d2444051fe0e1eb17e9ded503ad7d9dd25 (diff)
Ignore executable bit when adding files if filemode=0.
If the user has configured core.filemode=0 then we shouldn't set the execute bit in the index when adding a new file as the user has indicated that the local filesystem can't be trusted. This means that when adding files that should be marked executable in a repository with core.filemode=0 the user must perform a 'git update-index --chmod=+x' on the file before committing the addition. Signed-off-by: Shawn O. Pearce <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'read-cache.c')
1 files changed, 3 insertions, 1 deletions
diff --git a/read-cache.c b/read-cache.c
index 20c9d49..97c3867 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -347,11 +347,13 @@ int add_file_to_index(const char *path, int verbose)
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.
+ * from it, otherwise force to 644.
int pos = cache_name_pos(path, namelen);
if (pos >= 0)
ce->ce_mode = active_cache[pos]->ce_mode;
+ else
+ ce->ce_mode = create_ce_mode(S_IFREG | 0644);
if (index_path(ce->sha1, path, &st, 1))