Thread (3 messages) flat view 3 messages, 3 authors, 2016-06-15

Re: [RFC/PATCH 2/4] Restructuring git-merge.sh

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:44:26

"Sverre Hvammen Johansen" [off-list ref] writes:
for preparation of new feature:
Full sentence, please?
quoted hunk ↗ jump to hunk
   Head reduction before selecting merge strategy

Signed-off-by: Sverre Hvammen Johansen <redacted>
---
 git-merge.sh |  166 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 85 insertions(+), 81 deletions(-)
diff --git a/git-merge.sh b/git-merge.sh
index 17f40f2..2acd2cc 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -207,6 +207,29 @@ parse_config () {
        args_left=$#
 }

+# Find real parents
+# Set the following variables as followd:
+#   real_parents: The parents specified on the command line
+#   common:       All common ancestors or not_queried
+#   ff_head:      Fast forward of head
"Fast forward of head"?  Puzzled, and sorry I cannot offer a better
rewrite for this one as I do not quite get what you are trying to say
here.
+find_real_parents () {
+       real_parents=$(git rev-parse "$@")
+       real_parents=${real_parents#$LF}
What is this "#$LF" for?  rev-parse begins its output with an empty line
and you want to strip it?
+       if test $# = 1
+       then
+               common=$(git merge-base --all $head "$@")
+               if test "$common" = $head
+               then
+                       ff_head=$1
+               else
+                       ff_head=$head
+               fi
So for a single-remote merge, merge-base is run and common is set.
quoted hunk ↗ jump to hunk
@@ -339,87 +364,66 @@ do
+if true
+then
This caught my attention before looking at 3/4 ;-).
-       # An octopus.  If we can reach all the remote we are up to date.
-       up_to_date=t
-       for remote
-       do
-               common_one=$(git merge-base --all $head $remote)
-               if test "$common_one" != "$remote"
                then
-                       up_to_date=f
-                       break
                fi
-       done
-       if test "$up_to_date" = t
-       then
-               finish_up_to_date "Already up-to-date. Yeeah!"
                exit 0
        fi
This optimization seems to have been lost, even though it was supposed to
be just code restructuring.
+fi
+
+case "$real_parents" in
+?*"$LF"?*)
+       # We have more than one parent
+       common=$(git show-branch --merge-base $head $real_parents)
        ;;
+*)
+       # We have exactly one parent
+       test "$common" != not_queried || common=$(git merge-base --all
$head $real_parents)
How can "not_queried" be possible here?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help