guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: git: Don't require users to specifiy "origin/" for branches.


From: Ludovic Courtès
Subject: 02/02: git: Don't require users to specifiy "origin/" for branches.
Date: Wed, 5 Sep 2018 17:54:14 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 37a6cdbf1b3503d3e60840a176318284b1f7ca25
Author: Ludovic Courtès <address@hidden>
Date:   Wed Sep 5 23:31:51 2018 +0200

    git: Don't require users to specifiy "origin/" for branches.
    
    Fixes <https://bugs.gnu.org/32618>.
    Reported by Eric Brown <address@hidden>.
    
    * guix/git.scm (update-cached-checkout): Remove "origin/" from default
    REF.  Define CANONICAL-REF and use it instead of REF.
    (latest-repository-commit): Remove "origin/" from default REF.
    * guix/channels.scm (%default-channels): Remove "origin/" from
    'branch'.
---
 guix/channels.scm |  2 +-
 guix/git.scm      | 17 ++++++++++++++---
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/guix/channels.scm b/guix/channels.scm
index ebae748..cf833db 100644
--- a/guix/channels.scm
+++ b/guix/channels.scm
@@ -78,7 +78,7 @@
   ;; Default list of channels.
   (list (channel
          (name 'guix)
-         (branch "origin/master")
+         (branch "master")
          (url "https://git.savannah.gnu.org/git/guix.git";))))
 
 (define (guix-channel? channel)
diff --git a/guix/git.scm b/guix/git.scm
index c577eba..3d0eb93 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -112,7 +112,7 @@ OID (roughly the commit hash) corresponding to REF."
 
 (define* (update-cached-checkout url
                                  #:key
-                                 (ref '(branch . "origin/master"))
+                                 (ref '(branch . "master"))
                                  (cache-directory
                                   (url-cache-directory
                                    url (%repository-cache-directory))))
@@ -122,6 +122,17 @@ to REF.
 
 REF is pair whose key is [branch | commit | tag] and value the associated
 data, respectively [<branch name> | <sha1> | <tag name>]."
+  (define canonical-ref
+    ;; We used to require callers to specify "origin/" for each branch, which
+    ;; made little sense since the cache should be transparent to them.  So
+    ;; here we append "origin/" if it's missing and otherwise keep it.
+    (match ref
+      (('branch . branch)
+       `(branch . ,(if (string-prefix? "origin/" branch)
+                       branch
+                       (string-append "origin/" branch))))
+      (_ ref)))
+
   (with-libgit2
    (let* ((cache-exists? (openable-repository? cache-directory))
           (repository    (if cache-exists?
@@ -130,7 +141,7 @@ data, respectively [<branch name> | <sha1> | <tag name>]."
      ;; Only fetch remote if it has not been cloned just before.
      (when cache-exists?
        (remote-fetch (remote-lookup repository "origin")))
-     (let ((oid (switch-to-ref repository ref)))
+     (let ((oid (switch-to-ref repository canonical-ref)))
 
        ;; Reclaim file descriptors and memory mappings associated with
        ;; REPOSITORY as soon as possible.
@@ -144,7 +155,7 @@ data, respectively [<branch name> | <sha1> | <tag name>]."
                                    #:key
                                    (cache-directory
                                     (%repository-cache-directory))
-                                   (ref '(branch . "origin/master")))
+                                   (ref '(branch . "master")))
   "Return two values: the content of the git repository at URL copied into a
 store directory and the sha1 of the top level commit in this directory.  The
 reference to be checkout, once the repository is fetched, is specified by REF.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]