diff options
author | Dave Reisner <dreisner@archlinux.org> | 2013-10-20 16:17:42 -0400 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2013-11-01 18:40:15 +0100 |
commit | c4f72f781b851578793b31e2c0b3f7ec839335cf (patch) | |
tree | c59ed7faf381c7198578937d9fe1115bf90c8dcc | |
parent | 9974309cee341fd2e6638924a4918e332c67348e (diff) | |
download | devtools-c4f72f781b851578793b31e2c0b3f7ec839335cf.tar.xz |
commitpkg: check all files at once for version control
Instead of dying at the first sight of an unversioned file, this lets
commitpkg dump all known unversioned files at once.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
-rw-r--r-- | commitpkg.in | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/commitpkg.in b/commitpkg.in index fe9348b..8dcbd7c 100644 --- a/commitpkg.in +++ b/commitpkg.in @@ -55,24 +55,28 @@ case "$cmd" in ;; esac -# check if all local source files are under version control +# find files which should be under source control +needsversioning=() for s in "${source[@]}"; do - if [[ $s != *://* ]] && ! svn status -v "$s@" | grep -q '^[ AMRX~]'; then - die "%s is not under version control" "$s" - fi + [[ $s != *://* ]] && needsversioning+=("$s") done - -# check if changelog and install files are under version control for i in 'changelog' 'install'; do while read -r file; do # evaluate any bash variables used eval file=\"$(sed 's/^\(['\''"]\)\(.*\)\1$/\2/' <<< "$file")\" - if ! svn status -v "${file}" | grep -q '^[ AMRX~]'; then - die "%s is not under version control" "$file" - fi + needsversioning+=("$file") done < <(sed -n "s/^[[:space:]]*$i=//p" PKGBUILD) done +# assert that they really are controlled by SVN +if (( ${#needsversioning[*]} )); then + # svn status's output is only two columns when the status is unknown + while read -r status filename; do + [[ $status = '?' ]] && unversioned+=("$filename") + done < <(svn status -v "${needsversioning[@]}") + (( ${#unversioned[*]} )) && die "%s is not under version control" "${unversioned[@]}" +fi + rsyncopts=(-e ssh -p --chmod=ug=rw,o=r -c -h -L --progress --partial -y) archreleaseopts=() while getopts ':l:a:s:f' flag; do |