aboutsummaryrefslogtreecommitdiff
path: root/guix-qa-frontpage/git-repository.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-qa-frontpage/git-repository.scm')
-rw-r--r--guix-qa-frontpage/git-repository.scm23
1 files changed, 22 insertions, 1 deletions
diff --git a/guix-qa-frontpage/git-repository.scm b/guix-qa-frontpage/git-repository.scm
index 2140c1e..6ff3eb2 100644
--- a/guix-qa-frontpage/git-repository.scm
+++ b/guix-qa-frontpage/git-repository.scm
@@ -23,7 +23,8 @@
get-commit
get-git-branch-head-committer-date
- get-git-merge-base))
+ get-git-merge-base
+ get-git-remote-branches))
(define %git-repository-location
(make-parameter #f))
@@ -135,3 +136,23 @@
(first lines)))
(loop (read-line pipe)
(cons line lines))))))))
+
+(define (get-git-remote-branches remote)
+ (with-bare-git-repository
+ (lambda ()
+ (let ((pipe (open-pipe* OPEN_READ
+ "git" "ls-remote" "--heads" remote)))
+ (let loop ((line (read-line pipe))
+ (result '()))
+ (if (eof-object? line)
+ (begin
+ (close-pipe pipe)
+
+ result)
+ (let ((commit (string-take line 40))
+ (branch (string-drop line 52)))
+ (loop (read-line pipe)
+ (cons
+ `(("name" . ,branch)
+ ("commit" . ,commit))
+ result)))))))))