diff options
Diffstat (limited to 'scripts/xdt-commit')
-rwxr-xr-x | scripts/xdt-commit | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/scripts/xdt-commit b/scripts/xdt-commit new file mode 100755 index 0000000..664b6b2 --- /dev/null +++ b/scripts/xdt-commit @@ -0,0 +1,93 @@ +#!/bin/sh +# +# $Id$ +# +# Copyright (c) 2007 +# The Xfce development team. All rights reserved. +# +# Written for Xfce by Jannis Pohlmann <jannis@xfce.org>. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place, Suite 330, Boston, MA 02111-1307 USA +# +# xdt-commit - Part of the Xfce developer tools. +# + + +## +## Check if SVN is installed +## +if ! svn --version &> /dev/null; then + echo "Subversion needs to be installed." + exit 1 +fi + + +## +## Check if we are in a versioned directory +## +if ! svn info &> /dev/null; then + echo "Current working directory is not versioned." + exit 1 +fi + + +## +## Files to be committed +## +FILES="$*" + + +## +## Detect all ChangeLog's inside this directory by scanning it +## recursively +## +CHANGELOGS=$(find . -type f -iname ChangeLog) + + +## +## Append parsed diff output of each ChangeLog to the commit message +## +for CHANGELOG in $CHANGELOGS; do + # Make sure the file exists + if [ -f "$CHANGELOG" ]; then + # Determine SVN status + STATUS=$(svn status ${CHANGELOG}) + STATUS=${STATUS:0:1} + + # Check if file is versioned + if [ "$STATUS" != "?" ]; then + # Parse output + MSG=$(svn diff ${CHANGELOG} | grep -P '^\+\t' | sed 's/^+//') + + # Append to commit message (and insert newline between ChangeLogs) + if [ -z "$COMMIT_MSG" ]; then + COMMIT_MSG="$MSG" + else + COMMIT_MSG=$(echo "$COMMIT_MSG" $'\n' "$MSG") + fi + fi + fi +done + + +## +## Commit changes. If the commit message generate from the ChangeLog +## files is empty, ask the user to enter a commit message himself +## +if [ -n "$COMMIT_MSG" ]; then + svn commit $FILES -m "$COMMIT_MSG" +else + svn commit $FILES +fi |