FEATURE REQUEST: Announce branch name with merge comamnd

6 messages, 4 authors, 2016-06-15 · open the first message on its own page

FEATURE REQUEST: Announce branch name with merge comamnd

From: Jari Aalto <hidden>
Date: 2016-06-15 22:47:54

Doing octopus merge results:

    $ git merge ...

    Trying simple merge with c87c49b1e413e5dc378d7e6b16951761a1e82f6d
    Trying simple merge with b650c8c8809ef493ad4128fc941ed6b520c82f28
    Trying simple merge with 047f83d6c8a08c4016004780e94257d9e487b7e6
    Simple merge did not work, trying automatic merge.
    Auto-merging example.jwmrc
    Trying simple merge with 16860b016e198acd0814492092e2ad5ea88fb219
    Simple merge did not work, trying automatic merge.
    Auto-merging example.jwmrc
    Trying simple merge with 9a397ff24a381ce49dd093c4f51c06c4c62f3ce7
    Simple merge did not work, trying automatic merge.
    ...

SUGGESTION

Please announce the branch name being merged so that the listing is
easier to follow (possibly only with --verbose, -v option). Add
"Branch: <name>" just before the merge is attempted. somethiglike this

    Branch: bug--manpage-fix-hyphen
    Trying simple merge with c87c49b1e413e5dc378d7e6b16951761a1e82f6d
    Branch: bug--manpage-fix-TH
    Trying simple merge with b650c8c8809ef493ad4128fc941ed6b520c82f28
    Branch: bug-manpage-change-binary-name
    Trying simple merge with 047f83d6c8a08c4016004780e94257d9e487b7e6
    Branch: feature--example.jwmrc-change-browser
    Simple merge did not work, trying automatic merge.
    Auto-merging example.jwmrc
    Branch: feature--example.jwmrc-change-clock
    Trying simple merge with 16860b016e198acd0814492092e2ad5ea88fb219
    Simple merge did not work, trying automatic merge.
    Auto-merging example.jwmrc
    Branch: feature--example.jwmrc-change-font
    Trying simple merge with 9a397ff24a381ce49dd093c4f51c06c4c62f3ce7
    Simple merge did not work, trying automatic merge.
    ...

[PATCH 2/3] octopus: reenable fast-forward merges

From: Stephen Boyd <hidden>
Date: 2016-06-15 22:47:54

The fast-forward logic is never being triggered because $common and
$MRC are never equivalent. $common is initialized to a commit id by
merge-base and MRC is initialized to HEAD. Fix this by initializing
$MRC to the commit id for HEAD so that its possible for $MRC and
$common to be equal.

Signed-off-by: Stephen Boyd <redacted>
---

Found this while making tests up for part 1 of this series.

 git-merge-octopus.sh          |    2 +-
 t/t7602-merge-octopus-many.sh |   18 ++++++++++++++++++
 2 files changed, 19 insertions(+), 1 deletions(-)
diff --git a/git-merge-octopus.sh b/git-merge-octopus.sh
index 1c8ee0a..99b6f8a 100755
--- a/git-merge-octopus.sh
+++ b/git-merge-octopus.sh
@@ -44,7 +44,7 @@ esac
 # MRC is the current "merge reference commit"
 # MRT is the current "merge result tree"
 
-MRC=$head MSG= PARENT="-p $head"
+MRC=$(git rev-parse --verify -q $head) MSG= PARENT="-p $head"
 MRT=$(git write-tree)
 CNT=1 ;# counting our head
 NON_FF_MERGE=0
diff --git a/t/t7602-merge-octopus-many.sh b/t/t7602-merge-octopus-many.sh
index 7377033..2746169 100755
--- a/t/t7602-merge-octopus-many.sh
+++ b/t/t7602-merge-octopus-many.sh
@@ -82,4 +82,22 @@ test_expect_success 'merge up-to-date output uses pretty names' '
 	git merge c4 c5 >actual &&
 	test_cmp actual expected
 '
+
+cat >expected <<\EOF
+Fast-forwarding to: c1
+Trying simple merge with c2
+Merge made by octopus.
+ c1.c |    1 +
+ c2.c |    1 +
+ 2 files changed, 2 insertions(+), 0 deletions(-)
+ create mode 100644 c1.c
+ create mode 100644 c2.c
+EOF
+
+test_expect_success 'merge fast-forward output uses pretty names' '
+	git reset --hard c0 &&
+	git merge c1 c2 >actual &&
+	test_cmp actual expected
+'
+
 test_done
-- 
1.6.6.rc1.45.g9aadbb

[PATCH 1/3] octopus: make merge process simpler to follow

From: Stephen Boyd <hidden>
Date: 2016-06-15 22:47:54

Its not very easy to understand what heads are being merged given
the current output of an octopus merge. Fix this by replacing the
sha1 with the (usually) better description in GITHEAD_<SHA1>.

Suggested-by: Jari Aalto <redacted>
Signed-off-by: Stephen Boyd <redacted>
---

Maybe this will work? At least it will replace the sha1 with
whatever is given on the command line.

 git-merge-octopus.sh          |    9 +++++----
 t/t7602-merge-octopus-many.sh |   33 +++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 4 deletions(-)
diff --git a/git-merge-octopus.sh b/git-merge-octopus.sh
index 825c52c..1c8ee0a 100755
--- a/git-merge-octopus.sh
+++ b/git-merge-octopus.sh
@@ -61,12 +61,13 @@ do
 		exit 2
 	esac
 
