[pacman-dev] [PATCH 3/4] makepkg: hg: update existing sources in srcdir without removing them first.

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


The local changes are discarded when updating. This matches the behaviour
when non-VCS sources are used. It also allows incremental builds.

Signed-off-by: Lukáš Jirkovský <l.jirkovsky at gmail.com>
---
 scripts/makepkg.sh.in | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 84183b0..1421bec 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -663,13 +663,12 @@ extract_hg() {
 
 	msg2 "$(gettext "Creating working copy of %s %s repo...")" "${repo}" "hg"
 	pushd "$srcdir" &>/dev/null
-	rm -rf "${dir##*/}"
 
-	local ref
+	local ref=tip
 	if [[ -n $fragment ]]; then
 		case ${fragment%%=*} in
 			branch|revision|tag)
-				ref=('-u' "${fragment##*=}")
+				ref="${fragment##*=}"
 				;;
 			*)
 				error "$(gettext "Unrecognized reference: %s")" "${fragment}"
@@ -678,7 +677,14 @@ extract_hg() {
 		esac
 	fi
 
-	if ! hg clone "${ref[@]}" "$dir" "${dir##*/}"; then
+	if [[ -d "${dir##*/}" ]]; then
+		cd_safe "${dir##*/}"
+		if ! (hg pull && hg update -C -r "$ref"); then
+			error "$(gettext "Failure while updating working copy of %s %s repo")" "${repo}" "hg"
+			plain "$(gettext "Aborting...")"
+			exit 1
+		fi
+	elif ! hg clone -u "$ref" "$dir" "${dir##*/}"; then
 		error "$(gettext "Failure while creating working copy of %s %s repo")" "${repo}" "hg"
 		plain "$(gettext "Aborting...")"
 		exit 1
-- 
1.8.5.1



More information about the pacman-dev mailing list