This relies on the fact that trunk/ never has any subdirectories, so we can simply copy all the files in it to the relevant repos/xxx/ directory after removing all existing files in that directory. Signed-off-by: Dan McGee <dan@archlinux.org> --- archrelease | 19 ++++++++++++++----- 1 files changed, 14 insertions(+), 5 deletions(-) diff --git a/archrelease b/archrelease index baaf6cf..1e54c8d 100755 --- a/archrelease +++ b/archrelease @@ -9,13 +9,15 @@ if [ "$1" = '' ]; then abort 'Usage: archrelease <repo>' fi +# TODO: validate repo is really repo-arch + if [ ! -f PKGBUILD ]; then abort 'archrelease: PKGBUILD not found' fi trunk=$(basename $(pwd)) -if [ "$(basename $(dirname $(pwd)))" == "repos" ]; then +if [ "$trunk" != "trunk" ]; then abort 'archrelease: Not in a package trunk dir' fi @@ -26,14 +28,21 @@ fi echo -n "releasing package to ${1}..." pushd .. >/dev/null if [ -d "repos/${1}" ]; then - svn rm --force -q "repos/${1}" - svn commit -q -m "archrelease: remove ${1}" || abort + for file in $(svn ls "repos/${1}"); do + svn rm -q "$file" + done fi if [ ! -d repos ]; then mkdir repos svn add repos fi -svn copy -q -r HEAD "${trunk}" "repos/${1}" -svn commit -q -m "archrelease: copy ${trunk} to ${1}" || abort +if [ ! -d "repos/${1}" ]; then + mkdir "repos/${1}" + svn add "repos/${1}" +fi +for file in $(svn ls "trunk"); do + svn copy -q -r HEAD "trunk/$file" "repos/${1}/" +done +svn commit -q -m "archrelease: copy trunk to ${1}" || abort popd >/dev/null echo 'done' -- 1.7.6