Look for left-over dead code when *check-consistency*
[sbcl.git] / git / post-receive-email
index beecf43..c565634 100755 (executable)
@@ -405,8 +405,8 @@ generate_update_branch_email()
                # echo "Those revisions listed above that are new to this repository have"
                # echo "not appeared on any other notification email; so we list those"
                # echo "revisions in full, below."
+               # echo ""
 
-               echo ""
                echo $LOGBEGIN
                show_new_revisions
 
@@ -704,26 +704,46 @@ if [ -n "$1" -a -n "$2" -a -n "$3" ]; then
 else
        while read oldrev newrev refname
        do
-         echo "Sending email for $refname: $oldrev -> $newrev"
+          echo "Sending mail for $refname: $oldrev -> $newrev"
          # SBCL KLUDGE: the default script sends one email per
          # push. We want one per commit. As long as we're
          # in fast-forward-only world, this should do the
          # right thing.
-         if (expr "$oldrev" : '0*$' >/dev/null ||                    # create
-             expr "$newrev" : '0*$' >/dev/null ||                    # delete
-              (! expr "$refname" : "refs/heads/" > /dev/null) ||      # not a branch
-              git rev-parse --verify --quiet "$newrev"^2 > /dev/null) # merge commit
+         if (expr "$oldrev" : '0*$' >/dev/null ||                  # create
+             expr "$newrev" : '0*$' >/dev/null ||                  # delete
+              ! expr "$refname" : "refs/heads/" > /dev/null)        # not a branch
          then
              # Just one email.
+              echo "Not a branch update: all changes in one email."
              generate_email $oldrev $newrev $refname | send_mail
          else
-             # Simple branch update, one mail per commit.
-             lastrev=$oldrev
-             for step in $(git rev-list --reverse $oldrev..$newrev)
-             do
-               generate_email $lastrev $step $refname | send_mail
-               lastrev=$step
-             done
+              # Get all revisions from old to new.
+              revlist=$(git rev-list --reverse $oldrev..$newrev)
+              no_merges=true
+              # Check for merges.
+              for rev in $revlist
+              do
+                  if ($no_merges && git rev-parse --verify --quiet "$rev"^2 > /dev/null)
+                  then
+                      echo "Merge detected: $rev. Sending all commits in a single email."
+                      no_merges=false
+                  fi
+              done
+              if $no_merges
+              then
+                  # Simple branch update, one mail per commit.
+                  echo "Sending one email per commit."
+                 lastrev=$oldrev
+                 for step in $revlist
+                 do
+                      echo "Sending: $(git log -n1 --oneline $step)"
+                     generate_email $lastrev $step $refname | send_mail
+                     lastrev=$step
+                 done
+              else
+                  # There's a merge -- just one email.
+                 generate_email $oldrev $newrev $refname | send_mail
+              fi
          fi
        done
 fi