all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories
@ 2021-04-09  9:02 Xinglu Chen
  2021-04-09  9:05 ` [bug#47670] [PATCH 1/2] upstream: Add predicate for Git URLs Xinglu Chen
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Xinglu Chen @ 2021-04-09  9:02 UTC (permalink / raw)
  To: 47670; +Cc: Léo Le Bouter

This adds support for updating packages hosted as SourceHut Git
repositories.  It looks at the Git tags on the remote (thank you Léo for
pointing this out[1]) to determine the latest release.  It won't be as
reliable as the GitHub updater, but still better than nothing, I
guess.

SourceHut also has support for Mercurial, but I am not familiar with it,
maybe I will look into it in the future. :)

See it in action:

$ ./pre-inst-env guix refresh fennel
gnu/packages/lua.scm:1176:13: fennel would be upgraded from 0.8.1 to 0.9.0

[1]: https://yhetil.org/guix-bugs/f8aad9c186074f29907952a6740c09faf0820cac.camel@zaclys.net

Xinglu Chen (2):
  upstream: Add predicate for Git URLs.
  gnu-maintenance: Add 'sourcehut-git' updater.

 doc/guix.texi            |  3 ++
 guix/gnu-maintenance.scm | 90 ++++++++++++++++++++++++++++++++++++++++
 guix/upstream.scm        | 20 +++++++++
 3 files changed, 113 insertions(+)


base-commit: 29a6c361492b18bcb0f6d2517d010a1b48441521
-- 
2.31.1






^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#47670] [PATCH 1/2] upstream: Add predicate for Git URLs.
  2021-04-09  9:02 [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories Xinglu Chen
@ 2021-04-09  9:05 ` Xinglu Chen
  2021-04-09  9:05 ` [bug#47670] [PATCH 2/2] gnu-maintenance: Add 'sourcehut-git' updater Xinglu Chen
  2021-04-09 10:54 ` [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories Léo Le Bouter via Guix-patches via
  2 siblings, 0 replies; 11+ messages in thread
From: Xinglu Chen @ 2021-04-09  9:05 UTC (permalink / raw)
  To: 47670

* guix/upstream.scm (git-url-predicate): New procedure.
---
 guix/upstream.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/guix/upstream.scm b/guix/upstream.scm
index 632e9ebc4f..47d11043dd 100644
--- a/guix/upstream.scm
+++ b/guix/upstream.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,7 @@
   #:use-module (guix discovery)
   #:use-module ((guix download)
                 #:select (download-to-store url-fetch))
+  #:use-module (guix git-download)
   #:use-module (guix gnupg)
   #:use-module (guix packages)
   #:use-module (guix diagnostics)
@@ -54,6 +56,7 @@
 
             url-predicate
             url-prefix-predicate
+            git-url-predicate
             coalesce-sources
 
             upstream-updater
@@ -185,6 +188,23 @@ MATCHING-URL?."
 source URLs starts with PREFIX."
   (url-predicate (cut string-prefix? prefix <>)))
 
