[pacman-dev] [PATCH 1/4] makepkg: checkout a revision specified in SVN fragment in download_svn.

Lukáš Jirkovský l.jirkovsky at gmail.com
Mon Dec 9 15:31:20 EST 2013


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ý <l.jirkovsky at gmail.com>
---
 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



More information about the pacman-dev mailing list