On Tue, 28 Jun 2011 22:00:07 -0500, Dan McGee wrote:
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
This was intended so we can use e.g. a separate branch for repos like kde- or gnome-unstable. Means, we should not enforce the name "trunk".
@@ -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'
I like the idea as it would reduce the amount of commits needed. Maybe it would be a good idea to check if $file ends in a / just in case someone really adds a sbudir here. -- Pierre Schmitz, https://users.archlinux.de/~pierre