[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