+	pretty_name="$(eval echo \$GITHEAD_$SHA1)"
 	common=$(git merge-base --all $SHA1 $MRC) ||
-		die "Unable to find common commit with $SHA1"
+		die "Unable to find common commit with $pretty_name"
 
 	case "$LF$common$LF" in
 	*"$LF$SHA1$LF"*)
-		echo "Already up-to-date with $SHA1"
+		echo "Already up-to-date with $pretty_name"
 		continue
 		;;
 	esac
@@ -81,7 +82,7 @@ do
 		# tree as the intermediate result of the merge.
 		# We still need to count this as part of the parent set.
 
-		echo "Fast-forwarding to: $SHA1"
+		echo "Fast-forwarding to: $pretty_name"
 		git read-tree -u -m $head $SHA1 || exit
 		MRC=$SHA1 MRT=$(git write-tree)
 		continue
@@ -89,7 +90,7 @@ do
 
 	NON_FF_MERGE=1
 
-	echo "Trying simple merge with $SHA1"
+	echo "Trying simple merge with $pretty_name"
 	git read-tree -u -m --aggressive  $common $MRT $SHA1 || exit 2
 	next=$(git write-tree 2>/dev/null)
 	if test $? -ne 0
diff --git a/t/t7602-merge-octopus-many.sh b/t/t7602-merge-octopus-many.sh
index 01e5415..7377033 100755
--- a/t/t7602-merge-octopus-many.sh
+++ b/t/t7602-merge-octopus-many.sh
@@ -49,4 +49,37 @@ test_expect_success 'merge c1 with c2, c3, c4, ... c29' '
 	done
 '
 
+cat >expected <<\EOF
+Trying simple merge with c2
+Trying simple merge with c3
+Trying simple merge with c4
+Merge made by octopus.
+ c2.c |    1 +
+ c3.c |    1 +
+ c4.c |    1 +
+ 3 files changed, 3 insertions(+), 0 deletions(-)
+ create mode 100644 c2.c
+ create mode 100644 c3.c
+ create mode 100644 c4.c
+EOF
+
+test_expect_success 'merge output uses pretty names' '
+	git reset --hard c1 &&
+	git merge c2 c3 c4 >actual &&
+	test_cmp actual expected
+'
+
+cat >expected <<\EOF
+Already up-to-date with c4
+Trying simple merge with c5
+Merge made by octopus.
+ c5.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+ create mode 100644 c5.c
+EOF
+
+test_expect_success 'merge up-to-date output uses pretty names' '
+	git merge c4 c5 >actual &&
+	test_cmp actual expected
+'
 test_done
-- 
1.6.6.rc1.45.g9aadbb

[PATCH 3/3] octopus: remove dead code

From: Stephen Boyd <hidden>
Date: 2016-06-15 22:47:54

MSG, PARENT, and CNT are never used, just assigned to.

Signed-off-by: Stephen Boyd <redacted>
---

I don't know if this is wanted. Looks like maybe they're used
as simple debug aides?

 git-merge-octopus.sh |    6 +-----
 1 files changed, 1 insertions(+), 5 deletions(-)
diff --git a/git-merge-octopus.sh b/git-merge-octopus.sh
index 99b6f8a..3cb0b31 100755
--- a/git-merge-octopus.sh
+++ b/git-merge-octopus.sh
@@ -44,9 +44,8 @@ esac
 # MRC is the current "merge reference commit"
 # MRT is the current "merge result tree"
 
-MRC=$(git rev-parse --verify -q $head) MSG= PARENT="-p $head"
+MRC=$(git rev-parse --verify -q $head)
 MRT=$(git write-tree)
-CNT=1 ;# counting our head
 NON_FF_MERGE=0
 OCTOPUS_FAILURE=0
 for SHA1 in $remotes
@@ -72,9 +71,6 @@ do
 		;;
 	esac
 
-	CNT=`expr $CNT + 1`
-	PARENT="$PARENT -p $SHA1"
-
 	if test "$common,$NON_FF_MERGE" = "$MRC,0"
 	then
 		# The first head being merged was a fast-forward.
-- 
1.6.6.rc1.45.g9aadbb

Re: FEATURE REQUEST: Announce branch name with merge comamnd

From: Alex Riesen <hidden>
Date: 2016-06-15 22:47:54

On Fri, Dec 11, 2009 at 19:55, Jari Aalto [off-list ref] wrote:
Please announce the branch name being merged so that the listing is
easier to follow (possibly only with --verbose, -v option). Add
"Branch: <name>" just before the merge is attempted. somethiglike this

   Branch: bug--manpage-fix-hyphen
   Trying simple merge with c87c49b1e413e5dc378d7e6b16951761a1e82f6d
It is not exactly "easier" to follow in your case. It is more
text and there is no immediately visible cue that the two
lines are related. You have to give the observer this information.
Put reference name and SHA-1 on the same line?

Re: [PATCH 1/3] octopus: make merge process simpler to follow

From: Johannes Sixt <hidden>
Date: 2016-06-15 22:47:54

On Samstag, 12. Dezember 2009, Stephen Boyd wrote:
+	pretty_name="$(eval echo \$GITHEAD_$SHA1)"
	eval pretty_name=\$GITHEAD_$SHA1

:)

-- Hannes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help