Merge branch 'bc/maint-am-email' into maint
* bc/maint-am-email: git-am: print fair error message when format detection fails am: allow individual e-mail files as input
This commit is contained in:
		
							
								
								
									
										18
									
								
								git-am.sh
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								git-am.sh
									
									
									
									
									
								
							@ -191,6 +191,20 @@ check_patch_format () {
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		esac
 | 
			
		||||
		if test -z "$patch_format" &&
 | 
			
		||||
			test -n "$l1" &&
 | 
			
		||||
			test -n "$l2" &&
 | 
			
		||||
			test -n "$l3"
 | 
			
		||||
		then
 | 
			
		||||
			# This begins with three non-empty lines.  Is this a
 | 
			
		||||
			# piece of e-mail a-la RFC2822?  Grab all the headers,
 | 
			
		||||
			# discarding the indented remainder of folded lines,
 | 
			
		||||
			# and see if it looks like that they all begin with the
 | 
			
		||||
			# header field names...
 | 
			
		||||
			sed -n -e '/^$/q' -e '/^[ 	]/d' -e p "$1" |
 | 
			
		||||
			egrep -v '^[A-Za-z]+(-[A-Za-z]+)*:' >/dev/null ||
 | 
			
		||||
			patch_format=mbox
 | 
			
		||||
		fi
 | 
			
		||||
	} < "$1" || clean_abort
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -254,7 +268,11 @@ split_patches () {
 | 
			
		||||
		msgnum=
 | 
			
		||||
		;;
 | 
			
		||||
	*)
 | 
			
		||||
		if test -n "$parse_patch" ; then
 | 
			
		||||
			clean_abort "Patch format $patch_format is not supported."
 | 
			
		||||
		else
 | 
			
		||||
			clean_abort "Patch format detection failed."
 | 
			
		||||
		fi
 | 
			
		||||
		;;
 | 
			
		||||
	esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -77,6 +77,12 @@ test_expect_success setup '
 | 
			
		||||
	git commit -s -F msg &&
 | 
			
		||||
	git tag second &&
 | 
			
		||||
	git format-patch --stdout first >patch1 &&
 | 
			
		||||
	{
 | 
			
		||||
		echo "X-Fake-Field: Line One" &&
 | 
			
		||||
		echo "X-Fake-Field: Line Two" &&
 | 
			
		||||
		echo "X-Fake-Field: Line Three" &&
 | 
			
		||||
		git format-patch --stdout first | sed -e "1d"
 | 
			
		||||
	} > patch1.eml &&
 | 
			
		||||
	sed -n -e "3,\$p" msg >file &&
 | 
			
		||||
	git add file &&
 | 
			
		||||
	test_tick &&
 | 
			
		||||
@ -108,6 +114,15 @@ test_expect_success 'am applies patch correctly' '
 | 
			
		||||
	test "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"
 | 
			
		||||
'
 | 
			
		||||
 | 
			
		||||
test_expect_success 'am applies patch e-mail not in a mbox' '
 | 
			
		||||
	git checkout first &&
 | 
			
		||||
	git am patch1.eml &&
 | 
			
		||||
	! test -d .git/rebase-apply &&
 | 
			
		||||
	test -z "$(git diff second)" &&
 | 
			
		||||
	test "$(git rev-parse second)" = "$(git rev-parse HEAD)" &&
 | 
			
		||||
	test "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"
 | 
			
		||||
'
 | 
			
		||||
 | 
			
		||||
GIT_AUTHOR_NAME="Another Thor"
 | 
			
		||||
GIT_AUTHOR_EMAIL="a.thor@example.com"
 | 
			
		||||
GIT_COMMITTER_NAME="Co M Miter"
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user