Tell multi-parent diff about core.symlinks.
When core.symlinks is false, and a merge of symbolic links had conflicts, the merge result is left as a file in the working directory. A decision must be made whether the file is treated as a regular file or as a symbolic link. This patch treats the file as a symbolic link only if all merge parents were also symbolic links. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
723024d696
commit
a249a9b5a2
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user