From patchwork Tue Nov 27 15:34:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Ludovic_Court=C3=A8s?= X-Patchwork-Id: 329 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 0EF8B16826; Tue, 27 Nov 2018 15:35:09 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) by mira.cbaines.net (Postfix) with ESMTPS id 65A0C167A5 for ; Tue, 27 Nov 2018 15:35:08 +0000 (GMT) Received: from localhost ([::1]:43014 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRfOE-0003Wn-Vo for patchwork@mira.cbaines.net; Tue, 27 Nov 2018 10:35:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52326) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRfOC-0003WS-Li for guix-patches@gnu.org; Tue, 27 Nov 2018 10:35:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gRfOB-0000QD-4n for guix-patches@gnu.org; Tue, 27 Nov 2018 10:35:04 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:48167) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gRfOB-0000Q4-22 for guix-patches@gnu.org; Tue, 27 Nov 2018 10:35:03 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gRfOA-0006Gw-VE for guix-patches@gnu.org; Tue, 27 Nov 2018 10:35:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#33522] [PATCH 2/3] git: Add record type. Resent-From: Ludovic =?utf-8?q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 27 Nov 2018 15:35:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33522 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 33522@debbugs.gnu.org Received: via spool by 33522-submit@debbugs.gnu.org id=B33522.154333286824028 (code B ref 33522); Tue, 27 Nov 2018 15:35:02 +0000 Received: (at 33522) by debbugs.gnu.org; 27 Nov 2018 15:34:28 +0000 Received: from localhost ([127.0.0.1]:52415 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gRfNc-0006FQ-07 for submit@debbugs.gnu.org; Tue, 27 Nov 2018 10:34:28 -0500 Received: from eggs.gnu.org ([208.118.235.92]:42357) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gRfNZ-0006F2-O5 for 33522@debbugs.gnu.org; Tue, 27 Nov 2018 10:34:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gRfNM-00078S-3P for 33522@debbugs.gnu.org; Tue, 27 Nov 2018 10:34:15 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:51204) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRfNL-00077q-W2; Tue, 27 Nov 2018 10:34:12 -0500 Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=41488 helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1gRfNK-00070V-KH; Tue, 27 Nov 2018 10:34:11 -0500 From: Ludovic =?utf-8?q?Court=C3=A8s?= Date: Tue, 27 Nov 2018 16:34:01 +0100 Message-Id: <20181127153402.21357-2-ludo@gnu.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181127153402.21357-1-ludo@gnu.org> References: <20181127153402.21357-1-ludo@gnu.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Ludovic =?utf-8?q?Court=C3=A8s?= Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches From: Ludovic Courtès * guix/git.scm (): New record type. (latest-repository-commit*): New procedure. (git-checkout-compiler): New gexp compiler. --- guix/git.scm | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) 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 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 ) + system target) + ;; "Compile" CHECKOUT by updating the local checkout and adding it to the + ;; store. + (match checkout + (($ url branch) + (latest-repository-commit* url + #:ref `(branch . ,branch) + #:log-port (current-error-port)))))