git-revert with conflicts to behave as git-merge with conflicts
In a busy project, reverting a commit almost always results in a conflict between one or more files (depending on the commit being reverted). It is useful to record this conflict in the commit-to-be message of the resulting commit (after the resolve). The process now becomes: git-revert <SHA-1> <git complains and prints failed automatic> <user manually resolves> git-update-index <resolved files> git-commit -s And the commit message is now a merge of the revert commit message and the conflict commit message, giving the user a chance to edit it or add more information: Signed-off-by: Luben Tuikov <ltuikov@yahoo.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
		
				
					committed by
					
						
						Junio C Hamano
					
				
			
			
				
	
			
			
			
						parent
						
							1974bf620b
						
					
				
				
					commit
					a9cb3c6ecb
				
			@ -466,7 +466,7 @@ then
 | 
			
		||||
elif test "$use_commit" != ""
 | 
			
		||||
then
 | 
			
		||||
	git-cat-file commit "$use_commit" | sed -e '1,/^$/d'
 | 
			
		||||
elif test -f "$GIT_DIR/MERGE_HEAD" && test -f "$GIT_DIR/MERGE_MSG"
 | 
			
		||||
elif test -f "$GIT_DIR/MERGE_MSG"
 | 
			
		||||
then
 | 
			
		||||
	cat "$GIT_DIR/MERGE_MSG"
 | 
			
		||||
elif test -f "$GIT_DIR/SQUASH_MSG"
 | 
			
		||||
@ -632,7 +632,7 @@ then
 | 
			
		||||
	commit=$(cat "$GIT_DIR"/COMMIT_MSG | git-commit-tree $tree $PARENTS) &&
 | 
			
		||||
	rlogm=$(sed -e 1q "$GIT_DIR"/COMMIT_MSG) &&
 | 
			
		||||
	git-update-ref -m "$rloga: $rlogm" HEAD $commit "$current" &&
 | 
			
		||||
	rm -f -- "$GIT_DIR/MERGE_HEAD" &&
 | 
			
		||||
	rm -f -- "$GIT_DIR/MERGE_HEAD" "$GIT_DIR/MERGE_MSG" &&
 | 
			
		||||
	if test -f "$NEXT_INDEX"
 | 
			
		||||
	then
 | 
			
		||||
		mv "$NEXT_INDEX" "$THIS_INDEX"
 | 
			
		||||
 | 
			
		||||
@ -141,9 +141,18 @@ git-read-tree -m -u --aggressive $base $head $next &&
 | 
			
		||||
result=$(git-write-tree 2>/dev/null) || {
 | 
			
		||||
    echo >&2 "Simple $me fails; trying Automatic $me."
 | 
			
		||||
    git-merge-index -o git-merge-one-file -a || {
 | 
			
		||||
	    mv -f .msg "$GIT_DIR/MERGE_MSG"
 | 
			
		||||
	    {
 | 
			
		||||
		echo '
 | 
			
		||||
Conflicts:
 | 
			
		||||
'
 | 
			
		||||
		git ls-files --unmerged |
 | 
			
		||||
		sed -e 's/^[^	]*	/	/' |
 | 
			
		||||
		uniq
 | 
			
		||||
	    } >>"$GIT_DIR/MERGE_MSG"
 | 
			
		||||
	    echo >&2 "Automatic $me failed.  After resolving the conflicts,"
 | 
			
		||||
	    echo >&2 "mark the corrected paths with 'git-update-index <paths>'"
 | 
			
		||||
	    echo >&2 "and commit with 'git commit -F .msg'"
 | 
			
		||||
	    echo >&2 "and commit the result."
 | 
			
		||||
	    case "$me" in
 | 
			
		||||
	    cherry-pick)
 | 
			
		||||
		echo >&2 "You may choose to use the following when making"
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user