diff options
author | Ludovic Courtès <ludovic.courtes@inria.fr> | 2018-11-27 14:50:48 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-11-30 17:03:04 +0100 |
commit | 49ae3f6d89d270d726994838bfed52aa0056680b (patch) | |
tree | 5dd0842b4f8371953baaee49757c6762364a60e7 | |
parent | 35cb37ea9c1183b9cdd064ed3a1478b4dd342754 (diff) | |
download | guix-49ae3f6d89d270d726994838bfed52aa0056680b.tar.gz |
git: Add <git-checkout> record type.
* guix/git.scm (<git-checkout>): New record type. (latest-repository-commit*): New procedure. (git-checkout-compiler): New gexp compiler.
-rw-r--r-- | guix/git.scm | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/guix/git.scm b/guix/git.scm index 78645024c9..56cebb06ed 100644 --- a/guix/git.scm +++ b/guix/git.scm @@ -25,6 +25,8 @@ #:use-module ((guix build utils) #:select (mkdir-p)) #:use-module (guix store) #:use-module (guix utils) + #:use-module (guix records) + #:use-module (guix gexp) #:use-module (rnrs bytevectors) #:use-module (ice-9 match) #:use-module (srfi srfi-1) @@ -33,7 +35,12 @@ #:use-module (srfi srfi-35) #:export (%repository-cache-directory update-cached-checkout - latest-repository-commit)) + latest-repository-commit + + git-checkout + git-checkout? + git-checkout-url + git-checkout-branch)) (define %repository-cache-directory (make-parameter (string-append (cache-directory #:ensure? #f) @@ -185,3 +192,28 @@ Log progress and checkout info to LOG-PORT." (values (add-to-store store name #t "sha256" checkout #:select? (negate dot-git?)) commit))) + + +;;; +;;; Checkouts. +;;; + +;; Representation of the "latest" checkout of a branch. +(define-record-type* <git-checkout> + git-checkout make-git-checkout + git-checkout? + (url git-checkout-url) + (branch git-checkout-branch (default "master"))) + +(define latest-repository-commit* + (store-lift latest-repository-commit)) + +(define-gexp-compiler (git-checkout-compiler (checkout <git-checkout>) + system target) + ;; "Compile" CHECKOUT by updating the local checkout and adding it to the + ;; store. + (match checkout + (($ <git-checkout> url branch) + (latest-repository-commit* url + #:ref `(branch . ,branch) + #:log-port (current-error-port))))) |