Commit c4f72f78 authored by Dave Reisner's avatar Dave Reisner Committed by Pierre Schmitz
Browse files

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: default avatarDave Reisner <dreisner@archlinux.org>
Signed-off-by: default avatarPierre Schmitz <pierre@archlinux.de>
parent 9974309c
Loading
Loading
Loading
Loading
+13 −9
Original line number Diff line number Diff line
@@ -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