[pacman-dev] [PATCH] makepkg: git-clone with --bare instead of --mirror

Johannes Löthberg johannes at kyriasis.com
Tue Nov 4 11:55:02 UTC 2014

The --mirror switch pulls down all refs in a repository, even ones that
aren't regular branches and tags.

Since sites like GitHub stores a ref for every pull request under the
refs/pull/ namespace, --mirror will pull down the history that has been
part of every pull request, even after a someone has for example run
git-filter-branch on it to get some big binaries out of the history,
which sometimes blows the repository size and the time to clone it up by
a very large factor.

Using --bare solves this as it only pulls down branches and tags, and
all makepkg needs is a bare repository.

Signed-off-by: Johannes Löthberg <johannes at kyriasis.com>
 scripts/makepkg.sh.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 8a67d94..d3854be 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 --bare "$url" "$dir"; then
 			error "$(gettext "Failure while downloading %s %s repo")" "${repo}" "git"
 			plain "$(gettext "Aborting...")"
 			exit 1

More information about the pacman-dev mailing list