Previously the sources were dowloaded in HEAD revision in the download_svn().
If a specific revision was requested in fragment, the code was updated to that
revision in extract_svn(). However, because SVN is a centralized system,
this means that the changed sources has to be downloaded again.

By moving the fragment handling to download_svn(), we get the correct revision
without having to download it later in extract_svn().

Signed-off-by: Lukáš Jirkovský <[email protected]>
---
 scripts/makepkg.sh.in | 43 +++++++++++++++----------------------------
 1 file changed, 15 insertions(+), 28 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 28e8e7a..aeb231a 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -706,10 +706,23 @@ download_svn() {
        fi
        url=${url%%#*}
 
+       local ref=HEAD
+       if [[ -n $fragment ]]; then
+               case ${fragment%%=*} in
+                       revision)
+                               ref="${fragment##*=}"
+                               ;;
+                       *)
+                               error "$(gettext "Unrecognized reference: %s")" 
"${fragment}"
+                               plain "$(gettext "Aborting...")"
+                               exit 1
+               esac
+       fi
+
        if [[ ! -d "$dir" ]] || dir_is_empty "$dir" ; then
                msg2 "$(gettext "Cloning %s %s repo...")" "${repo}" "svn"
                mkdir -p "$dir/.makepkg"
-               if ! svn checkout --config-dir "$dir/.makepkg" "$url" "$dir"; 
then
+               if ! svn checkout -r ${ref} --config-dir "$dir/.makepkg" "$url" 
"$dir"; then
                        error "$(gettext "Failure while downloading %s %s 
repo")" "${repo}" "svn"
                        plain "$(gettext "Aborting...")"
                        exit 1
@@ -717,7 +730,7 @@ download_svn() {
        elif (( ! HOLDVER )); then
                msg2 "$(gettext "Updating %s %s repo...")" "${repo}" "svn"
                cd_safe "$dir"
-               if ! svn update; then
+               if ! svn update -r ${ref}; then
                        # only warn on failure to allow offline builds
                        warning "$(gettext "Failure while updating %s %s 
repo")" "${repo}" "svn"
                fi
@@ -727,11 +740,6 @@ download_svn() {
 extract_svn() {
        local netfile=$1
 
-       local fragment=${netfile#*#}
-       if [[ $fragment = "$netfile" ]]; then
-               unset fragment
-       fi
-
        local dir=$(get_filepath "$netfile")
        [[ -z "$dir" ]] && dir="$SRCDEST/$(get_filename "$netfile")"
 
@@ -742,29 +750,8 @@ extract_svn() {
        pushd "$srcdir" &>/dev/null
        rm -rf "${dir##*/}"
 
-       local ref
-       if [[ -n $fragment ]]; then
-               case ${fragment%%=*} in
-                       revision)
-                               ref="${fragment##*=}"
-                               ;;
-                       *)
-                               error "$(gettext "Unrecognized reference: %s")" 
"${fragment}"
-                               plain "$(gettext "Aborting...")"
-                               exit 1
-               esac
-       fi
-
        cp -a "$dir" .
 
-       if [[ -n ${ref} ]]; then
-               cd_safe "$(get_filename "$netfile")"
-               if ! svn update -r ${ref}; then
-                       error "$(gettext "Failure while creating working copy 
of %s %s repo")" "${repo}" "svn"
-                       plain "$(gettext "Aborting...")"
-               fi
-       fi
-
        popd &>/dev/null
 }
 
-- 
1.8.5.1


Reply via email to