Fix missing tabs.
[git-central.git] / server / update-prefer-rebase
index 79c3bef..9265dd5 100644 (file)
@@ -32,7 +32,6 @@
 #
 # * --- * --- * --- oldrev --- new --- new --- newrev
 
-# Command line
 refname="$1"
 oldrev="$2"
 newrev="$3"
@@ -52,19 +51,27 @@ git rev-parse --not --branches | git rev-list --stdin $oldrev..$newrev | while r
 
                # Find the original branch point (B)
                parents=$(git rev-list -n 1 --parents $commit | sed 's/ /\n/g' | grep -v $commit)
-               baserev=$(git merge-base $parents)
 
-               # For each parent
-               git rev-list -n 1 --parents $commit | sed 's/ /\n/g' | grep -v $commit | while read parent ; do
-                       echo "looking at $baserev..$parent for $commit"
-                       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
-                               echo "----------------------------------------------------"
-                               echo
-                               echo "It looks like you should rebase instead of merging $commit"
-                               echo
-                               echo "----------------------------------------------------"
+               # For each baserev
+               git merge-base --all $parents | while read baserev ; do
+                       # For each parent
+                       git rev-list -n 1 --parents $commit | sed 's/ /\n/g' | grep -v $commit | while read parent ; do
+                       parent_is_old=$(git branch --contains $parent | wc -l)
+                               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 [ $parent_is_old -gt 0 -a $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"
+                                       echo
+                                       echo "----------------------------------------------------"
+                                       exit 1
+                               fi
+                       done
+                       if [ $? -ne 0 ] ; then
                                exit 1
                        fi
                done