From 3f9aafed0e7e82c328e833b3716011c31f50db6eb43b4b6cba7434f4593dfcdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Wed, 8 Dec 2010 07:58:14 +0000 Subject: [PATCH] Accepting request 55099 from home:wrosenauer:devel OBS-URL: https://build.opensuse.org/request/show/55099 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Tools/obs-service-tar_scm?expand=0&rev=4 --- obs-service-tar_scm.changes | 5 +++++ obs-service-tar_scm.spec | 8 ++++---- tar_scm | 38 ++++++++++++++++++++++++++++++++++++- tar_scm.service | 3 ++- 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/obs-service-tar_scm.changes b/obs-service-tar_scm.changes index f4cea9f..64925e8 100644 --- a/obs-service-tar_scm.changes +++ b/obs-service-tar_scm.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Wed Dec 8 06:29:42 UTC 2010 - wr@rosenauer.org + +- support mercurial repositories + ------------------------------------------------------------------- Wed Oct 20 16:27:25 UTC 2010 - reddwarf@opensuse.org diff --git a/obs-service-tar_scm.spec b/obs-service-tar_scm.spec index 25a5f9b..afcc8b7 100644 --- a/obs-service-tar_scm.spec +++ b/obs-service-tar_scm.spec @@ -2,19 +2,19 @@ Name: obs-service-tar_scm License: GPL v2 or later Group: Development/Tools/Building -Summary: An OBS source service: checkout or update a tar ball from svn/git/cvs -Version: 0.1 +Summary: An OBS source service: checkout or update a tar ball from svn/git/hg +Version: 0.2 Release: 1 Source: tar_scm Source1: tar_scm.service -Requires: subversion git cvs +Requires: subversion git mercurial BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildArch: noarch %description This is a source service for openSUSE Build Service. -It supports downloading src.rpms and extracting +It supports downloading from svn, git and hg repositories. %prep diff --git a/tar_scm b/tar_scm index 98265b7..e5ec4e6 100644 --- a/tar_scm +++ b/tar_scm @@ -65,7 +65,7 @@ FILE="$MYFILENAME" VERSION="$MYVERSION" if [ -z "$MYSCM" ]; then - echo "ERROR: no scm is given via --scm parameter (git/svn)!" + echo "ERROR: no scm is given via --scm parameter (git/svn/hg)!" exit 1 fi if [ -z "$MYURL" ]; then @@ -88,6 +88,10 @@ if [ -z "$FILE" -a "$MYSCM" == "svn" ]; then FILE="${MYURL%/}" FILE="${FILE##*/}" fi +if [ -z "$FILE" -a "$MYSCM" == "hg" ]; then + FILE="${MYURL%/}" + FILE="${FILE##*/}" +fi existing_tar=$(echo _service:tar_scm:${FILE}-*.tar*) if [ -e "$existing_tar" ]; then @@ -168,6 +172,38 @@ elif [ "$MYSCM" == "git" ]; then VERSION=$MYPREFIX`git show --pretty=%at | head -n 1` cd - fi +elif [ "$MYSCM" == "hg" ]; then + if [ -z "$SUBDIR" -a -d "$TAR_DIRECTORY" ]; then + # update existing content for speed/bandwidth reasons + cd "$TAR_DIRECTORY" + OLDVERSION=`hg tip | head -n 1 | sed -e 's/\s*//g' | awk -F':' '{ print $2 }'` + hg pull || exit 1 + if [ -n "$MYREVISION" ]; then + hg checkout "$MYREVISION" || exit 1 + fi + NEWVERSION=`hg tip | head -n 1 | sed -e 's/\s*//g' | awk -F':' '{ print $2 }'` + cd - + if [ "$OLDVERSION" == "$NEWVERSION" ]; then + # cleanup and skip + rm -rf "$TAR_DIRECTORY" + exit 0 + fi + mv "$TAR_DIRECTORY" "${FILE}" || exit 1 + else + # new checkout + hg clone "$MYURL" "${FILE}" || exit 1 + if [ -n "$MYREVISION" ]; then + cd "$FILE" + hg checkout "$MYREVISION" || exit 1 + cd - + fi + fi + if [ -z "$VERSION" ]; then + cd "$FILE" + [ -n "$MYPREFIX" ] && MYPREFIX="$MYPREFIX." + VERSION=$MYPREFIX`hg tip | head -n 1 | sed -e 's/\s*//g' | awk -F':' '{ print $2 }'` + cd - + fi else echo "ERROR: unknown scm $MYSCM" exit 1 diff --git a/tar_scm.service b/tar_scm.service index 9dc740f..ed572a7 100644 --- a/tar_scm.service +++ b/tar_scm.service @@ -1,10 +1,11 @@ Create a tar ball from SCM repository - This service uses a scm client to checkout or update from a given repository. Supported are svn, cvs and git. + This service uses a scm client to checkout or update from a given repository. Supported are svn, git and hg. Used SCM svn git + hg