git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
d3def66e7d3e4cdf87dc143c0a6b77b4eb2f1ec2 blob 3194 bytes (raw)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
 
#!/bin/sh

test_description='Test merge without common ancestors'
. ./test-lib.sh

# This scenario is based on a real-world repository of Shawn Pearce.

# 1 - A - D - F
#   \   X   /
#     B   X
#       X   \
# 2 - C - E - G

GIT_COMMITTER_DATE="2006-12-12 23:28:00 +0100"
export GIT_COMMITTER_DATE

test_expect_success 'setup tests' '
	GIT_TEST_COMMIT_GRAPH=0 &&
	export GIT_TEST_COMMIT_GRAPH &&
	echo 1 >a1 &&
	git add a1 &&
	GIT_AUTHOR_DATE="2006-12-12 23:00:00" git commit -m 1 a1 &&

	git checkout -b A master &&
	echo A >a1 &&
	GIT_AUTHOR_DATE="2006-12-12 23:00:01" git commit -m A a1 &&

	git checkout -b B master &&
	echo B >a1 &&
	GIT_AUTHOR_DATE="2006-12-12 23:00:02" git commit -m B a1 &&

	git checkout -b D A &&
	git rev-parse B >.git/MERGE_HEAD &&
	echo D >a1 &&
	git update-index a1 &&
	GIT_AUTHOR_DATE="2006-12-12 23:00:03" git commit -m D &&

	git symbolic-ref HEAD refs/heads/other &&
	echo 2 >a1 &&
	GIT_AUTHOR_DATE="2006-12-12 23:00:04" git commit -m 2 a1 &&

	git checkout -b C &&
	echo C >a1 &&
	GIT_AUTHOR_DATE="2006-12-12 23:00:05" git commit -m C a1 &&

	git checkout -b E C &&
	git rev-parse B >.git/MERGE_HEAD &&
	echo E >a1 &&
	git update-index a1 &&
	GIT_AUTHOR_DATE="2006-12-12 23:00:06" git commit -m E &&

	git checkout -b G E &&
	git rev-parse A >.git/MERGE_HEAD &&
	echo G >a1 &&
	git update-index a1 &&
	GIT_AUTHOR_DATE="2006-12-12 23:00:07" git commit -m G &&

	git checkout -b F D &&
	git rev-parse C >.git/MERGE_HEAD &&
	echo F >a1 &&
	git update-index a1 &&
	GIT_AUTHOR_DATE="2006-12-12 23:00:08" git commit -m F &&

	test_oid_cache <<-EOF
	idxstage1 sha1:ec3fe2a791706733f2d8fa7ad45d9a9672031f5e
	idxstage1 sha256:b3c8488929903aaebdeb22270cb6d36e5b8724b01ae0d4da24632f158c99676f
	EOF
'

test_expect_success 'combined merge conflicts' '
	test_must_fail git merge -m final G
'

test_expect_success 'result contains a conflict' '
	cat >expect <<-\EOF &&
	<<<<<<< HEAD
	F
	=======
	G
	>>>>>>> G
	EOF

	test_cmp expect a1
'

test_expect_success 'virtual trees were processed' '
	git ls-files --stage >out &&

	cat >expect <<-EOF &&
	100644 $(test_oid idxstage1) 1	a1
	100644 $(git rev-parse F:a1) 2	a1
	100644 $(git rev-parse G:a1) 3	a1
	EOF

	test_cmp expect out
'

test_expect_success 'refuse to merge binary files' '
	git reset --hard &&
	printf "\0" >binary-file &&
	git add binary-file &&
	git commit -m binary &&
	git checkout G &&
	printf "\0\0" >binary-file &&
	git add binary-file &&
	git commit -m binary2 &&
	test_must_fail git merge F >merge.out 2>merge.err &&
	grep "Cannot merge binary files: binary-file (HEAD vs. F)" merge.err
'

test_expect_success 'mark rename/delete as unmerged' '

	git reset --hard &&
	git checkout -b delete &&
	git rm a1 &&
	test_tick &&
	git commit -m delete &&
	git checkout -b rename HEAD^ &&
	git mv a1 a2 &&
	test_tick &&
	git commit -m rename &&
	test_must_fail git merge delete &&
	test 1 = $(git ls-files --unmerged | wc -l) &&
	git rev-parse --verify :2:a2 &&
	test_must_fail git rev-parse --verify :3:a2 &&
	git checkout -f delete &&
	test_must_fail git merge rename &&
	test 1 = $(git ls-files --unmerged | wc -l) &&
	test_must_fail git rev-parse --verify :2:a2 &&
	git rev-parse --verify :3:a2
'

test_done
debug log:

solving d3def66e7d ...
found d3def66e7d in https://public-inbox.org/git/439adc1718d6cc37f18c1eaeafd605f5c2961733.1597509583.git.gitgitgadget@gmail.com/ ||
	https://public-inbox.org/git/58a2d5da0105e6572305b07d4e39ef6be9ee0044.1596941625.git.gitgitgadget@gmail.com/
found 332cfc53fd in git.git.git
preparing index
index prepared:
100755 332cfc53fd889328ef753e0775e5ca45eacd2a20	t/t6024-recursive-merge.sh

applying [1/2] https://public-inbox.org/git/439adc1718d6cc37f18c1eaeafd605f5c2961733.1597509583.git.gitgitgadget@gmail.com/
diff --git a/t/t6024-recursive-merge.sh b/t/t6024-recursive-merge.sh
index 332cfc53fd..d3def66e7d 100755

Checking patch t/t6024-recursive-merge.sh...
Applied patch t/t6024-recursive-merge.sh cleanly.

skipping https://public-inbox.org/git/58a2d5da0105e6572305b07d4e39ef6be9ee0044.1596941625.git.gitgitgadget@gmail.com/ for d3def66e7d
index at:
100755 d3def66e7d3e4cdf87dc143c0a6b77b4eb2f1ec2	t/t6024-recursive-merge.sh

Code repositories for project(s) associated with this inbox:

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).