~ruther/guix-local

fe9b3ec3ee208c5bac7844f3d0fecce2c6b1297d — Ludovic Courtès 8 years ago a659138
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'.
1 files changed, 9 insertions(+), 3 deletions(-)

M guix/git.scm
M guix/git.scm => guix/git.scm +9 -3
@@ 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."