+(define (git-url-predicate matching-url?)
+  "Return a predicate that returns true when passed a package whose source is
+an <origin> with the GIT-FETCH method, and one of its URLs passes
+MATCHING-URL?."
+  (lambda (package)
+    (match (package-source package)
+      ((? origin? origin)
+       (and (eq? (origin-method origin) git-fetch)
+            (match (origin-uri origin)
+              ((? git-reference? git-reference)
+               (matching-url? (git-reference-url git-reference)))
+              (((? git-reference? git-reference) ...)
+               (any matching-url? (git-reference-url git-reference)))
+              (_
+               #f))))
+      (_ #f))))
+
 (define (upstream-source-archive-types release)
   "Return the available types of archives for RELEASE---a list of strings such
 as \"gz\" or \"xz\"."
-- 
2.31.1






^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#47670] [PATCH 2/2] gnu-maintenance: Add 'sourcehut-git' updater.
  2021-04-09  9:02 [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories Xinglu Chen
  2021-04-09  9:05 ` [bug#47670] [PATCH 1/2] upstream: Add predicate for Git URLs Xinglu Chen
@ 2021-04-09  9:05 ` Xinglu Chen
  2021-04-09 10:54 ` [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories Léo Le Bouter via Guix-patches via
  2 siblings, 0 replies; 11+ messages in thread
From: Xinglu Chen @ 2021-04-09  9:05 UTC (permalink / raw)
  To: 47670; +Cc: Léo Le Bouter

* guix/gnu-maintenance.scm (latest-git-tag-version, sourcehut-git-package?,
latest-sourcehut-git-release): New procedures.
(%sourcehut-git-updater): New variable.
* doc/guix.texi (Invoking guix refresh): Document it.
---
 doc/guix.texi            |  3 ++
 guix/gnu-maintenance.scm | 90 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 93 insertions(+)

diff --git a/doc/guix.texi b/doc/guix.texi
index d1a15cb28b..6b6e3401f0 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -11745,6 +11745,9 @@ the updater for @uref{https://www.stackage.org, Stackage} packages.
 the updater for @uref{https://crates.io, Crates} packages.
 @item launchpad
 the updater for @uref{https://launchpad.net, Launchpad} packages.
+@item sourcehut-git
+the updater for packages hosted as @uref{https://sourcehut.org,
+SourceHut} Git repositories.
 @item generic-html
 a generic updater that crawls the HTML page where the source tarball of
 the package is hosted, when applicable.
diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm
index fece84b341..6a2a4ccf34 100644
--- a/guix/gnu-maintenance.scm
+++ b/guix/gnu-maintenance.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,6 +26,9 @@
   #:use-module (sxml simple)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 match)
+  #:use-module (ice-9 popen)
+  #:use-module (ice-9 rdelim)
+  #:use-module (ice-9 receive)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
@@ -38,6 +42,7 @@
   #:use-module (guix records)
   #:use-module (guix upstream)
   #:use-module (guix packages)
+  #:use-module (guix git-download)
   #:autoload   (zlib) (call-with-gzip-input-port)
   #:autoload   (htmlprag) (html->sxml)            ;from Guile-Lib
   #:export (gnu-package-name
@@ -69,6 +74,7 @@
             %sourceforge-updater
             %xorg-updater
             %kernel.org-updater
+            %sourcehut-git-updater
             %generic-html-updater))
 
 ;;; Commentary:
@@ -802,6 +808,83 @@ the directory containing its source tarball."
           (apply throw key args))
         #f))))
 
+(define (latest-git-tag-version package)
+  "Return the latest version of PACKAGE based on Git tags.  This relies on the
+Git tag having the version of the package in the name."
+  (let* ((url (git-reference-url (origin-uri (package-source package))))
+         (port (open-pipe* OPEN_READ
+                           "git"
+                           "ls-remote"
+                           "--tags"
+                           url)))
+
+    (define read-tags
+      (let loop ((lines '()))
+        (let ((line (read-line port)))
+          (cond
+           ((eof-object? line) lines)
+           ;; The hash on the lines without "^{}" dont't correspond to a
+           ;; commit.
+           ;;
+           ;; 0545ff5df25ea019fcb6fc1dcb40da06b35320e9	refs/tags/0.8.1
+           ;; 13042ec03837b72f8d14c04e9abe3ddae88449fa	refs/tags/0.8.1^{}
+           ((not (string-suffix? "^{}" line)) (loop lines))
+           ;; Drop the "^{}"
+           (else (loop (cons (string-drop-right line 3) lines)))))))
+
+    (close-pipe port)
+
+    (define (tag->version tag)
+      (if (string-prefix? "v"tag)
+          (substring tag 1)
+          tag))
+
+    (define (valid-version? tag)
+      (if (string-match "^[0-9._-]*$" (tag->version tag)) #t #f))
+
+    ;; Some projects will publish release candidates which we usually don't
+    ;; want to package.
+    (if (not (null? read-tags))
+        (receive (valid invalid)
+            (partition valid-version?
+                       (map (lambda (line)
+                              (last (string-split line #\/)))
+                            read-tags))
+          (tag->version (first valid)))
+        (package-version package))))
+
+;; Not guaranteed to always work correctly since you can self-host it.
+(define sourcehut-git-package?
+  (let ((hosting-site "git.sr.ht"))
+    (git-url-predicate (lambda (url)
+                         (match (string->uri url)
+                           (#f #f)
+                           (uri
+                            (let ((scheme (uri-scheme uri))
+                                  (host   (uri-host uri)))
+                              (and (memq scheme '(http https))
+                                   (if (string-match hosting-site host)
+                                       #t #f)))))))))
+
+(define (latest-sourcehut-git-release package)
+  "Return the latest release of PACKAGE."
+  (let ((name (package-name package))
+        (old-version (package-version package))
+        (new-version (latest-git-tag-version package))
+        (url (git-reference-url (origin-uri (package-source package)))))
+    (define (ensure-trailing-slash str)
+      (if (string-suffix? "/" str) str (string-append str "/")))
+
+    (if (not (string= old-version new-version))
+        (upstream-source
+         (package name)
+         (version new-version)
+         (urls (list (string-append (ensure-trailing-slash url)
+                                    "archive/"
+                                    new-version
+                                    ".tar.gz"))))
+        #f)))                           ; no tags
+
 (define %gnu-updater
   ;; This is for everything at ftp.gnu.org.
   (upstream-updater
@@ -849,6 +932,13 @@ the directory containing its source tarball."
    (pred (url-prefix-predicate "mirror://kernel.org/"))
    (latest latest-kernel.org-release)))
 
+(define %sourcehut-git-updater
+  (upstream-updater
+   (name 'sourcehut-git)
+   (description "Updater for packages hosted as SourceHut Git repositories")
+   (pred sourcehut-git-package?)
+   (latest latest-sourcehut-git-release)))
+
 (define %generic-html-updater
   (upstream-updater
    (name 'generic-html)
-- 
2.31.1






^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories
  2021-04-09  9:02 [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories Xinglu Chen
  2021-04-09  9:05 ` [bug#47670] [PATCH 1/2] upstream: Add predicate for Git URLs Xinglu Chen
  2021-04-09  9:05 ` [bug#47670] [PATCH 2/2] gnu-maintenance: Add 'sourcehut-git' updater Xinglu Chen
@ 2021-04-09 10:54 ` Léo Le Bouter via Guix-patches via
  2021-04-09 11:58   ` Xinglu Chen
  2 siblings, 1 reply; 11+ messages in thread
From: Léo Le Bouter via Guix-patches via @ 2021-04-09 10:54 UTC (permalink / raw)
  To: public, 47670

[-- Attachment #1: Type: text/plain, Size: 35066 bytes --]

On Fri, 2021-04-09 at 11:02 +0200, Xinglu Chen wrote:
> This adds support for updating packages hosted as SourceHut Git
> repositories.  It looks at the Git tags on the remote (thank you Léo
> for
> pointing this out[1]) to determine the latest release.  It won't be
> as
> reliable as the GitHub updater, but still better than nothing, I
> guess.
> 
> SourceHut also has support for Mercurial, but I am not familiar with
> it,
> maybe I will look into it in the future. :)
> 
> See it in action:
> 
> $ ./pre-inst-env guix refresh fennel
> gnu/packages/lua.scm:1176:13: fennel would be upgraded from 0.8.1 to
> 0.9.0
> 
> [1]: 
> https://yhetil.org/guix-bugs/f8aad9c186074f29907952a6740c09faf0820cac.camel@zaclys.net
> 
> Xinglu Chen (2):
>   upstream: Add predicate for Git URLs.
>   gnu-maintenance: Add 'sourcehut-git' updater.
> 
>  doc/guix.texi            |  3 ++
>  guix/gnu-maintenance.scm | 90
> ++++++++++++++++++++++++++++++++++++++++
>  guix/upstream.scm        | 20 +++++++++
>  3 files changed, 113 insertions(+)
> 
> 
> base-commit: 29a6c361492b18bcb0f6d2517d010a1b48441521

Thanks a lot for working on this!!

I have a question, why do you name it specific to Sourcehut? It could
also work for Github, Gitlab, Gitea or Gogs etc., e.g.

$ git ls-remote https://gitlab.com/mailman/hyperkitty
warning: redirecting to https://gitlab.com/mailman/hyperkitty.git/
d230516d81971cff4c8b68adeb2aa29684f20cd9	HEAD
d230516d81971cff4c8b68adeb2aa29684f20cd9	refs/heads/master
19b46ab2b545a75c4cea25fd2f8a6647bfeeebc3	refs/heads/release/1.0
126e0482d05a0da61e6f8770e97c1cc8e64b5d23	refs/heads/release/1.1
6580c4e94e0fd40a79f0f13c12bf183b4f321e6d	refs/merge-
requests/100/head
e1ecb3efb904461fec9612b9c6472b0845af9b97	refs/merge-
requests/101/head
e1ecb3efb904461fec9612b9c6472b0845af9b97	refs/merge-
requests/102/head
ae0b8406d3070f13e647b7c649510fc2e8d982dd	refs/merge-
requests/103/head
a1e8a9c2b487124edebf57cd355f23638aa01421	refs/merge-
requests/104/head
893258bb220a13d8d9b91201ce44a508347e3d90	refs/merge-
requests/105/head
395f05073562e4cab8d0b6742bfd655ea889d9a8	refs/merge-
requests/106/head
d7ca4da82a5df1238696b1b21fd84bc4560e197b	refs/merge-
requests/107/head
15ea0b574f74774a8368ec00cd36c5e9e8f14343	refs/merge-
requests/108/head
5a0d8f184753b88427a3adc8ffbbc065b6454333	refs/merge-
requests/109/head
2295897f102f9bd2a773462d4ced0338a0cd5a6e	refs/merge-
requests/11/head
7215796d7a37a8277c2936c13c037e0a915e6d3e	refs/merge-
requests/111/head
64c0205bf3d842170153f80b0a0581a75bb6bfe0	refs/merge-
requests/112/head
1eb769d39203ee2a0e0dff59a713a19067742eb0	refs/merge-
requests/113/head
f4f60a3c8f8548b9a3e3e50d50149418c490237e	refs/merge-
requests/114/head
5c7eb588293d03a975319b79c1ad2c54d3305bf0	refs/merge-
requests/116/head
43fee93e511c90e79ef9456da5d9e12b964fe9b6	refs/merge-
requests/118/head
014da7b0785474d35cfa6adc39846a64c07d4e66	refs/merge-
requests/119/head
e1a0ada22b9f3fae61f7d06d4e49fd6087039524	refs/merge-
requests/120/head
0332e1fc5823c03fcdeae8c6da9488efc685c1a5	refs/merge-
requests/121/head
d7f22959fa05f4e2d7fc6f354572b269c0857d35	refs/merge-
requests/122/head
e61f8e03c6217866a4c7bef5cfe2a49116a3189a	refs/merge-
requests/123/head
be3c1c5b470cf0abf88e4574110bb3c4c008b64a	refs/merge-
requests/125/head
a7c445e3a5add45918210309ed133b7ef3fa0491	refs/merge-
requests/126/head
6bb0295443ce9a838b54de1e24d7711827197772	refs/merge-
requests/127/head
72e5f8226f7e3e56b77e8555c9d7075e43830ca0	refs/merge-
requests/128/head
8a97d6f7fe494e8f603d54b28c48c9769f67c5c9	refs/merge-
requests/130/head
1495843c8173f60d32af0153e5c987efbb6e6bcd	refs/merge-
requests/131/head
eee3c198d713476c49cdfea936409bd091e123e0	refs/merge-
requests/132/head
3b639dca636f51fc319b695f0998b8eb30433e48	refs/merge-
requests/133/head
5c75c198b4f774fc6647832321132b0ccafcc6a9	refs/merge-
requests/134/head
e35da4033af571aec4f440a8b2e4efe9a2309f46	refs/merge-
requests/135/head
9ec91fd59bd5055433af6fd9fbc2f520b4913d10	refs/merge-
requests/136/head
3398e65e19ee15899434cccdda07500c6659a862	refs/merge-
requests/137/head
16eb2d4d51b38b9d7474f67c1721fe119d09a8a1	refs/merge-
requests/138/head
c2a303d359faf44248a8d73afbe549b38be44e79	refs/merge-
requests/139/head
58f7adedde50246a502521f76f4e26ab47fa21f5	refs/merge-
requests/140/head
98fe22eee606175befbfec032242c6e4d66bb91e	refs/merge-
requests/141/head
01c44617991bca49539acbf5d4df0594a59c9a4d	refs/merge-
requests/142/head
4fe9c7adcaa322bb0bbe35064b2113e146e58c14	refs/merge-
requests/144/head
cecc1bfed95f13b1a6262f1b7d6fde4e9feff56a	refs/merge-
requests/145/head
5561ee46edbb029104009f9d47167f9927b91863	refs/merge-
requests/146/head
1a21fbbe29c604dccbc2fd39b77bb6525932b377	refs/merge-
requests/147/head
beefd837e1b9ded394fd809f51446aff3c185bbc	refs/merge-
requests/148/head
acee367a75627a5a081e97a556da7440ee6c21ca	refs/merge-
requests/149/head
06a386852d6598460fa3c27143848eb834597020	refs/merge-
requests/15/head
b541fe34f27d1a203cfb07fa9d826a661d1d8946	refs/merge-
requests/150/head
9b1fbaff125f040261e137a14eb8654bb9d6e5e2	refs/merge-
requests/151/head
d1040e709d88a750063ecc6583878045dd123d81	refs/merge-
requests/152/head
4bdb2d59beb1d10e6e7939e964f06fb91dbb0627	refs/merge-
requests/153/head
cd8510b080d79f39e0e950f49a72dce303a9adac	refs/merge-
requests/154/head
84dd70f7bffee9b683269451d0beea104a23099d	refs/merge-
requests/155/head
36441f15cc13e6843096f023ef376651cc9bf756	refs/merge-
requests/157/head
687072009f9abf7425c942e16b58c4de1c9d3c33	refs/merge-
requests/158/head
33ad8a5c4df4f8443530f63d0450d42c2e27cc0f	refs/merge-
requests/159/head
22ef30097d6a2e4959ced73c69d2fe3ee0ac2f30	refs/merge-
requests/16/head
c71902b802e623868290adefd36d6a49a9886a36	refs/merge-
requests/160/head
1e58131ede1a20ada23c5ffbdba49e219d82919e	refs/merge-
requests/160/merge
e74e4a5792e9b190313b884f2bce21b4683b1406	refs/merge-
requests/161/head
8135cb92e8e415fd3e1ed141e06299b8a90a77af	refs/merge-
requests/162/head
5c20602d5c7d045918aee3237ea6df958f9f979c	refs/merge-
requests/163/head
cd8b79da18d212775b4b4ab2461d51e3a766e5a7	refs/merge-
requests/166/head
e725d9f01e002bacd34096ff59d769bce880a512	refs/merge-
requests/167/head
2b4e0ca945a6bdf864df3109a080fa75d73f09b2	refs/merge-
requests/168/head
2497a5b87ed35f06d46d60464a96b7887fdd8b77	refs/merge-
requests/168/merge
eadd3f14376206d5b254658753c830658b645e31	refs/merge-
requests/169/head
5ede2ebbb956e19ae5435868f621f5189f4666f9	refs/merge-
requests/17/head
f2c62d2205df33d392e197c82a8ee3311fd0268d	refs/merge-
requests/170/head
6df07f3352b8837e6c55fa52754749667c4bdab2	refs/merge-
requests/171/head
c10fb9f70030ab75f68e4f08070fcfc21f04ec28	refs/merge-
requests/173/head
3dff736cd96dce5e633db6fc665fe91834020cbd	refs/merge-
requests/174/head
6511a335f230b495d97e86ae4e927f4631e8f92d	refs/merge-
requests/174/merge
33962d764c39dedce8f565e7fcf280658befd7b5	refs/merge-
requests/177/head
5d52a4d3e3a19994feab922d74ef27e31ec88ad4	refs/merge-
requests/177/merge
7f7a5ec03bb3be22ed4ae23dbb72fb84f386b16a	refs/merge-
requests/178/head
09efec47082697d512542a613dab693087162ec9	refs/merge-
requests/178/merge
e97bb32601eec422d90dfc7062c83d2608a2750f	refs/merge-
requests/179/head
b903d094b7e41102f3cd10e7969df8838d7ec343	refs/merge-
requests/179/merge
03cbc94dbaefdc24be3617f7f76d0a4780a85249	refs/merge-
requests/181/head
c6f1dd91e5873d2a1f33e5f9b33056306eb1d377	refs/merge-
requests/181/merge
ddfc0e71264ee8b206625c45f20ac902501f55ea	refs/merge-
requests/182/head
8e608c82e46362f6a61ce133d91d903594872675	refs/merge-
requests/182/merge
cb4052c2adfb84439175ececfbe293ed49339d30	refs/merge-
requests/183/head
2ef89f0562b16a14ddf14b9009483aa6d12314e0	refs/merge-
requests/183/merge
014dd7d0ecfde87951d6f97ba3bebc577f9b7961	refs/merge-
requests/184/head
e940e13fc14d726d46977d6c203a237d0969603e	refs/merge-
requests/184/merge
18d7f24a989b501fa2d3d65082bfaa238585b1cc	refs/merge-
requests/185/head
6262b4aaec8239e1192e6fe3793f51d9d4ae8616	refs/merge-
requests/185/merge
7d4b29df64cb79025817c2f7ef512f7ddebbe00b	refs/merge-
requests/186/head
279efe7c05ab5b79c6ab030edce94ec1f57bf3e9	refs/merge-
requests/186/merge
fb787bcc92df3de53344730402b1d2d4a231d5eb	refs/merge-
requests/187/head
f6e793d827e619e1cf633354e26e5e25734861cc	refs/merge-
requests/188/head
4b4bd869ebc9c5053d5ebd7390bc266b311f150b	refs/merge-
requests/188/merge
571b7d7afc102e9a9a9b8086d58fed50b3025830	refs/merge-
requests/189/head
34fd7d332b0e47e5acda664d6ae89d81e3f49b85	refs/merge-
requests/189/merge
ce15f625bd903e3053999950f5a9e399d62cf9bd	refs/merge-
requests/19/head
1858c93ef4a917a585fb7b3e34d65c591e5501a4	refs/merge-
requests/191/head
7ff1da023e751541b10f84bbc6e6b91526337793	refs/merge-
requests/191/merge
5cd64bdd1d15baa7009b7f1cae82858981d8824a	refs/merge-
requests/192/head
b6f42d9a4da86a467c8b37c9e0820aeca2551ca2	refs/merge-
requests/192/merge
ae561f893bb2c427fbe0a9d8a8f093e55670f406	refs/merge-
requests/193/head
808f7dbbc25a48d10e61a6685b02ddbbd2bd239f	refs/merge-
requests/193/merge
fc9702561fa19f1b8c2fd5885793fb1bbfda8def	refs/merge-
requests/195/head
03a92d69b5cca5fc125399f392e40f018a3a1912	refs/merge-
requests/195/merge
fc9702561fa19f1b8c2fd5885793fb1bbfda8def	refs/merge-
requests/196/head
40956889efe21693f2ef0c4c2521444432a4cd13	refs/merge-
requests/196/merge
fc9702561fa19f1b8c2fd5885793fb1bbfda8def	refs/merge-
requests/197/head
4598211a22df9c07992523d9e351211c0f7c4b1f	refs/merge-
requests/197/merge
7a720abaec9964c53bd746c50f13389b41654f4f	refs/merge-
requests/2/head
c95c00276000f48f1ac2d211450f54454e74fe9c	refs/merge-
requests/201/head
c184a979036dfb3c97ff74d5b047f79962eb3390	refs/merge-
requests/201/merge
278a7a27bba0051e9051a6e557c2db41eb3dfe4a	refs/merge-
requests/202/head
b32042f79dd31ba02a32f5466b7ecfa1778c913c	refs/merge-
requests/202/merge
cb31123d950b76e7130b48d43bf777de25a705ed	refs/merge-
requests/203/head
8bc30ec82e872b28f6384e41e4555997605d14c9	refs/merge-
requests/203/merge
bf228e83fdd4695a349ab051512af7281aa86fc8	refs/merge-
requests/206/head
60ed8eefe9e453e070cd666f1a6f930261965eda	refs/merge-
requests/206/merge
0553672357d98379e7c84854511d77f95ba599c9	refs/merge-
requests/208/head
8f86004039f072cf97187139b8495e503a64ea4d	refs/merge-
requests/208/merge
4a31e1b6be3b478cb283263432c35cdb98865039	refs/merge-
requests/209/head
5c747a08bf2e05b26ae2e0e061a44d9696c176c4	refs/merge-
requests/209/merge
e383b82ed6847cc94126998957e95447cae25010	refs/merge-
requests/21/head
fe8458328769a3265675844058c0a8e56f1e872f	refs/merge-
requests/210/head
7e05e2be405bf113f334a3fbc064fa7ff3fc4be8	refs/merge-
requests/210/merge
57af6ce3d4614051203a38cd30402ed78b8e7c1f	refs/merge-
requests/211/head
a3ce9aca070ea9567e9b64a07bbc01a163fe795b	refs/merge-
requests/211/merge
82917f40e5671d3831189f95e7fa0b8800f3affe	refs/merge-
requests/212/head
a2a788ae02be579ea4f64fb9c425af3f6dffa0d5	refs/merge-
requests/212/merge
1782e77c5947004d7d605c9cf1435644219a84d3	refs/merge-
requests/213/head
96b1c06bd9438a2c88a0090dc51e5b731dcd9e87	refs/merge-
requests/213/merge
1498b6fb4468d00f93037bd5ba1eacab681e0d88	refs/merge-
requests/214/head
898d64fee3c2dd2620d143aeb78deb4853ea289d	refs/merge-
requests/214/merge
f68e858163b8b60ad11bbcd3dc26fe1582666006	refs/merge-
requests/215/head
14e41a6082ecf0bcf447ff34f6434a257b851fb6	refs/merge-
requests/215/merge
60c461fa19c159a71d537e05d64bbddea6564156	refs/merge-
requests/216/head
9f643545da77446204f4d1676c0ce5a5a1231ec0	refs/merge-
requests/216/merge
564b5a59eaebcdfa4621bcb2a30567c36d725020	refs/merge-
requests/217/head
ddd3bd8841299ecf0349b7fcd64cc3859b4f68d9	refs/merge-
requests/217/merge
9734f5e6801c469c815c3edcc226caa194263668	refs/merge-
requests/218/head
a35ed86f68b59c63de744e4b3f0fddb1d66ff5da	refs/merge-
requests/218/merge
a26bee998937c6b40c767c178c37d4b41afbbf63	refs/merge-
requests/219/head
426b0e2775eab70145cf848ee7025bdb23ee6033	refs/merge-
requests/219/merge
c62b21f49d5c39828ed73f4f6a4ba5025f85ba40	refs/merge-
requests/22/head
f41d97b777fe3efc0bbe534333b90841732c5fb6	refs/merge-
requests/220/head
c55c0a86865526ffe9660f1d18603168f5ff3d03	refs/merge-
requests/220/merge
9b93be581813a5008b6d011757e234fbb0f7c0ee	refs/merge-
requests/221/head
e60ca7571788a4388dc554bd1986f15355a52b53	refs/merge-
requests/221/merge
d825d376c1419dcf86414da46233963599bf59ef	refs/merge-
requests/222/head
280245847c75e7e24aa60f12ea82977aabd6706f	refs/merge-
requests/222/merge
b15ebaab2253210cc5db7931f806966972f180c4	refs/merge-
requests/224/head
d1931b2d7ab4575be5c0b557f3bdd7846f3f40e0	refs/merge-
requests/224/merge
03c99ad5beefeac4474b5a00c840fd9debccba02	refs/merge-
requests/228/head
c3b17d7ce8597d8095f68b4c5a11fa2b7f8ff7dd	refs/merge-
requests/228/merge
f845dee0746bf393d5c24ed5084bf5de69fd8028	refs/merge-
requests/231/head
37b8dd48ff2dd8ff0b81a529a3bdfc55dc7d68fe	refs/merge-
requests/231/merge
d2783cd0b7b4f64d1ee06c45d1373570b4983310	refs/merge-
requests/234/head
174abd1cdde98bd3b34d34f3e6e51454392346d7	refs/merge-
requests/234/merge
c102c6fd0c1c69eca73b1f297fe0267e9868eeb4	refs/merge-
requests/235/head
67183e4ada7ace655f35095c5382a3e2196c9a15	refs/merge-
requests/235/merge
499e133f109089c0b0665b56d8834fa074fbcf32	refs/merge-
requests/236/head
aa2174ec9bc3bf5d72c07a543105b1f73167878f	refs/merge-
requests/236/merge
ab509181bdce4194b2f59717468baf89e641495a	refs/merge-
requests/237/head
30da08fb5919a4422923f19af69f6748452c5505	refs/merge-
requests/237/merge
88c94ad207f0a38c45988ad1c22289106eb41871	refs/merge-
requests/238/head
97234e212bf4c3dc02cc81db0e6c6f317718335e	refs/merge-
requests/238/merge
0a76d287c2395c8339e35f035160d026b208f4c6	refs/merge-
requests/239/head
991a6dda459eb412646788764af0a5c9ca0393b1	refs/merge-
requests/239/merge
026202853d2cde624809395446affc3961846e1a	refs/merge-
requests/24/head
ff06d276ecfbbcc2d778a60dcffca2e442ee01c7	refs/merge-
requests/24/merge
3ebd40dae7db7fdbef4dd567c92859c7d4e49573	refs/merge-
requests/241/head
36837dca2bc3b27f3f08c8d1e58636a652b7e01b	refs/merge-
requests/241/merge
0649c1c158a2b1ca8d628625acbf0ab2780baecb	refs/merge-
requests/242/head
99ef9b8078b92d4a23023a3b5c4ff79a8806e05b	refs/merge-
requests/242/merge
cb236e8855e53de2de43c1b0dc2eafd1166416cf	refs/merge-
requests/243/head
9d388bf056b6276ea828fc453327661f4bcb28f0	refs/merge-
requests/243/merge
431d462a9466753f5e08424a3011f230e82bd853	refs/merge-
requests/244/head
6e41430f5e03fee68251952ae97216f9ef04a689	refs/merge-
requests/244/merge
0e2427caa9bf2d6a8e97c78da29ff038801135f5	refs/merge-
requests/245/head
aefc15265007b936b8cf899244634177ece24557	refs/merge-
requests/245/merge
89d07fb0f80ac47ad345993805a58b485bb72b83	refs/merge-
requests/246/head
377d8c0d757982a236b67bdee21d12c310193502	refs/merge-
requests/246/merge
566654dab8afacb006601e939d3b06dda528c22d	refs/merge-
requests/247/head
f38ee12d541bd1f8ae552183b6ddb124824d9ce5	refs/merge-
requests/247/merge
9acf7c5b823ed2a3967d04f8cf1cf02c4f76fe07	refs/merge-
requests/248/head
8aa64d3c43112888bbec4fc2380d5b48ff1ce541	refs/merge-
requests/248/merge
08db2c05446f37ec248adf000fa75b45aade5ded	refs/merge-
requests/249/head
208759afeaa2bb6eece8b7b8702bbb45cf7b114d	refs/merge-
requests/249/merge
74270753b8a6d83b0bac54bfaf55d6435ddeb978	refs/merge-
requests/25/head
ddae2298ba66643b380b1eeef29a877c70259b91	refs/merge-
requests/250/head
abb73c3e6b41fe9addc87052781d99deca27a126	refs/merge-
requests/250/merge
2060804bc90467f1393973289ee4d65dad54080c	refs/merge-
requests/251/head
9e812be0762cb6f97d998be81e94f19bb2963c1a	refs/merge-
requests/251/merge
65fb69d61b805bb7aa713924def21b7652e91124	refs/merge-
requests/252/head
9c1b7330a26424392aab5b76afada801d285a382	refs/merge-
requests/252/merge
e95a01c43af406056f411adde79a3987877d565b	refs/merge-
requests/253/head
3af73dbf2a7fb709187aaa6ab8537657c9986e3e	refs/merge-
requests/253/merge
38d8107616486d0e8ac271bab89e3a0f6e208d96	refs/merge-
requests/254/head
780e54ed2528b1c1b6e0f973a3422aec866df374	refs/merge-
requests/254/merge
f3f46b4c82bfe8b7faf55e43c42d2fe5c1e76df6	refs/merge-
requests/255/head
6fbb42f56b1f5aea7ed4355dcdefa2f1a2fcb13f	refs/merge-
requests/255/merge
74c4ff926e2938c44f07024b8688663aefe818d5	refs/merge-
requests/256/head
b80e8a356f118fbf64dc668b7628fd8f5486c1dc	refs/merge-
requests/256/merge
b87dd3a031ed361807f1c5ae5311551210e87317	refs/merge-
requests/257/head
a037bf2fd3c05a8d90232a7d810310da85b3c454	refs/merge-
requests/257/merge
eaee2d5f667426950c2c461b3c78e4b761e0a617	refs/merge-
requests/258/head
0aeef4f531f2ec4a29556bfffbd720c573fc8820	refs/merge-
requests/258/merge
a7854fe653439a0474f07496757ce4a1debd5b1a	refs/merge-
requests/259/head
130c6824fcaefb09e3e6adc6cc033e27e33d3bc1	refs/merge-
requests/259/merge
e93305b32e395d1d9d2ad29da4a56c7809fcb3e0	refs/merge-
requests/26/head
4794ea7fbf13025cfeb14a6eda3befe825df2791	refs/merge-
requests/26/merge
d5da351c666291e76b089d0e58b96aaec7a7dd86	refs/merge-
requests/260/head
4a0fada7eac788478ff902903fd540f27a9c28be	refs/merge-
requests/260/merge
9a8abf100bca7ec6b74fdd935a4cb5b9d059f25b	refs/merge-
requests/261/head
eaddf518cb8f9a3cc2cd8eabcf7242583692f0fa	refs/merge-
requests/261/merge
14e36b4eff676c5c111bbf3d2b529e4784bd0434	refs/merge-
requests/262/head
fd91ac255d2dabe358499862825c2cecbbd905d2	refs/merge-
requests/262/merge
ace7708a8013e2db17e1aa039c2f234d4d66ef45	refs/merge-
requests/264/head
199b0165f4d747c937d0808e0bdc6e5bbe56a529	refs/merge-
requests/264/merge
c8f47075e5c9e962c906abbb9089021b0a92a43e	refs/merge-
requests/265/head
a0a2a0e3d77f0a6a802f140e0e53f04871b56896	refs/merge-
requests/265/merge
8feb164198db2011a3ebb04dda9ff49675224f14	refs/merge-
requests/267/head
3a4f817376255e9ae70428c7264359a1cdc04331	refs/merge-
requests/267/merge
5ebbc697819c44d121ce9d0b20d20ffd8538ffae	refs/merge-
requests/268/head
7efea243bf3027c7e979f9286246301338975736	refs/merge-
requests/268/merge
6791affb7b1eefdd788287936b22fa2192ffe46f	refs/merge-
requests/269/head
1e8a037ca27f21a2ae0b3c98871b8dd6642d6d57	refs/merge-
requests/269/merge
5403d4af6608bb603a35e40542c47cff2f1b8e50	refs/merge-
requests/27/head
e112877296315df2d6079091e218c150a04b7de4	refs/merge-
requests/270/head
8c1f8ab5216003fd1054128214d756b01dd40094	refs/merge-
requests/270/merge
4d8a3c26fde066e569fada612eaf1374c6be3be7	refs/merge-
requests/271/head
565461bc546675b777bfe9a0438ec240940a96e6	refs/merge-
requests/271/merge
3436496f652f6b903549040b9678e0c467f6366c	refs/merge-
requests/28/head
0af78fb4f353200170067b258d6a7693ba0c3a61	refs/merge-
requests/29/head
81ef46796be4142aec046d5a2e87e6269e998e3d	refs/merge-
requests/298/head
5fc1dbdfe290f35daf2e1cd702b9b8c185599bb1	refs/merge-
requests/298/merge
b581a98b8db8f0a41694c368ad455ead3394ebd6	refs/merge-
requests/30/head
0cc94eb0ef94eb3f73b28cd139554de4226614f8	refs/merge-
requests/300/head
ebf73a22196704cae4474610e6314c64bb570de2	refs/merge-
requests/300/merge
2069b94a45533ea59f18e9c6f8aa4a5fc4df62d2	refs/merge-
requests/301/head
35325745fedcefab5c7e5ffad79ec1ceda00acb6	refs/merge-
requests/301/merge
d88b4c43eac5ebf357084db3d8697896ed4c2c32	refs/merge-
requests/302/head
17e43af30bd0ae580d97aa716f061aa14b502a71	refs/merge-
requests/302/merge
22067cbeee32852429c6f148c3957aadcebe75c8	refs/merge-
requests/303/head
7c75c8db1210fbdb53a3cbc077ee4cc5673ea862	refs/merge-
requests/303/merge
7b449322d5f6d6fb1971d45830c4f9cdc644a8fa	refs/merge-
requests/304/head
e545c3013af06064a08469a9cd10678b907e94d0	refs/merge-
requests/304/merge
4b7f3b4cab9f9e521c3f9c9683ed5849f813e1b3	refs/merge-
requests/305/head
f855fc58dc31d5f7020ed17e460331ddbd79a798	refs/merge-
requests/305/merge
e75bde84c89ffaeb59a3213129ddf6585dca09f5	refs/merge-
requests/306/head
0620dc17bc1cfa731acc64e3421301b50c71d91f	refs/merge-
requests/306/merge
155a578880994ed7db2864127cb902de1ba1711c	refs/merge-
requests/307/head
fd68fd1e5427f48925fff02fa6b0b291fc81830c	refs/merge-
requests/307/merge
79590070d9bee6ee679f610dd85add65c1049e04	refs/merge-
requests/308/head
721de09ea3678c7c72b2752da95d8391c2abdc31	refs/merge-
requests/308/merge
50c6a63dc71553d39c72b1ef285d7e6b697d32dc	refs/merge-
requests/309/head
620b3bd8f51cebdf2ef56c8966a553f64c4d5612	refs/merge-
requests/309/merge
688b4331fe1423f4e5d2300bc8bbe3bff0015f6d	refs/merge-
requests/31/head
b8fa45efa75dc3f668784fc3a4741ee559dbefe7	refs/merge-
requests/310/head
d0aadcf4e4fa9ef25befe1955a88cfd1b1cdd840	refs/merge-
requests/310/merge
e7f45b2324aa9c43aa2c16b60ef3d9812939a07b	refs/merge-
requests/311/head
a793eaf615aeb27e991eec878c2769618c91557b	refs/merge-
requests/311/merge
0af5d163e51a2612b01f917e3b9e4d5f3cdd8696	refs/merge-
requests/312/head
c6e74a5b309878b454661758be7538b0586cc639	refs/merge-
requests/312/merge
8fd69f4d866f8314942c96da5457363a27670bb8	refs/merge-
requests/313/head
e084bc36d77927956969e420c3e5daaa9ff71c54	refs/merge-
requests/313/merge
def1ccb4d33dd179e16d2036146f006e932414c9	refs/merge-
requests/314/head
990e2c5c373aba050daaf842f05e3c68992e88b4	refs/merge-
requests/314/merge
6465eb741e88d7b250adb6270577d190b958599b	refs/merge-
requests/315/head
c6b83ae523945902e9ad48902bbb443b76adef71	refs/merge-
requests/315/merge
d0e76893e3bb92bea99e45f289478891ae8047d9	refs/merge-
requests/316/head
955dc0f825d85fa0069ede8a89fffe691428f4ef	refs/merge-
requests/316/merge
cf510ce1d5a20873299f1cfc3c3bd353d8eb200d	refs/merge-
requests/317/head
7116ddda9bf5b2ba81aeb6db09d6031b0dd8d1a0	refs/merge-
requests/317/merge
ee25c98b831c3135a782714a5377d8e98360fab8	refs/merge-
requests/318/head
02c01ba7f29d595ec4ab0ee245a3d713c57d2710	refs/merge-
requests/318/merge
e2ebf4aafb4ba262ffdc16fc90cd30a0937faeee	refs/merge-
requests/319/head
9a86542aeeb1f6265bff0bb151b6f296889fa689	refs/merge-
requests/319/merge
1f326fd4c389e39b65bf10a5e736307d5dfb8beb	refs/merge-
requests/32/head
cd1fd118572282be539fc88f1b143aea6fccd3b8	refs/merge-
requests/320/head
3c9cbd0b95331d046a88053876b6db82dd0a1b22	refs/merge-
requests/320/merge
e238ca104efab28fa4d72d3a9acdf365a1cd5b02	refs/merge-
requests/321/head
3594efb90dcaf35b84479936344ae363648d8f7c	refs/merge-
requests/321/merge
48ec49e161ee0cc0e7e43d382dda6d5f9e8bd629	refs/merge-
requests/322/head
09b711bfa598821fbdcaa11b5c27ad26061aa9ac	refs/merge-
requests/322/merge
5c31c7fd412026cfd5e42bd9e96243b75698cc50	refs/merge-
requests/323/head
2ce101c13e6587f813522d65a61926c30df6eb98	refs/merge-
requests/323/merge
3864f98a9f3c73359dd4b846b6f3b82e6c276572	refs/merge-
requests/324/head
03ca119ddbd77e296b0e96fe4b91c9406be8d0ad	refs/merge-
requests/324/merge
2865b4c853bf0efb57016dec5d90a0031ac03e6c	refs/merge-
requests/325/head
acba9c630ffdd42d451bf86afc2eb48e8c7b4a78	refs/merge-
requests/325/merge
458eda06684c9e5d9cb25404463fae1536a297f2	refs/merge-
requests/326/head
aa395a2868edc8eb3a9d64a1ef19e3b044d2a61f	refs/merge-
requests/326/merge
365e63c0d35128d23612848ee4b61c397573d70a	refs/merge-
requests/327/head
2b1f7a28a0e615c54bd16beb0259e5830acd5520	refs/merge-
requests/327/merge
abff07b40156dc2bcec11982dd0e249509f15eb1	refs/merge-
requests/328/head
af2cae64a3e33ba93caea2b1f7144d90c115e66b	refs/merge-
requests/328/merge
c2b2329b3d4d0f9b67df4cbda81ad35fb6c29df7	refs/merge-
requests/329/head
f5023178c0eaf539a2e76dfc9e6f91d9fcd22f65	refs/merge-
requests/329/merge
79f4d671a8d4304314aca05954abf8ae5abe2802	refs/merge-
requests/33/head
f890e8497280af33343a501ff5c7f0550c29579d	refs/merge-
requests/330/head
762b6284f292e784fe940871bc1b284c020415fb	refs/merge-
requests/330/merge
e4116115f8868a1f1219fff4c014cebcdbb9d216	refs/merge-
requests/331/head
bfdd7ce4f3d7cf9b68c5683cbf620273f2d3341b	refs/merge-
requests/331/merge
c4223e3459f6d10aa46745350d6a994d807b6f03	refs/merge-
requests/332/head
8c169a9e956747f1ec3eb1f19788be95106352a9	refs/merge-
requests/332/merge
7b55feb7e815edcd58505e3dedfd791fa860d30f	refs/merge-
requests/333/head
c11f49bd0531174e4069dae9997d9087cfe17799	refs/merge-
requests/333/merge
2710866938ceb80e45fe4aec5e4fc6ee35fb6af5	refs/merge-
requests/334/head
ae6f3570ed3131fd90a48acab13fcf3c16dbe6dd	refs/merge-
requests/334/merge
5aee578224e9df66deea72212846c1d4eec89b81	refs/merge-
requests/335/head
e2747ac0c59ad0846d4a88211e6f30cb2634d251	refs/merge-
requests/335/merge
0c4286584d3aca2ad7006da25f3dfb8c55249e0e	refs/merge-
requests/336/head
716d52dd464708ae1a77f05e476ecb27aecf015e	refs/merge-
requests/336/merge
7bd80b5e400d0f1ea5a7467faddccdb49ab38e2a	refs/merge-
requests/337/head
89cfe22570893d3f2fba786cd117c3426f5fc268	refs/merge-
requests/337/merge
b5dbdfb75e42ced6f29e436a584fca8ad9998ee5	refs/merge-
requests/338/head
eb5007e197fa61562bbe11860f4b86f1983331a2	refs/merge-
requests/338/merge
24713a7f29d07cb8a64965f404b131e141ce8540	refs/merge-
requests/339/head
de034ca0f6a8a81f5384b8d5266c84748dcfcfd3	refs/merge-
requests/339/merge
8a0d9ef8b527dd1e91ae93721ab5a19845221862	refs/merge-
requests/340/head
e04afff83a21a4bcde50153ddeb4c19c8d537af2	refs/merge-
requests/340/merge
2712722da7608c42e54ac73a392edb8673de9c4f	refs/merge-
requests/341/head
e814b3266c384410de7211d5c36062f2d25c3e30	refs/merge-
requests/341/merge
0c4286584d3aca2ad7006da25f3dfb8c55249e0e	refs/merge-
requests/342/head
d230516d81971cff4c8b68adeb2aa29684f20cd9	refs/merge-
requests/342/merge
19bb596882a20494acbb2500330edb4771eb1fa5	refs/merge-
requests/35/head
ff06d276ecfbbcc2d778a60dcffca2e442ee01c7	refs/merge-
requests/35/merge
8a88d693506e0c2bc808ba79b1984afcdd483361	refs/merge-
requests/36/head
29e058902ba0e3e71788cbc99952a878e2abb017	refs/merge-
requests/39/head
e5b21ef7d76b3d69f57242298d5acf6aa0e3c90c	refs/merge-
requests/46/head
ff06d276ecfbbcc2d778a60dcffca2e442ee01c7	refs/merge-
requests/46/merge
5da2b98d69bcb5af705065d7a10076b4d3d4642b	refs/merge-
requests/47/head
ff06d276ecfbbcc2d778a60dcffca2e442ee01c7	refs/merge-
requests/47/merge
2c953ef651bd2087ef24a74cef0d05e2bc3a8307	refs/merge-
requests/49/head
ff06d276ecfbbcc2d778a60dcffca2e442ee01c7	refs/merge-
requests/49/merge
98addb184982c910e5918ed4e0dfcd13f9ebaf3a	refs/merge-
requests/50/head
ff06d276ecfbbcc2d778a60dcffca2e442ee01c7	refs/merge-
requests/50/merge
faef7f2c928845b0d453e971ae7abbb986b4fb0d	refs/merge-
requests/52/head
3af3feab92e3b69e5cdfe0ee60a4e463d8cc744c	refs/merge-
requests/55/head
80555288246bab16ada5d18e579079f806c19496	refs/merge-
requests/56/head
38fcc640fe7f69fd4d6bd1e98b2d97d8a30d947a	refs/merge-
requests/57/head
e5b3631807fc8d511773a173ff2427e493dc8197	refs/merge-
requests/58/head
ff06d276ecfbbcc2d778a60dcffca2e442ee01c7	refs/merge-
requests/58/merge
4d2c4e8dc89208120dc8b2745877b4d12abb84df	refs/merge-
requests/6/head
7e5cc1241cb21b742d7db996bdf58049adcff719	refs/merge-
requests/64/head
dcb9b62ff5740993ad47fac54818105ce2bfe996	refs/merge-
requests/65/head
ff06d276ecfbbcc2d778a60dcffca2e442ee01c7	refs/merge-
requests/65/merge
2d824debd21bd94d8be7d9f8786a93fdb8c13b82	refs/merge-
requests/7/head
2b02ce0357f569e2634a913f7536074f7219ec41	refs/merge-
requests/70/head
b2ab766f6c5921e91f6dc1f6508c96ede63fd517	refs/merge-
requests/71/head
d71f36930536b62e4bc22db48ca1a237d99cfa8b	refs/merge-
requests/72/head
94d668d1e32a2a86b6ccb900a51c01662302257d	refs/merge-
requests/73/head
193433087795241ad09599a8f4e1a0435761bf9d	refs/merge-
requests/74/head
89902b8c27ea55713fd01657af6431f158edc90f	refs/merge-
requests/75/head
0919ef5725978465e4ac7c99306f2e8157d84651	refs/merge-
requests/76/head
e89ab18fffbd1d1e16a3c5c45a1338859bc8b7e6	refs/merge-
requests/77/head
5575cc6b43b5b7edaecd808d8b5d42cf19982cfe	refs/merge-
requests/78/head
868cc4925a9282cacffc562628e2a4f6634cb5e6	refs/merge-
requests/79/head
f9cda027edd30ab81c4d4b08f23d6af84a205dc7	refs/merge-
requests/8/head
98b9a2300b25da357506776ab544488d3cb14b5e	refs/merge-
requests/81/head
3ef808577092d10a7f9c8db47226418eed962037	refs/merge-
requests/81/merge
81007bfc1b00a1392775fe2c78503f2e0ffc5063	refs/merge-
requests/83/head
4e903ab403daba18b0f0ca7526f9624d58987fd6	refs/merge-
requests/85/head
389d3679183ee5e8d6750996fc61e069130da1dc	refs/merge-
requests/86/head
d230516d81971cff4c8b68adeb2aa29684f20cd9	refs/merge-
requests/86/merge
bdc3eb922f1db61685b3b6b80edc0233601716fe	refs/merge-
requests/87/head
8e3975b6f5264fc1ed61b555333a3246e384d752	refs/merge-
requests/88/head
d230516d81971cff4c8b68adeb2aa29684f20cd9	refs/merge-
requests/88/merge
b3bfdb98ff47c4afee3eeb339346a33c80023c13	refs/merge-
requests/9/head
46d6f94314ba360049e6a3e5fb9ec8bd5379730c	refs/merge-
requests/90/head
898c68140b51b955cb4db45194e0106c6ef258f8	refs/merge-
requests/91/head
0e7038dc372245b777b5e286eab6fb9dbcd14766	refs/merge-
requests/93/head
ff06d276ecfbbcc2d778a60dcffca2e442ee01c7	refs/merge-
requests/93/merge
658019d0bb8089ff60b1cd2145b49d9d3a58f0b9	refs/merge-
requests/94/head
05db4a7d9b522f9b89b6006e0b35ac3869ae1ed4	refs/merge-
requests/95/head
0c40660425948c6052825db52f4d925d22562251	refs/merge-
requests/96/head
e76aa5f68e108b4add70d0dfed23e219477f82e0	refs/merge-
requests/97/head
d6d47f8f5b2cf7016e199766ab366c506aa3d0f4	refs/merge-
requests/98/head
b75f4631b2e0c6a9227bfbf72a0d943d07aa0830	refs/merge-
requests/99/head
d14dcedd7af2b6206b8dfaf2be3a93784b44ccc8	refs/tags/1.3.1
0553672357d98379e7c84854511d77f95ba599c9	refs/tags/1.3.1^{}
cd1ed3d00c31d45e8e678a7b147d5a5a1d5db63f	refs/tags/1.3.2
ec5c2ab5ac6e9b1089fa48d1fb9f335c0d87d2ed	refs/tags/1.3.2^{}
8b19672adbf498b37416ef8b3443d7ca15568104	refs/tags/1.3.3
cc37933eb16b4c47ddbe267e69a9543ee05cebfe	refs/tags/1.3.3^{}
cf79a1ec0f0ddd62f07d8598075a2b380c4beb3f	refs/tags/1.3.3rc1
cfa24056a9cef92b41d36abb50421e74181e3854	refs/tags/1.3.3rc1^{}
e9e195a8a0215a67989e45acc7895449f8396115	refs/tags/1.3.3rc2
1c8ab7ea100f080d3f6db224d7af17bdf86f2953	refs/tags/1.3.3rc2^{}
3855b5581ba94453fd02367735d11dd2f377c981	refs/tags/1.3.4
5db804b40273026df58679a0ddfaf1e8560ef411	refs/tags/1.3.4^{}
82ce207bc92bba4bc3284edcb7a8314d90e8e30b	refs/tags/1.3.4rc1
bac8c375fc4c6f098c528ca9dec8c49ec48c44e8	refs/tags/1.3.4rc1^{}
0c5fb23ccc75ffb8fcd9a9699524e5b942f2ec44	refs/tags/1.3.4rc2
a37bd7f4462f3195e98d96cbc6cb8abc9eb5c84b	refs/tags/1.3.4rc2^{}
d3dc225a5040b87ec349dd505e69373b44a40820	refs/tags/v0.1.2
697e6840fcb682fd626962c4e085e86376b27f3f	refs/tags/v0.1.3
2147fa8cc8b2015b852f3dc4fca953034e7a5d8b	refs/tags/v0.1.4
46d85ed650bee5499c7431c684ab34ffc44d3093	refs/tags/v0.1.5
36555737b8773b765cbeb81a2417eb431d2da008	refs/tags/v0.1.6
ede8695e1749b26393f0fe54d55fa8bc2a7b4368	refs/tags/v0.1.7
31e47e9ba4358f0359c907c3b56a4defc022e8e6	refs/tags/v0.9.1
146caf05bb51fa36e00a47f36275b328b9f85098	refs/tags/v0.9.2
bc39a0f5c5330ed6d34ba7176536fe671754ccf0	refs/tags/v0.9.3
90b7df94e1719bf5f44213babfbdbbca7e79aa34	refs/tags/v0.9.5
a8f2538230d134c630b3e7e7e28b8f35cf6276e9	refs/tags/v0.9.6
4b6f13cce0c5a7c213355dfc45990a4b8987eb42	refs/tags/v0.9.7
d054a592317d5a95881aac6f5024735712ce2821	refs/tags/v1.0.0
9780438de02b83840b4ceb8a7e74dd67ffc9293f	refs/tags/v1.0.0rc1
105de6f29f85adb86ededb77cd3f88a856bbfc52	refs/tags/v1.0.1
097282d25f8d90470c9af63d5afeaa1b495ecc32	refs/tags/v1.0.2
83243b03e21941e4f6457e6c033896028f265610	refs/tags/v1.0.3
d558f4ad86d259f2e18da4c1dea5eec5704926a6	refs/tags/v1.1.0
1f6dba6f67e6496b09da14641ca73433e7312d59	refs/tags/v1.1.1
a20105a130b6da5e77ca784950d872fe429bc163	refs/tags/v1.1.3
126e0482d05a0da61e6f8770e97c1cc8e64b5d23	refs/tags/v1.1.4
e1ecb3efb904461fec9612b9c6472b0845af9b97	refs/tags/v1.2.0
a6e81b8e7068daf7d4f1a5440a737f40cc10048e	refs/tags/v1.2.1
8f78d15e83f403ba45a792ba3127d91ba0523cfe	refs/tags/v1.2.2
c9fa4d4bfc295438d3e01cd93090064d004cf44d	refs/tags/v1.2.2^{}
4b2cc50b1a77a2517cfbfc27008d0da2e91c3883	refs/tags/v1.3.0
154d90c73a1f84ecd217117f1a6959fffc072434	refs/tags/v1.3.0^{}

$ git ls-remote https://git.skyjake.fi/skyjake/lagrange
345074332337c2f375ab9142d5a83c202f965ebd	HEAD
345074332337c2f375ab9142d5a83c202f965ebd	refs/heads/dev
93e2d56360f595a9509d3a537bc22e4f34d67ff6	refs/heads/release
9adb3b5f7ed3688e0b7347e29967154df72ab999	refs/tags/v0.1.0
c936711f31038bd8c607047b5aa882ff40e7e7ae	refs/tags/v0.1.1
ca89eeab5c89107f675bd4d8de97ede364d8d902	refs/tags/v0.10.0
1ecac10a9a5e0add3224ceb4f05677ece65cd541	refs/tags/v0.11.0
6a89be19a5b893a15c7b4731939c15101a9b7bf1	refs/tags/v0.12.0
b5093c8d96c32a1f483e6460e60ba856b01ed003	refs/tags/v0.12.1
d17abb1c6a60e5d8544cd7a7a96ddc126ac13b0d	refs/tags/v0.13.0
7f8f3a5077e0280c606de9a10850bb8be53c34dc	refs/tags/v0.13.1
88c8a875cf7acfe8043e56ef0e0e375131b2c21d	refs/tags/v0.13.2
47b95986c7feec37c0d4addc1981eb81af1981b2	refs/tags/v0.2.0
ce928050f3f48db8c1dc46030f36fefc705de987	refs/tags/v0.2.1
6857abd51afdb08bc7f9955d9367d155c6bf1a80	refs/tags/v0.3.0
d2b16ccf101a8190631cf1c721c0b70ade7b1270	refs/tags/v0.4.0
d03a7394ce8d438da3523c8a0e628b46627da487	refs/tags/v0.4.1
6d04a0590b2e2815b42b6cf253a8e893aecc5126	refs/tags/v0.5.0
b2951adbbe67b1780aac4ed5d198c37afe6abea6	refs/tags/v0.6.0
537673b2fbf829c8c24bc18da95eabb2cb4e7c1d	refs/tags/v0.7.0
c99d9ec118bc2d167dbc0274f03072568794c101	refs/tags/v0.7.1
b6be1493d54aa9d53d6b488a85aeabb2b7e1a630	refs/tags/v0.7.2
edc5194970abc2ecfb49b6e8bb37e8959c34b553	refs/tags/v0.8.0
f99df67dbe11357f0cc8071da0438f61351268d6	refs/tags/v0.8.1
6e1e7d061996c01ea7c3386620b1b52800401715	refs/tags/v0.9.0
34ce366cd97eb0cf9fb1d1dcd31e270e96670513	refs/tags/v1.0.0
a7b8aa0f4fca5d42abae228430cf14b2a9feb0b6	refs/tags/v1.0.1
c1e42c0796e92287e0e33220a1101e27b645a795	refs/tags/v1.0.2
15263b2a311c32e7c7d8efe460a0f86e605928aa	refs/tags/v1.0.3
abcd2daa61c0ef5abf542c3e681657672858885b	refs/tags/v1.1.0
f7f335d0d5b4f488e9707c18a2128190a4549738	refs/tags/v1.1.1
b0b414f8414f937c7287ce3ff2128b7ded61ed46	refs/tags/v1.1.2
abe1309ddc0d5cbb73dec4d23237d847b7d73f7f	refs/tags/v1.1.3
3cd7106e35c7f6e50172e84f05368dcb21d6b6aa	refs/tags/v1.1.4
3e1674037a73f90912ee7a1c59d9e8b1e246e7f3	refs/tags/v1.2.0
2d0946c24d67e4c935968d9a7c0b9ec620c7b4a7	refs/tags/v1.2.1
2b777b7f07b57d9ea03a043a48c63e37035d73d5	refs/tags/v1.2.2
ca59f459325fb93d69207a8f5991178b1b5727a3	refs/tags/v1.2.3
52fb73468da7c419d6959b6d5b6a21572cf8e275	refs/tags/v1.3.0
93e2d56360f595a9509d3a537bc22e4f34d67ff6	refs/tags/v1.3.1

Also I suggest adding a property to somehow specify what the version
number format could be in tags, and also handling cases where format
changes from version to version because upstream has not been
consistent with naming. You can see for Hyperkitty they don't have the
'v' anymore starting 1.3.1, but I also have examples where version is
separated by '_' and not '.', some times with prefix like:
'release_4_2_1', it would be nice to be able to specify those formats
with e.g. regex and somehow also be able to handle inconsistency in
upstream naming, maybe some heuristic to generically match version
numbers separated by ANY character with any prefix or suffix?

Thank you!! :-D

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories
  2021-04-09 10:54 ` [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories Léo Le Bouter via Guix-patches via
@ 2021-04-09 11:58   ` Xinglu Chen
  2021-04-09 12:04     ` Léo Le Bouter via Guix-patches via
  0 siblings, 1 reply; 11+ messages in thread
From: Xinglu Chen @ 2021-04-09 11:58 UTC (permalink / raw)
  To: Léo Le Bouter, 47670

On Fri, Apr 09 2021, Léo Le Bouter via Guix-patches via wrote:

> Thanks a lot for working on this!!

You are welcome. :)

> I have a question, why do you name it specific to Sourcehut? It could
> also work for Github, Gitlab, Gitea or Gogs etc., e.g.

All the forges have different URL schemes so they would have to be
hardcoded somehow, e.g. SourceHut uses
https://git.sr.ht/~user/repo/archive/TAG.tar.gz, Gitea probably uses
something else, etc..  Maybe we could just clone the repo, but that
would use more bandwidth, and it could get pretty slow for big
repositories.

> Also I suggest adding a property to somehow specify what the version
> number format could be in tags, and also handling cases where format
> changes from version to version because upstream has not been
> consistent with naming. You can see for Hyperkitty they don't have the
> 'v' anymore starting 1.3.1, but I also have examples where version is
> separated by '_' and not '.', some times with prefix like:
> 'release_4_2_1', it would be nice to be able to specify those formats
> with e.g. regex and somehow also be able to handle inconsistency in
> upstream naming, maybe some heuristic to generically match version
> numbers separated by ANY character with any prefix or suffix?

Adding a property for the tag prefix and suffix, and a version separator
would be a good idea.  Right now it only supports "v" as a prefix and
"_", ".", and "-" as separators.

> Thank you!! :-D

Thank you for the feedback!




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories
  2021-04-09 11:58   ` Xinglu Chen
@ 2021-04-09 12:04     ` Léo Le Bouter via Guix-patches via
  2021-04-09 12:41       ` Xinglu Chen
  0 siblings, 1 reply; 11+ messages in thread
From: Léo Le Bouter via Guix-patches via @ 2021-04-09 12:04 UTC (permalink / raw)
  To: Xinglu Chen, 47670

[-- Attachment #1: Type: text/plain, Size: 1307 bytes --]

On Fri, 2021-04-09 at 13:58 +0200, Xinglu Chen wrote:
> All the forges have different URL schemes so they would have to be
> hardcoded somehow, e.g. SourceHut uses
> https://git.sr.ht/~user/repo/archive/TAG.tar.gz, Gitea probably uses
> something else, etc..  Maybe we could just clone the repo, but that
> would use more bandwidth, and it could get pretty slow for big
> repositories.
> 

Is that an autogenerated tarball? I am under the impression that usage
of those is banned in GNU Guix, and that there's a lint pass for it.
What do you use these autogenerated tarballs for? Is the 'ls-remote'
command not enough to replace the version and hash? GNU Guix uses
shallow clones (AIUI) to save bandwidth, do you need this to generate
the hash? I encourage you use the same shallow clone mechanism here, so
it's more generic and not specific to Sourcehut.

> Adding a property for the tag prefix and suffix, and a version
> separator
> would be a good idea.  Right now it only supports "v" as a prefix and
> "_", ".", and "-" as separators.

What do you think about that last idea of matching versions in tags
with ANY separator and ANY suffix and prefix? That should work fine,
right? I can't think of a case where it wouldnt, but please do share
one if you do.

Thanks!!
Léo

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories
  2021-04-09 12:04     ` Léo Le Bouter via Guix-patches via
@ 2021-04-09 12:41       ` Xinglu Chen
  2021-04-09 12:48         ` Xinglu Chen
  0 siblings, 1 reply; 11+ messages in thread
From: Xinglu Chen @ 2021-04-09 12:41 UTC (permalink / raw)
  To: Léo Le Bouter, 47670

On Fri, Apr 09 2021, Léo Le Bouter via Guix-patches via wrote:

> On Fri, 2021-04-09 at 13:58 +0200, Xinglu Chen wrote:
>> All the forges have different URL schemes so they would have to be
>> hardcoded somehow, e.g. SourceHut uses
>> https://git.sr.ht/~user/repo/archive/TAG.tar.gz, Gitea probably uses
>> something else, etc..  Maybe we could just clone the repo, but that
>> would use more bandwidth, and it could get pretty slow for big
>> repositories.
>> 
>
> Is that an autogenerated tarball? I am under the impression that usage
> of those is banned in GNU Guix, and that there's a lint pass for it.
> What do you use these autogenerated tarballs for? Is the 'ls-remote'
> command not enough to replace the version and hash?

The GitHub updater fetches the autogenerated tarball so that's what I
did as well.  I wasn't aware about the fact that we would like to avoid
them.

> GNU Guix uses shallow clones (AIUI) to save bandwidth, do you need
> this to generate the hash? I encourage you use the same shallow clone
> mechanism here, so it's more generic and not specific to Sourcehut.

Ok, I will use shallow clones to make it more generic.

>> Adding a property for the tag prefix and suffix, and a version
>> separator
>> would be a good idea.  Right now it only supports "v" as a prefix and
>> "_", ".", and "-" as separators.
>
> What do you think about that last idea of matching versions in tags
> with ANY separator and ANY suffix and prefix? That should work fine,
> right? I can't think of a case where it wouldnt, but please do share
> one if you do.

Maybe it wasn't clear, I think it would be a good idea to have a
property field like this:

#+begin_src scheme
(properties '((tag-prefix . "some-prefix")
              (tag-suffix . "some-suffix")
              (version-separator . "some-separator")))
#+end_src

The updater would then read those fields and do some regex to get the
latest version.  These options would probably also have some sane
defaults, like empty prefix and suffix, and "." as the separator.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories
  2021-04-09 12:41       ` Xinglu Chen
@ 2021-04-09 12:48         ` Xinglu Chen
  2021-06-06 13:23           ` Ludovic Courtès
  0 siblings, 1 reply; 11+ messages in thread
From: Xinglu Chen @ 2021-04-09 12:48 UTC (permalink / raw)
  To: Léo Le Bouter, 47670

On Fri, Apr 09 2021, Xinglu Chen wrote:

> On Fri, Apr 09 2021, Léo Le Bouter via Guix-patches via wrote:
>
>> Is that an autogenerated tarball? I am under the impression that usage
>> of those is banned in GNU Guix, and that there's a lint pass for it.
>> What do you use these autogenerated tarballs for? Is the 'ls-remote'
>> command not enough to replace the version and hash?
>
> The GitHub updater fetches the autogenerated tarball so that's what I
> did as well.  I wasn't aware about the fact that we would like to avoid
> them.
>
>> GNU Guix uses shallow clones (AIUI) to save bandwidth, do you need
>> this to generate the hash? I encourage you use the same shallow clone
>> mechanism here, so it's more generic and not specific to Sourcehut.
>
> Ok, I will use shallow clones to make it more generic.

Umm, the 'upstream-source-compiler' uses 'url-fetch' to fetch the url, I
guess we would have to make it support Git repositories first.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories
  2021-04-09 12:48         ` Xinglu Chen
@ 2021-06-06 13:23           ` Ludovic Courtès
  2021-06-11  9:25             ` Xinglu Chen
  0 siblings, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2021-06-06 13:23 UTC (permalink / raw)
  To: Xinglu Chen; +Cc: 47670

Hi!

Xinglu Chen <public@yoctocell.xyz> skribis:

> On Fri, Apr 09 2021, Xinglu Chen wrote:
>
>> On Fri, Apr 09 2021, Léo Le Bouter via Guix-patches via wrote:
>>
>>> Is that an autogenerated tarball? I am under the impression that usage
>>> of those is banned in GNU Guix, and that there's a lint pass for it.
>>> What do you use these autogenerated tarballs for? Is the 'ls-remote'
>>> command not enough to replace the version and hash?
>>
>> The GitHub updater fetches the autogenerated tarball so that's what I
>> did as well.  I wasn't aware about the fact that we would like to avoid
>> them.
>>
>>> GNU Guix uses shallow clones (AIUI) to save bandwidth, do you need
>>> this to generate the hash? I encourage you use the same shallow clone
>>> mechanism here, so it's more generic and not specific to Sourcehut.
>>
>> Ok, I will use shallow clones to make it more generic.
>
> Umm, the 'upstream-source-compiler' uses 'url-fetch' to fetch the url, I
> guess we would have to make it support Git repositories first.

Yes, that’s a limitation of (guix upstream) right now.
‘%method-updates’ was a first step in the direction of supporting Git
repos.

Now, I agree with Léo that (1) this is not SourceHut-specific, and (2)
it should not download generated archives.

Also, I’d prefer to have the code rely on Guile-Git to list tags rather
than invoking ‘git’, if possible.  Perhaps that code could leave in its
own (guix import git) module or similar, rather than in (guix
gnu-maintenance), which already has little to do with GNU maintenance at
this point.  :-)

Thoughts?

Ludo’.




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories
  2021-06-06 13:23           ` Ludovic Courtès
@ 2021-06-11  9:25             ` Xinglu Chen
  2021-07-27 10:19               ` Ludovic Courtès
  0 siblings, 1 reply; 11+ messages in thread
From: Xinglu Chen @ 2021-06-11  9:25 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 47670

[-- Attachment #1: Type: text/plain, Size: 2391 bytes --]

On Sun, Jun 06 2021, Ludovic Courtès wrote:

> Hi!
>
> Xinglu Chen <public@yoctocell.xyz> skribis:
>
>> On Fri, Apr 09 2021, Xinglu Chen wrote:
>>
>>> On Fri, Apr 09 2021, Léo Le Bouter via Guix-patches via wrote:
>>>
>>>> Is that an autogenerated tarball? I am under the impression that usage
>>>> of those is banned in GNU Guix, and that there's a lint pass for it.
>>>> What do you use these autogenerated tarballs for? Is the 'ls-remote'
>>>> command not enough to replace the version and hash?
>>>
>>> The GitHub updater fetches the autogenerated tarball so that's what I
>>> did as well.  I wasn't aware about the fact that we would like to avoid
>>> them.
>>>
>>>> GNU Guix uses shallow clones (AIUI) to save bandwidth, do you need
>>>> this to generate the hash? I encourage you use the same shallow clone
>>>> mechanism here, so it's more generic and not specific to Sourcehut.
>>>
>>> Ok, I will use shallow clones to make it more generic.
>>
>> Umm, the 'upstream-source-compiler' uses 'url-fetch' to fetch the url, I
>> guess we would have to make it support Git repositories first.
>
> Yes, that’s a limitation of (guix upstream) right now.
> ‘%method-updates’ was a first step in the direction of supporting Git
> repos.

One of the problems with adding support for Git repos in (guix upstream)
was that Libgit2 (and by extension Guile-Git) doesn’t provide an API for
verifying tags, the I only way I know of is to run ‘git verify-tag’ in
the shell.  There is a ‘git_commit_extract_signature’ API, but it only
for individual commits, and since the majority of people don’t sign
their commits it means that a most of the time its not going to be able
to verify the checkout.

> Now, I agree with Léo that (1) this is not SourceHut-specific, and (2)
> it should not download generated archives.
>
> Also, I’d prefer to have the code rely on Guile-Git to list tags rather
> than invoking ‘git’, if possible.

Libgit2 has a ‘git_tag_list’ API, though it doesn’t seem like Guile-Git
supports it.

  https://libgit2.org/libgit2/#HEAD/group/tag/git_tag_list

> Perhaps that code could leave in its own (guix import git) module or
> similar, rather than in (guix gnu-maintenance), which already has
> little to do with GNU maintenance at this point.  :-)

Yeah, I think that’s a good idea :)


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories
  2021-06-11  9:25             ` Xinglu Chen
@ 2021-07-27 10:19               ` Ludovic Courtès
  0 siblings, 0 replies; 11+ messages in thread
From: Ludovic Courtès @ 2021-07-27 10:19 UTC (permalink / raw)
  To: Xinglu Chen; +Cc: 47670

Hi,

Replying to an old message…

Xinglu Chen <public@yoctocell.xyz> skribis:

> On Sun, Jun 06 2021, Ludovic Courtès wrote:

[...]

>>> Umm, the 'upstream-source-compiler' uses 'url-fetch' to fetch the url, I
>>> guess we would have to make it support Git repositories first.
>>
>> Yes, that’s a limitation of (guix upstream) right now.
>> ‘%method-updates’ was a first step in the direction of supporting Git
>> repos.
>
> One of the problems with adding support for Git repos in (guix upstream)
> was that Libgit2 (and by extension Guile-Git) doesn’t provide an API for
> verifying tags, the I only way I know of is to run ‘git verify-tag’ in
> the shell.  There is a ‘git_commit_extract_signature’ API, but it only
> for individual commits, and since the majority of people don’t sign
> their commits it means that a most of the time its not going to be able
> to verify the checkout.

The (guix git-authenticate) commit has code that retrieves the OpenPGP
signature and checks it.  It can serve as inspiration.

>> Now, I agree with Léo that (1) this is not SourceHut-specific, and (2)
>> it should not download generated archives.
>>
>> Also, I’d prefer to have the code rely on Guile-Git to list tags rather
>> than invoking ‘git’, if possible.
>
> Libgit2 has a ‘git_tag_list’ API, though it doesn’t seem like Guile-Git
> supports it.
>
>   https://libgit2.org/libgit2/#HEAD/group/tag/git_tag_list

Ah, we could add it.

>> Perhaps that code could leave in its own (guix import git) module or
>> similar, rather than in (guix gnu-maintenance), which already has
>> little to do with GNU maintenance at this point.  :-)
>
> Yeah, I think that’s a good idea :)

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2021-07-27 10:20 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-09  9:02 [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories Xinglu Chen
2021-04-09  9:05 ` [bug#47670] [PATCH 1/2] upstream: Add predicate for Git URLs Xinglu Chen
2021-04-09  9:05 ` [bug#47670] [PATCH 2/2] gnu-maintenance: Add 'sourcehut-git' updater Xinglu Chen
2021-04-09 10:54 ` [bug#47670] [PATCH 0/2] Add updater for packages hosted as SourceHut Git repositories Léo Le Bouter via Guix-patches via
2021-04-09 11:58   ` Xinglu Chen
2021-04-09 12:04     ` Léo Le Bouter via Guix-patches via
2021-04-09 12:41       ` Xinglu Chen
2021-04-09 12:48         ` Xinglu Chen
2021-06-06 13:23           ` Ludovic Courtès
2021-06-11  9:25             ` Xinglu Chen
2021-07-27 10:19               ` Ludovic Courtès

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.