[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