[arch-projects] [devtools] [PATCH 1/4] commitpkg: check all files at once for version control

Dave Reisner dreisner at archlinux.org
Sun Oct 20 16:17:42 EDT 2013


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 at archlinux.org>
---
 commitpkg.in | 22 +++++++++++++---------
 1 file 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
-- 
1.8.4.1



More information about the arch-projects mailing list