[arch-projects] [devtools] [PATCH 1/2] archrelease: add repos/ directory if it doesn't exist
Very easy thing to forget when creating a new package, but easy enough to check for and add automatically. Signed-off-by: Dan McGee <dan@archlinux.org> --- archrelease | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/archrelease b/archrelease index 8ea718c..baaf6cf 100755 --- a/archrelease +++ b/archrelease @@ -29,6 +29,10 @@ if [ -d "repos/${1}" ]; then svn rm --force -q "repos/${1}" svn commit -q -m "archrelease: remove ${1}" || abort 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 popd >/dev/null -- 1.7.6
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
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
On Mon, Jul 25, 2011 at 11:00 AM, Pierre Schmitz <pierre@archlinux.de> wrote:
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". OK, it was not documented with a comment or anything here so that was hard to know. Feel free to omit this one line from the commit.
@@ -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.
OK.
-- Pierre Schmitz, https://users.archlinux.de/~pierre
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 | 27 ++++++++++++++++++++++----- 1 files changed, 22 insertions(+), 5 deletions(-) diff --git a/archrelease b/archrelease index baaf6cf..3d32e6f 100755 --- a/archrelease +++ b/archrelease @@ -9,14 +9,18 @@ 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)) +# Normally this should be trunk, but it may be something +# such as 'gnome-unstable' if [ "$(basename $(dirname $(pwd)))" == "repos" ]; then - abort 'archrelease: Not in a package trunk dir' + abort 'archrelease: Should not be in repos dir (try from trunk/)' fi if [ ! -z "$(svn status -q)" ]; then @@ -26,14 +30,27 @@ 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 +known_files=$(svn ls "trunk") +for file in $known_files; do + if [ "$file" != "${file%/}" ]; then + abort "archrelease: subdirectories are not supported in package directories!" + fi +done +for file in $known_files; 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
participants (3)
-
Dan McGee
-
Dan McGee
-
Pierre Schmitz