Restore prefer-rebase to its previous behavior--still working on tests.
[git-central.git] / server / update-prefer-rebase
index 318536b..fab594d 100644 (file)
@@ -5,34 +5,37 @@
 # If they are introducing non-merge commits /and/ merge commits, it could
 # look like one of two ways. This way:
 #
-# * --- B --- * --- oldrev
-#        \             \
-#        new --- new --- newrev
+# A -- B             <-- origin/topic
+#  \    \
+#   c -- d           <-- topic
 #
 # They basically had an un-shared local dev branch (probably by making a
 # merge) and instead should have done a rebase. Also, if they did:
 #
-# * --- B --- * --- oldrev
-#        \             \
-#        new --- new --- new -- newrev
+# A -- B             <-- origin/topic
+#  \    \
+#   c -- d -- e      <-- topic
 #
 # We should try and catch them--where the merge happened previously to
 # them doing more work in the newrev commit.
 #
 # But if it looks like:
 #
-# * --- B --- * --- oldrev
-#        \              \
-#        old --- new --- newrev
+# A -- B             <-- origin/foo
+#  \    \
+#   C    \           <-- origin/topic
+#    \    \
+#     d -- e         <-- topic
 #
 # Then they had a pre-shared branch that cannot be rebased and so they
 # were correct in doing a merge to tie "old" and "oldrev" together.
 #
 # Also, we obviously have to be okay with:
 #
-# * --- * --- * --- oldrev --- new --- new --- newrev
+# A -- B            <-- origin/topic
+#       \
+#        c -- d     <-- topic
 
-# Command line
 refname="$1"
 oldrev="$2"
 newrev="$3"
@@ -59,7 +62,10 @@ git rev-parse --not --branches | git rev-list --stdin $oldrev..$newrev | while r
                        git rev-list -n 1 --parents $commit | sed 's/ /\n/g' | grep -v $commit | while read parent ; do
                                all_commits=$(git rev-list --first-parent $baserev..$parent | wc -l)
                                new_commits=$(git rev-parse --not --branches | git rev-list --stdin $baserev..$parent | wc -l)
-                               if [[ $all_commits -eq $new_commits ]] ; then
+                               if [ $all_commits -eq $new_commits ] ; then
+                                       # echo "parent=$parent"
+                                       # echo "all_commits=$all_commits"
+                                       # echo "new_commits=$new_commits"
                                        echo "----------------------------------------------------"
                                        echo
                                        echo "It looks like you should rebase instead of merging $commit"