Author: gjb
Date: Mon May  5 23:01:01 2014
New Revision: 265405
URL: http://svnweb.freebsd.org/changeset/base/265405

Log:
  Add a helper script for parsing 'svn log' for the
  'Relnotes:' tag in case 'yes' is not explicitly
  the first string value following the tab.
  
  As it turns out, a number of commits have bypassed
  my filters (both email and 'svn log --search'), and
  this script returns the results I want when doing
  these searches.
  
  Sponsored by: The FreeBSD Foundation

Added:
  head/release/scripts/relnotes-search.sh   (contents, props changed)

Added: head/release/scripts/relnotes-search.sh
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/release/scripts/relnotes-search.sh     Mon May  5 23:01:01 2014        
(r265405)
@@ -0,0 +1,133 @@
+#!/bin/sh
+#-
+# Copyright (c) 2014 The FreeBSD Foundation
+# All rights reserved.
+#
+# This software were developed by Glen Barber
+# under sponsorship from the FreeBSD Foundation.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+set -C
+
+PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
+export PATH
+
+usage() {
+       echo "Usage:"
+       echo -n "$(basename ${0}) [-rNNNNNN]"
+       echo " [-l /path/for/output] /path/to/branch"
+       echo " -r: The oldest commit to include in the search"
+       echo ""
+       exit 1
+}
+
+main() {
+       while getopts "l:r:" arg ; do
+               case ${arg} in
+                       l)
+                               # Disallow '-rNNNNNN' argument for oldest
+                               # revision # from becoming the log file
+                               # accidentally.
+                               where="${OPTARG##-r*}"
+                               [ -z "${where}" ] && usage
+                               if [ -e "${where}" ]; then
+                                       echo "Log file already exists:"
+                                       echo "  (${where})"
+                                       exit 2
+                               fi
+                               ;;
+                       r)
+                               rev="${OPTARG##-r}"
+                               c=$(echo -n ${rev} | tr -d '0-9' | wc -c)
+                               if [ ${c} -ne 0 ]; then
+                                       echo "Revision number must be numeric."
+                                       exit 2
+                               fi
+                               # Since the last specified revision is
+                               # specified, mangle the variable to
+                               # make svn syntax happy.
+                               rev="-r${rev}:rHEAD"
+                               ;;
+                       *)
+                               usage
+                               ;;
+               esac
+       done
+       shift $(( ${OPTIND} - 1 ))
+
+       # This assumes a local working copy, which svn search
+       # allows exactly one repository path (although the root
+       # can still be the path).
+       [ "$#" -ne 1 ] && usage
+
+       # If no log file, write to stdout.
+       [ -z "${where}" ] && where=/dev/stdout
+
+       svn=
+       # Where is svn?
+       for s in /usr/bin /usr/local/bin; do
+               if [ -x ${s}/svn ]; then
+                       svn=${s}/svn
+                       break
+               fi
+               if [ -x ${s}/svnlite ]; then
+                       svn=${s}/svnlite
+                       break
+               fi
+       done
+       # Did we find svn?
+       if [ -z "${svn}" ]; then
+               echo "svn(1) binary not found."
+               exit 2
+       fi
+       # Is more than one path specified?  (This should never
+       # be triggered, because the argument count is checked
+       # above, but better safe than sorry.)
+       if [ $# -gt 1 ]; then
+               echo "Cannot specify more than one working path."
+               exit 2
+       fi
+       # Does the directory exist?
+       if [ ! -d "${1}" ]; then
+               echo "Specified path (${1}) is not a directory."
+               exit 2
+       fi
+       # Is it a subversion repository checkout?
+       ${svn} info ${1} >/dev/null 2>&1
+       if [ "$?" -ne 0 ]; then
+               echo "Cannot determine svn repository information for ${1}"
+               exit 2
+       fi
+
+       # All tests passed.  Let's see what can possibly go wrong
+       # from here.  The search string specified should match this
+       # in PCRE speak: ':[\t ]*'
+       ${svn} log ${rev} --search 'Relnotes:?[^ ]*' ${1} > ${where}
+       return $?
+}
+
+main "${@}"
+exit $?
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to