git-clone: stop dumb protocol from copying refs outside heads/ and tags/.
[gitweb.git] / builtin-update-index.c
index 7f9c638466f79fee7d2914b8ec76d713c3670e7e..182331d34156dd6b88d16a068efad591e07ae6b3 100644 (file)
@@ -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))