summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2013-10-20 16:17:42 -0400
committerPierre Schmitz <pierre@archlinux.de>2013-11-01 18:40:15 +0100
commitc4f72f781b851578793b31e2c0b3f7ec839335cf (patch)
treec59ed7faf381c7198578937d9fe1115bf90c8dcc
parent9974309cee341fd2e6638924a4918e332c67348e (diff)
downloaddevtools-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.in22
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