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>maint
							parent
							
								
									1974bf620b
								
							
						
					
					
						commit
						a9cb3c6ecb
					
				|  | @ -466,7 +466,7 @@ then | ||||||
| elif test "$use_commit" != "" | elif test "$use_commit" != "" | ||||||
| then | then | ||||||
| 	git-cat-file commit "$use_commit" | sed -e '1,/^$/d' | 	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 | then | ||||||
| 	cat "$GIT_DIR/MERGE_MSG" | 	cat "$GIT_DIR/MERGE_MSG" | ||||||
| elif test -f "$GIT_DIR/SQUASH_MSG" | elif test -f "$GIT_DIR/SQUASH_MSG" | ||||||
|  | @ -632,7 +632,7 @@ then | ||||||
| 	commit=$(cat "$GIT_DIR"/COMMIT_MSG | git-commit-tree $tree $PARENTS) && | 	commit=$(cat "$GIT_DIR"/COMMIT_MSG | git-commit-tree $tree $PARENTS) && | ||||||
| 	rlogm=$(sed -e 1q "$GIT_DIR"/COMMIT_MSG) && | 	rlogm=$(sed -e 1q "$GIT_DIR"/COMMIT_MSG) && | ||||||
| 	git-update-ref -m "$rloga: $rlogm" HEAD $commit "$current" && | 	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" | 	if test -f "$NEXT_INDEX" | ||||||
| 	then | 	then | ||||||
| 		mv "$NEXT_INDEX" "$THIS_INDEX" | 		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) || { | result=$(git-write-tree 2>/dev/null) || { | ||||||
|     echo >&2 "Simple $me fails; trying Automatic $me." |     echo >&2 "Simple $me fails; trying Automatic $me." | ||||||
|     git-merge-index -o git-merge-one-file -a || { |     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 "Automatic $me failed.  After resolving the conflicts," | ||||||
| 	    echo >&2 "mark the corrected paths with 'git-update-index <paths>'" | 	    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 | 	    case "$me" in | ||||||
| 	    cherry-pick) | 	    cherry-pick) | ||||||
| 		echo >&2 "You may choose to use the following when making" | 		echo >&2 "You may choose to use the following when making" | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Luben Tuikov
						Luben Tuikov