diff options
author | Junio C Hamano <junkio@cox.net> | 2007-03-04 17:31:09 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-03-04 17:31:09 -0800 |
commit | e6f95113431f7e69263bc3d075c0a7715ce587e3 (patch) | |
tree | 810569356f64b58df52560fcce0d3cfb561014ab /combine-diff.c | |
parent | 784b11cd05e7862b0fbcc1251a65669c7004a8df (diff) | |
parent | a249a9b5a26e841a28f6e993a560d749303cf91c (diff) | |
download | git-e6f95113431f7e69263bc3d075c0a7715ce587e3.tar.gz git-e6f95113431f7e69263bc3d075c0a7715ce587e3.tar.xz |
Merge branch 'js/symlink'
* js/symlink:
Tell multi-parent diff about core.symlinks.
Handle core.symlinks=false case in merge-recursive.
Add core.symlinks to mark filesystems that do not support symbolic links.
Diffstat (limited to 'combine-diff.c')
-rw-r--r-- | combine-diff.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/combine-diff.c b/combine-diff.c index 9daa0cb9a..6d928f282 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -699,8 +699,18 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent, !fstat(fd, &st)) { size_t len = st.st_size; size_t sz = 0; + int is_file, i; elem->mode = canon_mode(st.st_mode); + /* if symlinks don't work, assume symlink if all parents + * are symlinks + */ + is_file = has_symlinks; + for (i = 0; !is_file && i < num_parent; i++) + is_file = !S_ISLNK(elem->parent[i].mode); + if (!is_file) + elem->mode = canon_mode(S_IFLNK); + result_size = len; result = xmalloc(len + 1); while (sz < len) { |