From: Dan Holmsand <holmsand@gmail.com>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: 'git commit' duplicates parents?
Date: Mon, 20 Jun 2005 20:52:38 +0200 [thread overview]
Message-ID: <42B71076.1050904@gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.58.0506201040140.2268@ppc970.osdl.org>
[-- Attachment #1: Type: text/plain, Size: 1026 bytes --]
Linus Torvalds wrote:
>
> [ Side note: I should make "git-resolve-script" run "git-rev-parse" on its
> arguments, so that it would expand HEAD and MERGE_HEAD on its own. Maybe
> somebody who is interested in this script might want to do that? Hint
> hint. ]
Got it. Included below.
> Note how we could make both of us happy by saving that temporary
> MERGE_HEAD information somewhere _else_ instead. Maybe the answer is to
> only use "MERGE_HEAD" for the "merge manually" case, and use something
> else for the "this was the merge you tried to do last" case?
I like the "everybody happy" idea...
How about "LAST_MERGE"? And something like this?
/dan
---
[PATCH] git-resolve-script: Add LAST_MERGE and use git-rev-parse
Make git-resolve-script only write MERGE_HEAD if a merge actually
occurred. All merge failures leave ORIG_HEAD and LAST_MERGE
behind (instead of ORIG_HEAD and MERGE_HEAD).
Use git-rev-parse to expand arguments (and check for bad ones).
Signed-off-by: Dan Holmsand <holmsand@gmail.com>
[-- Attachment #2: git-resolve-script.patch2.txt --]
[-- Type: text/plain, Size: 2096 bytes --]
diff --git a/git-resolve-script b/git-resolve-script
--- a/git-resolve-script
+++ b/git-resolve-script
@@ -4,26 +4,31 @@
#
# Resolve two trees.
#
-head="$1"
-merge="$2"
+head=$(git-rev-parse --revs-only "$1")
+merge=$(git-rev-parse --revs-only "$2")
merge_repo="$3"
: ${GIT_DIR=.git}
: ${GIT_OBJECT_DIRECTORY="${SHA1_FILE_DIRECTORY-"$GIT_DIR/objects"}"}
-rm -f "$GIT_DIR"/MERGE_HEAD "$GIT_DIR"/ORIG_HEAD
-echo $head > "$GIT_DIR"/ORIG_HEAD
-echo $merge > "$GIT_DIR"/MERGE_HEAD
+dropheads() {
+ rm -f -- "$GIT_DIR/ORIG_HEAD" "$GIT_DIR/MERGE_HEAD" \
+ "$GIT_DIR/LAST_MERGE" || exit 1
+}
#
# The remote name is just used for the message,
# but we do want it.
#
-if [ "$merge_repo" == "" ]; then
+if [ -z "$head" -o -z "$merge" -o -z "$merge_repo" ]; then
echo "git-resolve-script <head> <remote> <merge-repo-name>"
exit 1
fi
+dropheads
+echo $head > "$GIT_DIR"/ORIG_HEAD
+echo $merge > "$GIT_DIR"/LAST_MERGE
+
common=$(git-merge-base $head $merge)
if [ -z "$common" ]; then
echo "Unable to find common commit between" $merge $head
@@ -32,7 +37,7 @@ fi
if [ "$common" == "$merge" ]; then
echo "Already up-to-date. Yeeah!"
- rm -f -- "$GIT_DIR/ORIG_HEAD" "$GIT_DIR/MERGE_HEAD"
+ dropheads
exit 0
fi
if [ "$common" == "$head" ]; then
@@ -40,7 +45,7 @@ if [ "$common" == "$head" ]; then
git-read-tree -u -m $head $merge || exit 1
echo $merge > "$GIT_DIR"/HEAD
git-diff-tree -p ORIG_HEAD HEAD | git-apply --stat
- rm -f -- "$GIT_DIR/ORIG_HEAD" "$GIT_DIR/MERGE_HEAD"
+ dropheads
exit 0
fi
echo "Trying to merge $merge into $head"
@@ -51,6 +56,7 @@ if [ $? -ne 0 ]; then
echo "Simple merge failed, trying Automatic merge"
git-merge-cache -o git-merge-one-file-script -a
if [ $? -ne 0 ]; then
+ echo $merge > "$GIT_DIR"/MERGE_HEAD
echo "Automatic merge failed, fix up by hand"
exit 1
fi
@@ -60,4 +66,4 @@ result_commit=$(echo "$merge_msg" | git-
echo "Committed merge $result_commit"
echo $result_commit > "$GIT_DIR"/HEAD
git-diff-tree -p $head $result_commit | git-apply --stat
-rm -f -- "$GIT_DIR/ORIG_HEAD" "$GIT_DIR/MERGE_HEAD"
+dropheads
prev parent reply other threads:[~2005-06-20 18:48 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-19 16:27 'git commit' duplicates parents? Jeff Garzik
2005-06-19 16:32 ` Jeff Garzik
2005-06-20 2:24 ` Linus Torvalds
2005-06-20 2:28 ` Jeff Garzik
2005-06-20 2:33 ` Linus Torvalds
2005-06-20 2:40 ` Jeff Garzik
2005-06-20 3:00 ` Linus Torvalds
2005-06-20 9:48 ` Dan Holmsand
2005-06-20 15:11 ` Linus Torvalds
2005-06-20 17:20 ` Dan Holmsand
2005-06-20 17:44 ` Linus Torvalds
2005-06-20 18:52 ` Dan Holmsand [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=42B71076.1050904@gmail.com \
--to=holmsand@gmail.com \
--cc=git@vger.kernel.org \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).