From fe9b3ec3ee208c5bac7844f3d0fecce2c6b1297d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 21 Nov 2017 15:25:57 +0100 Subject: git: Do not add '.git' to the store. This makes 'latest-repository-commit' significantly more efficient and reduces disk usage in the store. * guix/git.scm (copy-to-store)[dot-git?]: New procedure. Pass it as the #:select? argument to 'add-to-store'. --- guix/git.scm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'guix') diff --git a/guix/git.scm b/guix/git.scm index 7a83b56216..fc41e2ace3 100644 --- a/guix/git.scm +++ b/guix/git.scm @@ -80,11 +80,17 @@ of SHA1 string." "-" (string-take sha1 7))) (define* (copy-to-store store cache-directory #:key url repository) - "Copy items in cache-directory to store. URL and REPOSITORY are used -to forge store directory name." + "Copy CACHE-DIRECTORY recursively to STORE. URL and REPOSITORY are used to +create the store directory name." + (define (dot-git? file stat) + (and (string=? (basename file) ".git") + (eq? 'directory (stat:type stat)))) + (let* ((commit (repository->head-sha1 repository)) (name (url+commit->name url commit))) - (values (add-to-store store name #t "sha256" cache-directory) commit))) + (values (add-to-store store name #t "sha256" cache-directory + #:select? (negate dot-git?)) + commit))) (define (switch-to-ref repository ref) "Switch to REPOSITORY's branch, commit or tag specified by REF." -- cgit v1.2.3