diff options
| author | Junio C Hamano <junkio@cox.net> | 2007-02-17 16:16:48 -0800 |
|---|---|---|
| committer | Junio C Hamano <junkio@cox.net> | 2007-02-17 16:16:48 -0800 |
| commit | 69bc0e22d37db4fa9875b717a64949bbfce4ebdf (patch) | |
| tree | adc790d89c9875d027fd996f402d05a40b0298bb /builtin-update-index.c | |
| parent | 2afc29aa84f518906c50a1f005e3d715babb5c20 (diff) | |
| parent | 21b4875a51dd9aae68a1c4932d54cad9fc589401 (diff) | |
| download | git-69bc0e22d37db4fa9875b717a64949bbfce4ebdf.tar.gz | |
Merge branch 'maint'
* maint:
Update draft release notes for 1.5.0.1
Convert update-index references in docs to add.
Attempt to improve git-rebase lead-in description.
Do not take mode bits from index after type change.
git-blame: prevent argument parsing segfault
Make gitk save and restore window pane position on Linux and Cygwin.
Make gitk save and restore the user set window position.
[PATCH] gitk: Use show-ref instead of ls-remote
[PATCH] Make gitk work reasonably well on Cygwin.
[PATCH] gitk - remove trailing whitespace from a few lines.
Change git repo-config to git config
Diffstat (limited to 'builtin-update-index.c')
| -rw-r--r-- | builtin-update-index.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/builtin-update-index.c b/builtin-update-index.c index 1ac613a788..772aaba7bb 100644 --- a/builtin-update-index.c +++ b/builtin-update-index.c @@ -109,16 +109,17 @@ static int add_file_to_cache(const char *path) ce->ce_flags = htons(namelen); fill_stat_cache_info(ce, &st); - ce->ce_mode = create_ce_mode(st.st_mode); - if (!trust_executable_bit) { + if (trust_executable_bit) + ce->ce_mode = create_ce_mode(st.st_mode); + else { /* If there is an existing entry, pick the mode bits * from it, otherwise assume unexecutable. */ + struct cache_entry *ent; int pos = cache_name_pos(path, namelen); - if (0 <= pos) - ce->ce_mode = active_cache[pos]->ce_mode; - else if (S_ISREG(st.st_mode)) - ce->ce_mode = create_ce_mode(S_IFREG | 0666); + + ent = (0 <= pos) ? active_cache[pos] : NULL; + ce->ce_mode = ce_mode_from_stat(ent, st.st_mode); } if (index_path(ce->sha1, path, &st, !info_only)) |
