Commit Diff


commit - dbc68eedb1de26bf5a444ecad5150b0a243d422b
commit + 9802c41ca727979975e9ee6fbd898dfec7f283c4
blob - 9d65d8aa6b3211dfb9e231199f0bc3e522f4dfa8
blob + 6e54669dd487e962e60aabbc77043a09b250bd99
--- got/got.1
+++ got/got.1
@@ -1333,6 +1333,8 @@ contains multiple patches, then attempt to apply each 
 Show the status of each affected file, using the following status codes:
 .Bl -column XYZ description
 .It M Ta file was modified
+.It G Ta file was merged using a merge-base found in the repository
+.It C Ta file was merged and conflicts occurred during merge
 .It D Ta file was deleted
 .It A Ta file was added
 .It # Ta failed to patch the file
blob - 1fc82c6604c60d1e3961f7d6670b26b781db97cc
blob + 965f8606f5dc0febfa47fceeba356519258f1021
--- lib/patch.c
+++ lib/patch.c
@@ -777,6 +777,8 @@ apply_patch(int *overlapcnt, struct got_worktree *work
 			unlink(newpath);
 	} else if (*overlapcnt != 0)
 		err = report_progress(pa, old, new, GOT_STATUS_CONFLICT, NULL);
+	else if (do_merge)
+		err = report_progress(pa, old, new, GOT_STATUS_MERGE, NULL);
 	else
 		err = report_progress(pa, old, new, GOT_STATUS_MODIFY, NULL);
 
blob - 5d79b58c66cb3e7160cfdb8ce13e13901219e70e
blob + 9fb1dd39304f1cd716283dd5684a1162ee8f745c
--- regress/cmdline/patch.sh
+++ regress/cmdline/patch.sh
@@ -1482,9 +1482,18 @@ test_patch_merge_simple() {
 	fi
 
 	(cd $testroot/wt && got patch $testroot/old.diff) \
-		2>&1 > /dev/null
+		> $testroot/stdout
 	ret=$?
 	if [ $ret -ne 0 ]; then
+		test_done $testroot $ret
+		return 1
+	fi
+
+	echo 'G  numbers' > $testroot/stdout.expected
+	cmp -s $testroot/stdout $testroot/stdout.expected
+	ret=$?
+	if [ $ret -ne 0 ]; then
+		diff -u $testroot/stdout $testroot/stdout.expected
 		test_done $testroot $ret
 		return 1
 	fi
@@ -1539,7 +1548,7 @@ test_patch_merge_conflict() {
 	fi
 
 	(cd $testroot/wt && got patch $testroot/old.diff) \
-		>/dev/null 2>&1
+		> $testroot/stdout 2>/dev/null
 	ret=$?
 	if [ $ret -eq 0 ]; then
 		echo "got patch merged a diff that should conflict" >&2
@@ -1547,6 +1556,15 @@ test_patch_merge_conflict() {
 		return 1
 	fi
 
+	echo 'C  numbers' > $testroot/stdout.expected
+	cmp -s $testroot/stdout $testroot/stdout.expected
+	ret=$?
+	if [ $ret -ne 0 ]; then
+		diff -u $testroot/stdout $testroot/stdout.expected
+		test_done $testroot $ret
+		return 1
+	fi
+
 	# XXX: prefixing every line with a tab otherwise got thinks
 	# the file has conflicts in it.
 	cat <<-EOF > $testroot/wt/numbers.expected