From 1affea4f629537fd48e3bd66de89a6f45d0fcd82 Mon Sep 17 00:00:00 2001 From: Clemens Buchacher Date: Thu, 13 Mar 2008 23:47:41 +0100 Subject: merge-recursive: handle file mode changes File mode changes should be handled similarly to changes of content. That is, if the file mode changed in only one branch, keep the changed version, and if both branch changed to different mode, mark it as a conflict. Signed-off-by: Clemens Buchacher Signed-off-by: Junio C Hamano --- t/t6031-merge-recursive.sh | 49 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100755 t/t6031-merge-recursive.sh (limited to 't/t6031-merge-recursive.sh') diff --git a/t/t6031-merge-recursive.sh b/t/t6031-merge-recursive.sh new file mode 100755 index 0000000000..5bb6b93780 --- /dev/null +++ b/t/t6031-merge-recursive.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +test_description='merge-recursive: handle file mode' +. ./test-lib.sh + +test_expect_success 'mode change in one branch: keep changed version' ' + : >file1 && + git add file1 && + git commit -m initial && + git checkout -b a1 master && + : >dummy && + git add dummy && + git commit -m a && + git checkout -b b1 master && + chmod +x file1 && + git add file1 && + git commit -m b1 && + git checkout a1 && + git merge-recursive master -- a1 b1 && + test -x file1 +' + +test_expect_success 'mode change in both branches: expect conflict' ' + git reset --hard HEAD && + git checkout -b a2 master && + : >file2 && + H=$(git hash-object file2) && + chmod +x file2 && + git add file2 && + git commit -m a2 && + git checkout -b b2 master && + : >file2 && + git add file2 && + git commit -m b2 && + git checkout a2 && + ( + git merge-recursive master -- a2 b2 + test $? = 1 + ) && + git ls-files -u >actual && + ( + echo "100755 $H 2 file2" + echo "100644 $H 3 file2" + ) >expect && + diff -u actual expect && + test -x file2 +' + +test_done -- cgit v1.2.1 From 1f9ff0de82f0f2990f3d6f06dad1d381158c2a75 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 15 Mar 2008 01:23:26 -0700 Subject: Redo "add test_cmp function for test scripts" We had a handful test updates since we accepted 82ebb0b (add test_cmp function for test scripts). This fixes them up. Signed-off-by: Junio C Hamano --- t/t6031-merge-recursive.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 't/t6031-merge-recursive.sh') diff --git a/t/t6031-merge-recursive.sh b/t/t6031-merge-recursive.sh index 5bb6b93780..c8310aee4f 100755 --- a/t/t6031-merge-recursive.sh +++ b/t/t6031-merge-recursive.sh @@ -42,7 +42,7 @@ test_expect_success 'mode change in both branches: expect conflict' ' echo "100755 $H 2 file2" echo "100644 $H 3 file2" ) >expect && - diff -u actual expect && + test_cmp actual expect && test -x file2 ' -- cgit v1.2.1 From 28f880241782024ecb212f1641c8dc487124523b Mon Sep 17 00:00:00 2001 From: Alex Riesen Date: Sun, 18 May 2008 16:57:27 +0200 Subject: Fix t6031 on filesystems without working exec bit The point of the test is not really to test the ability of the filesystem to keep the given x-bit, but to check is merge-recursive correctly handles it. Signed-off-by: Alex Riesen Signed-off-by: Junio C Hamano --- t/t6031-merge-recursive.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 't/t6031-merge-recursive.sh') diff --git a/t/t6031-merge-recursive.sh b/t/t6031-merge-recursive.sh index c8310aee4f..8073e0c3ef 100755 --- a/t/t6031-merge-recursive.sh +++ b/t/t6031-merge-recursive.sh @@ -3,6 +3,9 @@ test_description='merge-recursive: handle file mode' . ./test-lib.sh +# Note that we follow "chmod +x F" with "update-index --chmod=+x F" to +# help filesystems that do not have the executable bit. + test_expect_success 'mode change in one branch: keep changed version' ' : >file1 && git add file1 && @@ -13,7 +16,7 @@ test_expect_success 'mode change in one branch: keep changed version' ' git commit -m a && git checkout -b b1 master && chmod +x file1 && - git add file1 && + git update-index --chmod=+x file1 && git commit -m b1 && git checkout a1 && git merge-recursive master -- a1 b1 && @@ -26,7 +29,7 @@ test_expect_success 'mode change in both branches: expect conflict' ' : >file2 && H=$(git hash-object file2) && chmod +x file2 && - git add file2 && + git update-index --add --chmod=+x file2 && git commit -m a2 && git checkout -b b2 master && : >file2 && -- cgit v1.2.1