From owner-svn-src-all@FreeBSD.ORG  Mon May  5 23:01:01 2014
Return-Path: <owner-svn-src-all@FreeBSD.ORG>
Delivered-To: svn-src-all@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115])
 (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by hub.freebsd.org (Postfix) with ESMTPS id A27CAEB4;
 Mon,  5 May 2014 23:01:01 +0000 (UTC)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 907A9EC1;
 Mon,  5 May 2014 23:01:01 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s45N118v019360;
 Mon, 5 May 2014 23:01:01 GMT (envelope-from gjb@svn.freebsd.org)
Received: (from gjb@localhost)
 by svn.freebsd.org (8.14.8/8.14.8/Submit) id s45N11hd019359;
 Mon, 5 May 2014 23:01:01 GMT (envelope-from gjb@svn.freebsd.org)
Message-Id: <201405052301.s45N11hd019359@svn.freebsd.org>
From: Glen Barber <gjb@FreeBSD.org>
Date: Mon, 5 May 2014 23:01:01 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-head@freebsd.org
Subject: svn commit: r265405 - head/release/scripts
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-all@freebsd.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: "SVN commit messages for the entire src tree \(except for &quot;
 user&quot; and &quot; projects&quot; \)" <svn-src-all.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-all>,
 <mailto:svn-src-all-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-all/>
List-Post: <mailto:svn-src-all@freebsd.org>
List-Help: <mailto:svn-src-all-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-all>,
 <mailto:svn-src-all-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 05 May 2014 23:01:01 -0000

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 $?