summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Luben Tuikov <ltuikov@yahoo.com>2006-10-12 14:52:42 -0700
committerLibravatar Junio C Hamano <junkio@cox.net>2006-10-15 23:06:31 -0700
commita9cb3c6ecb97c4734423045f47899e03f135d3bd (patch)
treefa2f08dac9932d1d5e20bedcecc2e40e17bc2d25
parentcore.logallrefupdates thinko-fix (diff)
downloadtgif-a9cb3c6ecb97c4734423045f47899e03f135d3bd.tar.xz
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>
-rwxr-xr-xgit-commit.sh4
-rwxr-xr-xgit-revert.sh11
2 files changed, 12 insertions, 3 deletions
diff --git a/git-commit.sh b/git-commit.sh
index ee5a165e74..8ac8dcc348 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -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"
diff --git a/git-revert.sh b/git-revert.sh
index 2bf35d116c..066e67753e 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"