Merge branch 'jk/merge-file-exit-code'
"git merge-file" tried to signal how many conflicts it found, which obviously would not work well when there are too many of them. * jk/merge-file-exit-code: merge-file: clamp exit code to maximum 127maint
						commit
						54bc41416c
					
				|  | @ -41,7 +41,8 @@ lines from `<other-file>`, or lines from both respectively.  The length of the | |||
| conflict markers can be given with the `--marker-size` option. | ||||
|  | ||||
| The exit value of this program is negative on error, and the number of | ||||
| conflicts otherwise. If the merge was clean, the exit value is 0. | ||||
| conflicts otherwise (truncated to 127 if there are more than that many | ||||
| conflicts). If the merge was clean, the exit value is 0. | ||||
|  | ||||
| 'git merge-file' is designed to be a minimal clone of RCS 'merge'; that is, it | ||||
| implements all of RCS 'merge''s functionality which is needed by | ||||
|  |  | |||
|  | @ -104,5 +104,8 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix) | |||
| 		free(result.ptr); | ||||
| 	} | ||||
|  | ||||
| 	if (ret > 127) | ||||
| 		ret = 127; | ||||
|  | ||||
| 	return ret; | ||||
| } | ||||
|  |  | |||
|  | @ -692,4 +692,37 @@ test_expect_success GPG 'merge --no-edit tag should skip editor' ' | |||
| 	test_cmp actual expect | ||||
| ' | ||||
|  | ||||
| test_expect_success 'set up mod-256 conflict scenario' ' | ||||
| 	# 256 near-identical stanzas... | ||||
| 	for i in $(test_seq 1 256); do | ||||
| 		for j in 1 2 3 4 5; do | ||||
| 			echo $i-$j | ||||
| 		done | ||||
| 	done >file && | ||||
| 	git add file && | ||||
| 	git commit -m base && | ||||
|  | ||||
| 	# one side changes the first line of each to "master" | ||||
| 	sed s/-1/-master/ <file >tmp && | ||||
| 	mv tmp file && | ||||
| 	git commit -am master && | ||||
|  | ||||
| 	# and the other to "side"; merging the two will | ||||
| 	# yield 256 separate conflicts | ||||
| 	git checkout -b side HEAD^ && | ||||
| 	sed s/-1/-side/ <file >tmp && | ||||
| 	mv tmp file && | ||||
| 	git commit -am side | ||||
| ' | ||||
|  | ||||
| test_expect_success 'merge detects mod-256 conflicts (recursive)' ' | ||||
| 	git reset --hard && | ||||
| 	test_must_fail git merge -s recursive master | ||||
| ' | ||||
|  | ||||
| test_expect_success 'merge detects mod-256 conflicts (resolve)' ' | ||||
| 	git reset --hard && | ||||
| 	test_must_fail git merge -s resolve master | ||||
| ' | ||||
|  | ||||
| test_done | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano