diff options
| author | Junio C Hamano <junkio@cox.net> | 2007-02-27 02:27:26 -0800 |
|---|---|---|
| committer | Junio C Hamano <junkio@cox.net> | 2007-02-27 02:27:26 -0800 |
| commit | 88459358cdd70246e805b0ee7db7fffb9564f80e (patch) | |
| tree | 2bbb9cc6508fb5eb33e0d2fe1f70c5ada0bb7334 /read-cache.c | |
| parent | fee7c2c71d9e35b2f54aa3631072bd7f73bb7b4c (diff) | |
| parent | 0ab179504a17907c395a4009f7c23d2f71bba1d3 (diff) | |
| download | git-88459358cdd70246e805b0ee7db7fffb9564f80e.tar.xz | |
Merge branch 'np/types' into jc/fetch
* np/types: (253 commits)
get rid of lookup_object_type()
convert object type handling from a string to a number
formalize typename(), and add its reverse type_from_string()
sha1_file.c: don't ignore an error condition in sha1_loose_object_info()
sha1_file.c: cleanup "offset" usage
sha1_file.c: cleanup hdr usage
git-apply: do not fix whitespaces on context lines.
diff --cc: integer overflow given a 2GB-or-larger file
mailinfo: do not get confused with logical lines that are too long.
Documentation: link in 1.5.0.2 material to the top documentation page.
Documentation: document remote.<name>.tagopt
GIT 1.5.0.2
git-remote: support remotes with a dot in the name
Documentation: describe "-f/-t/-m" options to "git-remote add"
diff --cc: fix display of symlink conflicts during a merge.
merge-recursive: fix longstanding bug in merging symlinks
merge-index: fix longstanding bug in merging symlinks
diff --cached: give more sensible error message when HEAD is yet to be created.
Update tests to use test-chmtime
Add test-chmtime: a utility to change mtime on files
...
Diffstat (limited to 'read-cache.c')
| -rw-r--r-- | read-cache.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/read-cache.c b/read-cache.c index c54a611877..d63746476e 100644 --- a/read-cache.c +++ b/read-cache.c @@ -72,7 +72,7 @@ static int ce_compare_link(struct cache_entry *ce, unsigned long expected_size) char *target; void *buffer; unsigned long size; - char type[10]; + enum object_type type; int len; target = xmalloc(expected_size); @@ -81,7 +81,7 @@ static int ce_compare_link(struct cache_entry *ce, unsigned long expected_size) free(target); return -1; } - buffer = read_sha1_file(ce->sha1, type, &size); + buffer = read_sha1_file(ce->sha1, &type, &size); if (!buffer) { free(target); return -1; @@ -344,16 +344,17 @@ int add_file_to_index(const char *path, int verbose) 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 (pos >= 0) - 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, 1)) |
