git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
18975801db372af0fb05064e42447591d2a21628 blob 3224 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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
 
#!/bin/sh

test_description="merge cases"

# The setup for all of them, pictorially, is:
#
#      A
#      o
#     / \
#  O o   ?
#     \ /
#      o
#      B
#
# To help make it easier to follow the flow of tests, they have been
# divided into sections and each test will start with a quick explanation
# of what commits O, A, and B contain.
#
# Notation:
#    z/{b,c}   means  files z/b and z/c both exist
#    x/d_1     means  file x/d exists with content d1.  (Purpose of the
#                     underscore notation is to differentiate different
#                     files that might be renamed into each other's paths.)

. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-merge.sh

git config --global merge.conflictstyle merge # TODO: use the default

# Testcase basic, conflicting changes in 'numerals'

test_setup_numerals () {
	test_create_repo numerals_$1 &&
	(
		cd numerals_$1 &&

		>README &&
		test_write_lines I II III >numerals &&
		git add README numerals &&
		test_tick &&
		git commit -m "O" &&

		git branch O &&
		git branch A &&
		git branch B &&

		git checkout A &&
		test_write_lines I II III IIII >numerals &&
		git add numerals &&
		test_tick &&
		git commit -m "A" &&

		git checkout B &&
		test_write_lines I II III IV >numerals &&
		git add numerals &&
		test_tick &&
		git commit -m "B" &&

		cat <<-EOF >expected-index &&
		H README
		M numerals
		M numerals
		M numerals
		EOF

		cat <<-EOF >expected-merge
		I
		II
		III
		<<<<<<< HEAD
		IIII
		=======
		IV
		>>>>>>> B^0
		EOF

	)
}

test_expect_success 'conflicting entries written to worktree even if sparse' '
	test_setup_numerals plain &&
	(
		cd numerals_plain &&

		git checkout A^0 &&

		test_path_is_file README &&
		test_path_is_file numerals &&

		git sparse-checkout init &&
		git sparse-checkout set README &&

		test_path_is_file README &&
		test_path_is_missing numerals &&

		test_must_fail git merge -s recursive B^0 &&

		git ls-files -t >index_files &&
		test_cmp expected-index index_files &&

		test_path_is_file README &&
		test_path_is_file numerals &&

		test_cmp expected-merge numerals &&

		# 4 other files:
		#   * expected-merge
		#   * expected-index
		#   * index_files
		#   * others
		git ls-files -o >others &&
		test_line_count = 4 others
	)
'

test_expect_merge_algorithm failure success 'present-despite-SKIP_WORKTREE handled reasonably' '
	test_setup_numerals in_the_way &&
	(
		cd numerals_in_the_way &&

		git checkout A^0 &&

		test_path_is_file README &&
		test_path_is_file numerals &&

		git sparse-checkout init &&
		git sparse-checkout set README &&

		test_path_is_file README &&
		test_path_is_missing numerals &&

		echo foobar >numerals &&

		test_must_fail git merge -s recursive B^0 &&

		git ls-files -t >index_files &&
		test_cmp expected-index index_files &&

		test_path_is_file README &&
		test_path_is_file numerals &&

		test_cmp expected-merge numerals &&

		# There should still be a file with "foobar" in it
		grep foobar * &&

		# 5 other files:
		#   * expected-merge
		#   * expected-index
		#   * index_files
		#   * others
		#   * whatever name was given to the numerals file that had
		#     "foobar" in it
		git ls-files -o >others &&
		test_line_count = 5 others
	)
'

test_done
debug log:

solving 18975801db ...
found 18975801db in https://public-inbox.org/git/20210609192842.696646-8-felipe.contreras@gmail.com/
found 7e8bf497f8 in https://80x24.org/mirrors/git.git
preparing index
index prepared:
100755 7e8bf497f821da35e795fcc2d7b23ac0291c7106	t/t6428-merge-conflicts-sparse.sh

applying [1/1] https://public-inbox.org/git/20210609192842.696646-8-felipe.contreras@gmail.com/
diff --git a/t/t6428-merge-conflicts-sparse.sh b/t/t6428-merge-conflicts-sparse.sh
index 7e8bf497f8..18975801db 100755

Checking patch t/t6428-merge-conflicts-sparse.sh...
Applied patch t/t6428-merge-conflicts-sparse.sh cleanly.

index at:
100755 18975801db372af0fb05064e42447591d2a21628	t/t6428-merge-conflicts-sparse.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).