summaryrefslogtreecommitdiff
path: root/git-revert.sh
diff options
context:
space:
mode:
authorLuben Tuikov <ltuikov@yahoo.com>2006-10-12 21:52:42 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-10-16 06:06:31 (GMT)
commita9cb3c6ecb97c4734423045f47899e03f135d3bd (patch)
treefa2f08dac9932d1d5e20bedcecc2e40e17bc2d25 /git-revert.sh
parent1974bf620b436b014bfe86179ff76485610a4887 (diff)
downloadgit-a9cb3c6ecb97c4734423045f47899e03f135d3bd.zip
git-a9cb3c6ecb97c4734423045f47899e03f135d3bd.tar.gz
git-a9cb3c6ecb97c4734423045f47899e03f135d3bd.tar.bz2
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>
Diffstat (limited to 'git-revert.sh')
-rwxr-xr-xgit-revert.sh11
1 files changed, 10 insertions, 1 deletions
diff --git a/git-revert.sh b/git-revert.sh
index 2bf35d1..066e677 100755
--- a/git-revert.sh
+++ b/git-revert.sh
@@ -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"