* [PATCH] git-revert with conflicts to behave as git-merge with conflicts
@ 2006-10-12 21:52 Luben Tuikov
2006-10-12 22:27 ` Junio C Hamano
0 siblings, 1 reply; 5+ messages in thread
From: Luben Tuikov @ 2006-10-12 21:52 UTC (permalink / raw)
To: git
[-- Attachment #1: Type: text/plain, Size: 861 bytes --]
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:
---cut---
Revert "title of reverted commit"
This reverts commit <SHA-1>
Conflicts:
<filename>
...
---cut---
Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
---
git-commit.sh | 4 ++--
git-revert.sh | 11 ++++++++++-
2 files changed, 12 insertions(+), 3 deletions(-)
[-- Attachment #2: 1207600725-p1.txt --]
[-- Type: text/plain, Size: 1624 bytes --]
diff --git a/git-commit.sh b/git-commit.sh
index 4bd0e46..81c3a0c 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -441,7 +441,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"
@@ -607,7 +607,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 4fd81b6..2e23cf4 100755
--- a/git-revert.sh
+++ b/git-revert.sh
@@ -145,9 +145,18 @@ git-read-tree -m -u --aggressive $base $
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/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"
--
1.4.3.rc2.g6f09-dirty
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] git-revert with conflicts to behave as git-merge with conflicts
2006-10-12 21:52 [PATCH] git-revert with conflicts to behave as git-merge with conflicts Luben Tuikov
@ 2006-10-12 22:27 ` Junio C Hamano
2006-10-12 23:15 ` Luben Tuikov
0 siblings, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2006-10-12 22:27 UTC (permalink / raw)
To: Luben Tuikov; +Cc: git
Luben Tuikov <ltuikov@yahoo.com> writes:
> --- a/git-commit.sh
> +++ b/git-commit.sh
> @@ -441,7 +441,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"
If you rely on MERGE_MSG then you would need to clean it after
commit is done. Currently it does not and checks MERGE_HEAD,
and cleans up MERGE_HEAD when it is done. MERGE_MSG is not
cleaned.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] git-revert with conflicts to behave as git-merge with conflicts
2006-10-12 22:27 ` Junio C Hamano
@ 2006-10-12 23:15 ` Luben Tuikov
2006-10-13 0:07 ` Junio C Hamano
0 siblings, 1 reply; 5+ messages in thread
From: Luben Tuikov @ 2006-10-12 23:15 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
--- Junio C Hamano <junkio@cox.net> wrote:
> Luben Tuikov <ltuikov@yahoo.com> writes:
>
> > --- a/git-commit.sh
> > +++ b/git-commit.sh
> > @@ -441,7 +441,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"
>
> If you rely on MERGE_MSG then you would need to clean it after
> commit is done. Currently it does not and checks MERGE_HEAD,
> and cleans up MERGE_HEAD when it is done. MERGE_MSG is not
> cleaned.
It is cleaned in the lines of the patch you deleted, the section
just after the "elif" above:
@@ -607,7 +607,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"
Luben
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] git-revert with conflicts to behave as git-merge with conflicts
2006-10-12 23:15 ` Luben Tuikov
@ 2006-10-13 0:07 ` Junio C Hamano
2006-10-13 0:31 ` Luben Tuikov
0 siblings, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2006-10-13 0:07 UTC (permalink / raw)
To: Luben Tuikov; +Cc: git
Luben Tuikov <ltuikov@yahoo.com> writes:
>> If you rely on MERGE_MSG then you would need to clean it after
>> commit is done. Currently it does not and checks MERGE_HEAD,
>> and cleans up MERGE_HEAD when it is done. MERGE_MSG is not
>> cleaned.
>
> It is cleaned in the lines of the patch you deleted, the section
> just after the "elif" above:
Ok, so I can apply that original one with your 'Oops' rolled
into one patch?
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] git-revert with conflicts to behave as git-merge with conflicts
2006-10-13 0:07 ` Junio C Hamano
@ 2006-10-13 0:31 ` Luben Tuikov
0 siblings, 0 replies; 5+ messages in thread
From: Luben Tuikov @ 2006-10-13 0:31 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
--- Junio C Hamano <junkio@cox.net> wrote:
> Luben Tuikov <ltuikov@yahoo.com> writes:
>
> >> If you rely on MERGE_MSG then you would need to clean it after
> >> commit is done. Currently it does not and checks MERGE_HEAD,
> >> and cleans up MERGE_HEAD when it is done. MERGE_MSG is not
> >> cleaned.
> >
> > It is cleaned in the lines of the patch you deleted, the section
> > just after the "elif" above:
>
> Ok, so I can apply that original one with your 'Oops' rolled
> into one patch?
Yes please.
Luben
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-10-13 0:31 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-12 21:52 [PATCH] git-revert with conflicts to behave as git-merge with conflicts Luben Tuikov
2006-10-12 22:27 ` Junio C Hamano
2006-10-12 23:15 ` Luben Tuikov
2006-10-13 0:07 ` Junio C Hamano
2006-10-13 0:31 ` Luben Tuikov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).