[arch-projects] [devtools] [PATCH 3/4] archrelease: Accept multiple tags

Dan McGee dpmcgee at gmail.com
Fri Aug 19 07:55:56 EDT 2011


On Fri, Aug 19, 2011 at 3:16 AM, Lukas Fleischer
<archlinux at cryptocrack.de> wrote:
> This allows for releasing to multiple repositories with a single
> archrelease invocation, while keeping separate commits:
Isn't this a perfect example of where we would want a single atomic
commit? I like the multiple tags idea, but it seems we should also
combine the commits as well.

>
> ----
> $ archrelease community-{i686,x86_64}
> releasing package to community-i686...done
> releasing package to community-x86_64...done
> ----
>
> Signed-off-by: Lukas Fleischer <archlinux at cryptocrack.de>
> ---
>  archrelease |   39 +++++++++++++++++++++++----------------
>  1 files changed, 23 insertions(+), 16 deletions(-)
>
> diff --git a/archrelease b/archrelease
> index 0fb3445..c175d2d 100755
> --- a/archrelease
> +++ b/archrelease
> @@ -6,7 +6,7 @@ abort() {
>  }
>
>  if [[ -z $1 ]]; then
> -       abort 'Usage: archrelease <repo>'
> +       abort 'Usage: archrelease <repo>...'
>  fi
>
>  # TODO: validate repo is really repo-arch
> @@ -29,7 +29,6 @@ if [[ $(svn status -q) ]]; then
>        abort 'archrelease: You have not committed your changes yet!'
>  fi
>
> -echo -n "releasing package to ${1}..."
>  pushd .. >/dev/null
>  IFS=$'\n' read -r -d '' -a known_files < <(svn ls "trunk")
>  for file in "${known_files[@]}"; do
> @@ -37,19 +36,27 @@ for file in "${known_files[@]}"; do
>                abort "archrelease: subdirectories are not supported in package directories!"
>        fi
>  done
> -if [[ -d repos/$1 ]]; then
> -       declare -a trash
> -       while read -r file; do
> -               trash+=("repos/$1/$file")
> -       done < <(svn ls "repos/$1")
> -       svn rm -q "${trash[@]}"
> -else
> -       mkdir -p "repos/${1}"
> -       svn add --parents -q "repos/${1}"
> -fi
> -for file in "${known_files[@]}"; do
> -       svn copy -q -r HEAD "trunk/$file" "repos/${1}/"
> +
> +for tag in "$@"; do
> +       echo -n "releasing package to ${tag}..."
> +
> +       if [[ -d repos/$tag ]]; then
> +               declare -a trash
> +               while read -r file; do
> +                       trash+=("repos/$tag/$file")
> +               done < <(svn ls "repos/$tag")
> +               svn rm -q "${trash[@]}"
> +       else
> +               mkdir -p "repos/$tag"
> +               svn add --parents -q "repos/$tag"
> +       fi
> +
> +       for file in "${known_files[@]}"; do
> +               svn copy -q -r HEAD "trunk/$file" "repos/$tag/"
> +       done
> +
> +       svn commit -q -m "archrelease: copy trunk to $tag" || abort
> +
> +       echo 'done'
>  done
> -svn commit -q -m "archrelease: copy trunk to ${1}" || abort
>  popd >/dev/null
> -echo 'done'
> --
> 1.7.6
>
>


More information about the arch-projects mailing list