diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-09-05 23:31:51 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-09-05 23:50:38 +0200 |
commit | 37a6cdbf1b3503d3e60840a176318284b1f7ca25 (patch) | |
tree | 9fbc665f6449d848e7be56cb5996eb3b2b8ff77c | |
parent | cb341c121919877ae6267a6460c0c17536d06eff (diff) | |
download | guix-37a6cdbf1b3503d3e60840a176318284b1f7ca25.tar.gz |
git: Don't require users to specifiy "origin/" for branches.
Fixes <https://bugs.gnu.org/32618>. Reported by Eric Brown <brown@fastmail.com>. * 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'.
-rw-r--r-- | guix/channels.scm | 2 | ||||
-rw-r--r-- | guix/git.scm | 17 |
2 files changed, 15 insertions, 4 deletions
diff --git a/guix/channels.scm b/guix/channels.scm index ebae7489f4..cf833db8b9 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 c577eba5ee..3d0eb93d9b 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. |