[pacman-dev] [PATCH] makepkg: Use a recursive, shallow clone for git://

Drew DeVault sircmpwn at gmail.com
Wed Oct 29 00:13:12 UTC 2014

makepkg: Use a recursive, shallow clone for git://

This clones git submodules, which are required to build most projects
that use them. This change is harmless for packages that don't use them.

This also modifies the initial clone to use --depth=1, which avoids
checking out the entire history and saves some bandwidth and improves
the time required to clone.

Signed-off-by: Drew DeVault <sir at cmpwn.com>
I'm still not used to submitting patches through a mailing list, so I
apologize if I've done something wrong. Please don't hesitate to let me
know if there's something I could do better.

 scripts/makepkg.sh.in | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 8a67d94..3b74d4d 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -542,7 +542,7 @@ download_git() {
 	if [[ ! -d "$dir" ]] || dir_is_empty "$dir" ; then
 		msg2 "$(gettext "Cloning %s %s repo...")" "${repo}" "git"
-		if ! git clone --mirror "$url" "$dir"; then
+		if ! git clone --depth=1 --mirror "$url" "$dir"; then
 			error "$(gettext "Failure while downloading %s %s repo")" "${repo}" "git"
 			plain "$(gettext "Aborting...")"
 			exit 1
@@ -612,6 +612,11 @@ extract_git() {
 			plain "$(gettext "Aborting...")"
 			exit 1
+		if ! git submodule update --init --recursive ; then
+			error "$(gettext "Failure while initializing submodules of %s %s repo")" "${repo}" "git"
+			plain "$(gettext "Aborting...")"
+			exit 1
+		fi
 	popd &>/dev/null

More information about the pacman-dev mailing list