I'm not ready to enforce that all tips must be new quite yet.
[git-central.git] / server / update-stable
index 6e1264b..b935dae 100644 (file)
@@ -60,11 +60,39 @@ case "$refname" in
                ;;
 esac
 
+if [ "$change_type" == "delete" ] ; then
+       exit 0
+fi
+
+if [ "$change_type" == "create" -a "$short_refname" != "stable" ] ; then
+       not_on_stable=$(git rev-list stable..$newrev)
+       if [ "$not_on_stable" == "" ] ; then
+               echo "----------------------------------------------------"
+               echo
+               echo "Creating a branch must include new commits"
+               echo
+               echo "----------------------------------------------------"
+               exit 1
+       fi
+fi
+
 # create/delete is okay
 if [ "$change_type" != "update" ] ; then
        exit 0
 fi
 
+# # The tip must always be new
+# already=$(git branch --contains "$newrev")
+# if [ "$already" != "" ] ; then
+#      already=${already##  }
+#      echo "----------------------------------------------------"
+#      echo
+#      echo "$short_refname is already referred to by $already"
+#      echo
+#      echo "----------------------------------------------------"
+#      exit 1
+#fi
+
 if [ "$short_refname" == "stable" ] ; then
        # Stable enforcement
 
@@ -134,7 +162,7 @@ else
        esac
 
        # Check if topic is already in candidates
-       candidate=$(git branch --contains "$oldrev" | grep -oP candidate.* --max-count=1)
+       candidate=$(git branch --contains "$oldrev" | grep -oP "candidate.*" --max-count=1)
        if [ $? -eq 0 ] ; then
                echo "----------------------------------------------------"
                echo