Skip to content

Commit fadf488

Browse files
dschogitster
authored andcommitted
merge-recursive: refuse to merge binary files
[jc: cherry-picked 9f30855 from 'master'] Signed-off-by: Johannes Schindelin <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 634cd48 commit fadf488

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

merge-recursive.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,12 @@ static int ll_xdl_merge(const struct ll_merge_driver *drv_unused,
680680
{
681681
xpparam_t xpp;
682682

683+
if (buffer_is_binary(orig->ptr, orig->size) ||
684+
buffer_is_binary(src1->ptr, src1->size) ||
685+
buffer_is_binary(src2->ptr, src2->size))
686+
return error("Cannot merge binary files: %s vs. %s\n",
687+
name1, name2);
688+
683689
memset(&xpp, 0, sizeof(xpp));
684690
return xdl_merge(orig,
685691
src1, name1,

t/t6024-recursive-merge.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,18 @@ EOF
8181

8282
test_expect_success "virtual trees were processed" "git diff expect out"
8383

84+
git reset --hard
85+
test_expect_success 'refuse to merge binary files' '
86+
printf "\0" > binary-file &&
87+
git add binary-file &&
88+
git commit -m binary &&
89+
git checkout G &&
90+
printf "\0\0" > binary-file &&
91+
git add binary-file &&
92+
git commit -m binary2 &&
93+
! git merge F > merge.out 2> merge.err &&
94+
grep "Cannot merge binary files: HEAD:binary-file vs. F:binary-file" \
95+
merge.err
96+
'
97+
8498
test_done

0 commit comments

Comments
 (0)