#!/bin/bash if [ "$1" = "" ]; then echo "Usage: archrelease <repo>" exit 1 fi if [ ! -f PKGBUILD ]; then echo "archrelease: PKGBUILD not found" exit 1 fi if [ "$(basename $(readlink -f .))" != "trunk" ]; then echo "archrelease: Not in a package trunk dir" exit 1 fi if [ "$(svn diff)" != "" ]; then echo "archrelease: You have not committed your changes yet!" echo " Please run 'upgpkg' or 'svn commit' first" exit 1 fi if [ ! -d ../repos/$1 ]; then pushd .. [ -d repos ] || mkdir repos svn copy -r HEAD trunk repos/$1 svn commit -m "archrelease: new repo $1" pushd repos/$1 svnmerge init svn commit -F svnmerge-commit-message.txt rm svnmerge-commit-message.txt popd popd else svnmerge merge ../repos/$1 pushd .. if [ -f trunk/svnmerge-commit-message.txt ]; then svn commit -F trunk/svnmerge-commit-message.txt if [ $? -ne 0 ]; then # The user is going to have to clean things up a bit echo "*** ATTENTION: There was a problem merging the package changes ***" echo "To fix it, edit the conflicting files in repos/$1 (the ones that are C in svn status)." echo "Once you have resolved conflicts, execute 'svn resolved <path to file>' to tell svn the error was resolved." echo "Then to finish the merge commit, execute 'svn commit -F trunk/svnmerge-commit-message.txt' and, if there are no problems, delete trunk/svnmerge-commit-message.txt" exit $? fi rm trunk/svnmerge-commit-message.txt else echo "Nothing to commit" fi popd fi echo "===> Tagged for $1"