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

Lukáš Jirkovský l.jirkovsky at gmail.com
Mon Dec 9 15:31:23 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 | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 1421bec..99af551 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -581,9 +581,18 @@ extract_git() {
 
 	msg2 "$(gettext "Creating working copy of %s %s repo...")" "${repo}" "git"
 	pushd "$srcdir" &>/dev/null
-	rm -rf "${dir##*/}"
 
-	if ! git clone "$dir"; then
+	local updating=false
+	if [[ -d "${dir##*/}" ]]; then
+		updating=true
+		cd_safe "${dir##*/}"
+		if ! git fetch; then
+			error "$(gettext "Failure while updating working copy of %s %s repo")" "${repo}" "git"
+			plain "$(gettext "Aborting...")"
+			exit 1
+		fi
+		cd_safe "$srcdir"
+	elif ! git clone "$dir"; then
 		error "$(gettext "Failure while creating working copy of %s %s repo")" "${repo}" "git"
 		plain "$(gettext "Aborting...")"
 		exit 1
@@ -591,7 +600,7 @@ extract_git() {
 
 	cd_safe "${dir##*/}"
 
-	local ref
+	local ref=origin/HEAD
 	if [[ -n $fragment ]]; then
 		case ${fragment%%=*} in
 			commit|tag)
@@ -607,8 +616,8 @@ extract_git() {
 		esac
 	fi
 
-	if [[ -n $ref ]]; then
-		if ! git checkout -b makepkg $ref; then
+	if [[ -n $ref ]] || ((updating)) ; then
+		if ! git checkout --force -B makepkg $ref; then
 			error "$(gettext "Failure while creating working copy of %s %s repo")" "${repo}" "git"
 			plain "$(gettext "Aborting...")"
 			exit 1
-- 
1.8.5.1



More information about the pacman-dev mailing list