From ac222ae00469555269722483a1d936997b220f4b Mon Sep 17 00:00:00 2001 From: Levente Polyak Date: Fri, 10 Jun 2022 00:57:45 +0200 Subject: [PATCH] archrelease: support subdirectories in package directories We need to support subdirectories for the `keys` directory used to distribute PGP keys alongside the packaging sources. This is achieved by using `svn ls` to list the files and directories in the packaging root and leverage the behavior of `svn copy` to consider subdirectories inside the root but only copy over files and directories under the subdirectory that are already tracked by svn. As a step in between, we now use `svn ls --recursive` to list all tracked svn files in the current repos directory and remove all tracked files in the staging area. Hence the `svn copy` in combination with the `svn rm` will result in a sync behavior from the packaging root to the repos directory. Signed-off-by: Levente Polyak --- archrelease.in | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/archrelease.in b/archrelease.in index 252db28..3490ee2 100644 --- a/archrelease.in +++ b/archrelease.in @@ -51,11 +51,6 @@ fi pushd .. >/dev/null mapfile -t known_files < <(svn ls -r HEAD "$trunk") wait $! || die "failed to discover committed files" -for file in "${known_files[@]}"; do - if [[ ${file:(-1)} = '/' ]]; then - die "archrelease: subdirectories are not supported in package directories!" - fi -done # gracefully handle files containing an "@" character known_files=("${known_files[@]/%/@}") @@ -67,7 +62,7 @@ for tag in "$@"; do stat_busy "Copying %s to %s" "${trunk}" "${tag}" if [[ -d repos/$tag ]]; then - mapfile -t trash < <(svn ls "repos/$tag") + mapfile -t trash < <(svn ls --recursive "repos/$tag") wait $! || die "failed to discover existing files" if (( ${#trash[@]} )); then trash=("${trash[@]/#/repos/$tag/}")