diff options
author | Efraim Flashner <efraim@flashner.co.il> | 2023-01-30 11:33:18 +0200 |
---|---|---|
committer | Efraim Flashner <efraim@flashner.co.il> | 2023-01-30 12:39:40 +0200 |
commit | 4cf1acc7f3033b50b0bf19e02c9f522d522d338c (patch) | |
tree | 9fd64956ee60304c15387eb394cd649e49f01467 /gnu/packages/version-control.scm | |
parent | edb8c09addd186d9538d43b12af74d6c7aeea082 (diff) | |
parent | 595b53b74e3ef57a1c0c96108ba86d38a170a241 (diff) | |
download | guix-4cf1acc7f3033b50b0bf19e02c9f522d522d338c.tar.gz |
Merge remote-tracking branch 'origin/master' into core-updates
Conflicts: doc/guix.texi gnu/local.mk gnu/packages/admin.scm gnu/packages/base.scm gnu/packages/chromium.scm gnu/packages/compression.scm gnu/packages/databases.scm gnu/packages/diffoscope.scm gnu/packages/freedesktop.scm gnu/packages/gnome.scm gnu/packages/gnupg.scm gnu/packages/guile.scm gnu/packages/inkscape.scm gnu/packages/llvm.scm gnu/packages/openldap.scm gnu/packages/pciutils.scm gnu/packages/ruby.scm gnu/packages/samba.scm gnu/packages/sqlite.scm gnu/packages/statistics.scm gnu/packages/syndication.scm gnu/packages/tex.scm gnu/packages/tls.scm gnu/packages/version-control.scm gnu/packages/xml.scm guix/build-system/copy.scm guix/scripts/home.scm
Diffstat (limited to 'gnu/packages/version-control.scm')
-rw-r--r-- | gnu/packages/version-control.scm | 404 |
1 files changed, 198 insertions, 206 deletions
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 6684580b4a..98b80b6073 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -31,7 +31,7 @@ ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org> -;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de> +;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2021 Greg Hogan <code@greghogan.com> ;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> @@ -45,6 +45,8 @@ ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com> ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com> ;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be> +;;; Copyright © 2022 Dhruvin Gandhi <contact@dhruvin.dev> +;;; Copyright © 2015, 2022 David Thompson <davet@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -69,7 +71,6 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix hg-download) - #:use-module (guix build python-build-system) #:use-module (guix build-system cmake) #:use-module (guix build-system copy) #:use-module (guix build-system gnu) @@ -104,6 +105,7 @@ #:use-module (gnu packages image) #:use-module (gnu packages linux) #:use-module (gnu packages mail) + #:use-module (gnu packages man) #:use-module (gnu packages maths) #:use-module (gnu packages nano) #:use-module (gnu packages ncurses) @@ -137,7 +139,8 @@ #:use-module (gnu packages tls) #:use-module (gnu packages) #:use-module (ice-9 match) - #:use-module (srfi srfi-1)) + #:use-module (srfi srfi-1) + #:export (make-gitolite)) (define-public breezy (package @@ -221,14 +224,14 @@ Python 3.3 and later, rather than on Python 2.") (define-public git (package (name "git") - (version "2.37.3") + (version "2.39.1") (source (origin - (method url-fetch) - (uri (string-append "mirror://kernel.org/software/scm/git/git-" - version ".tar.xz")) - (sha256 - (base32 - "0yp8hdj0w18jhmmdflzz74z418cw95i08pc22yycyn8nyvbl2il1")))) + (method url-fetch) + (uri (string-append "mirror://kernel.org/software/scm/git/git-" + version ".tar.xz")) + (sha256 + (base32 + "0qf1wly7zagg23svpv533va5v213y7y3lfw76ldkf35k8w48m8s0")))) (build-system gnu-build-system) (native-inputs `(("native-perl" ,perl) @@ -248,15 +251,12 @@ Python 3.3 and later, rather than on Python 2.") version ".tar.xz")) (sha256 (base32 - "053lj9wy8y2yr5jzpb0af4w50gz3ckhgc15wqx7is4z6k9a76lww")))) + "0xf7ki90xw77nvmnkw50xaivyfi8jddfq0h8crzi7m9zjs7aa8mm")))) ;; For subtree documentation. ("asciidoc" ,asciidoc) - ("docbook2x" ,docbook2x) ("docbook-xsl" ,docbook-xsl) - ("libxslt" ,libxslt) - ("pkg-config" ,pkg-config) - ("texinfo" ,texinfo) - ("xmlto" ,xmlto))) + ("xmlto" ,xmlto) + ("pkg-config" ,pkg-config))) (inputs `(("curl" ,curl) ("expat" ,expat) @@ -903,7 +903,7 @@ write native speed custom Git applications in any language with bindings.") (define-public git-crypt (package (name "git-crypt") - (version "0.6.0") + (version "0.7.0") (source (origin (method git-fetch) @@ -912,7 +912,7 @@ write native speed custom Git applications in any language with bindings.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1ba5s0fvmd9hhnfhfsjrm40v0qpxfnwc8vmm55m0k4dryzkzx66q")))) + (base32 "0ymk2z0jfyhycia8hg6wbj2g06m163yzqzanfk172cxb13fa8c26")))) (build-system gnu-build-system) (inputs (list git openssl)) @@ -956,7 +956,7 @@ to lock down your entire repository.") (define-public git-remote-gcrypt (package (name "git-remote-gcrypt") - (version "1.4") + (version "1.5") (source (origin (method git-fetch) (uri (git-reference @@ -965,7 +965,7 @@ to lock down your entire repository.") (file-name (git-file-name name version)) (sha256 (base32 - "1x5ca1fi0hyn5w5mnz230x27bqr8j78adnzmlc7cbhzr13q36y5q")))) + "1m1wlbqpqyhh2z0ka3gjs5yabd32nnkzw5hak6czcqrhhkfsqbmv")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -1403,7 +1403,7 @@ manipulate them in various ways.") (define-public vcsh (package (name "vcsh") - (version "1.20190621-4") + (version "2.0.5") (source (origin (method git-fetch) @@ -1412,25 +1412,30 @@ manipulate them in various ways.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1gx5nbqyprgy6picns5hxky3lyzkqfq3xhm614f0wcdi58xrsdh0")))) + (base32 "15lb09c2q261p1pp5r7j9k8389ybrd2q19xhnp1nnha6gs78i4wq")))) (build-system gnu-build-system) (native-inputs - (list which)) + (list autoconf + automake + ;; for man page + ronn-ng + ;; for tests + perl + perl-test-harness + perl-shell-command + perl-test-most + ;; for bash-completion + pkg-config)) (inputs - (list git perl perl-test-harness perl-shell-command perl-test-most)) + (list git)) (arguments '(#:phases (modify-phases %standard-phases - (delete 'configure) - (delete 'build) - (add-after 'install 'install-bash-completion - ;; As of 1.20190621, zsh completion is installed by default but bash - ;; completion is not. Do so manually. - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (completions (string-append out "/etc/bash_completion.d"))) - (mkdir-p completions) - (copy-file "_vcsh_bash" (string-append completions "/vcsh")))))) + (add-before 'bootstrap 'fix-version-gen + (lambda _ + (call-with-output-file ".tarball-version" + (lambda (port) + (display version port)))))) #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) #:test-target "test")) @@ -1480,7 +1485,9 @@ linear. It will test every change between two points in the DAG. It will also walk each side of a merge and test those changes individually.") (license (license:x11-style "file://LICENSE"))))) -(define-public gitolite +(define* (make-gitolite #:optional (extra-inputs '())) + "Make a gitolite package object with EXTRA-INPUTS added to the binary +wrappers, to be used for optional gitolite extensions." (package (name "gitolite") (version "3.6.12") @@ -1495,91 +1502,89 @@ also walk each side of a merge and test those changes individually.") (base32 "05xw1pmagvkrbzga5pgl3xk9qyc6b5x73f842454f3w9ijspa8zy")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ; no tests - #:phases (modify-phases %standard-phases - (delete 'configure) - (delete 'build) - (add-before 'install 'patch-scripts - (lambda* (#:key inputs #:allow-other-keys) - (let ((perl (search-input-file inputs "/bin/perl"))) - ;; This seems to take care of every shell script that - ;; invokes Perl. - (substitute* (find-files ".") - ((" perl -") - (string-append " " perl " -"))) - - (substitute* (find-files "src/triggers" ".*") - ((" sed ") - (string-append " " (which "sed") " "))) - - (substitute* - '("src/triggers/post-compile/update-gitweb-access-list" - "src/triggers/post-compile/ssh-authkeys-split" - "src/triggers/upstream") - ((" grep ") - (string-append " " (which "grep") " "))) - - ;; Avoid references to the store in authorized_keys. - ;; This works because gitolite-shell is in the PATH. - (substitute* "src/triggers/post-compile/ssh-authkeys" - (("\\$glshell \\$user") - "gitolite-shell $user"))))) - (add-before 'install 'patch-source - (lambda* (#:key inputs #:allow-other-keys) - ;; Gitolite uses cat to test the readability of the - ;; pubkey - (substitute* "src/lib/Gitolite/Setup.pm" - (("\"cat ") - (string-append "\"" (which "cat") " ")) - (("\"ssh-keygen") - (string-append "\"" (which "ssh-keygen")))) - - (substitute* '("src/lib/Gitolite/Hooks/PostUpdate.pm" - "src/lib/Gitolite/Hooks/Update.pm") - (("/usr/bin/perl") - (search-input-file inputs "/bin/perl"))) - - (substitute* "src/lib/Gitolite/Common.pm" - (("\"ssh-keygen") - (string-append "\"" (which "ssh-keygen"))) - (("\"logger\"") - (string-append "\"" - (assoc-ref inputs "inetutils") - "/bin/logger\""))) - - (substitute* "src/lib/Gitolite/Cache.pm" - (("/usr/sbin/redis-server") "redis-server")) - - (substitute* "src/commands/svnserve" - (("/usr/bin/svnserve") "svnserve")))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((output (assoc-ref outputs "out")) - (sharedir (string-append output "/share/gitolite")) - (bindir (string-append output "/bin"))) - (mkdir-p sharedir) - (mkdir-p bindir) - (invoke "./install" "-to" sharedir) - ;; Create symlinks for executable scripts in /bin. - (for-each (lambda (script) - (symlink (string-append sharedir "/" script) - (string-append bindir "/" script))) - '("gitolite" "gitolite-shell"))))) - (add-after 'install 'wrap-scripts - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (coreutils (assoc-ref inputs "coreutils")) - (findutils (assoc-ref inputs "findutils")) - (git (assoc-ref inputs "git"))) - (for-each (lambda (file-name) - (wrap-program (string-append out file-name) - `("PATH" ":" prefix - ,(map (lambda (dir) - (string-append dir "/bin")) - (list out coreutils findutils git))))) - '("/bin/gitolite" "/bin/gitolite-shell")))))))) + (list #:tests? #f ; no tests + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (add-before 'install 'patch-scripts + (lambda* _ + ;; This seems to take care of every shell script that + ;; invokes Perl. + (substitute* (find-files ".") + ((" perl -") + (string-append " " #$perl "/bin/perl" " -"))) + + (substitute* (find-files "src/triggers" ".*") + ((" sed ") + (string-append " " #$sed "/bin/sed" " "))) + + (substitute* + '("src/triggers/post-compile/update-gitweb-access-list" + "src/triggers/post-compile/ssh-authkeys-split" + "src/triggers/upstream") + ((" grep ") + (string-append " " #$grep "/bin/grep" " "))) + + ;; Avoid references to the store in authorized_keys. + ;; This works because gitolite-shell is in the PATH. + (substitute* "src/triggers/post-compile/ssh-authkeys" + (("\\$glshell \\$user") + "gitolite-shell $user")))) + (add-before 'install 'patch-source + (lambda* _ + ;; Gitolite uses cat to test the readability of the + ;; pubkey + (substitute* "src/lib/Gitolite/Setup.pm" + (("\"cat ") + (string-append "\"" #$coreutils "/bin/cat" " ")) + (("\"ssh-keygen") + (string-append "\"" #$openssh "/bin/ssh-keygen"))) + + (substitute* '("src/lib/Gitolite/Hooks/PostUpdate.pm" + "src/lib/Gitolite/Hooks/Update.pm") + (("/usr/bin/perl") + (string-append #$perl "/bin/perl"))) + + (substitute* "src/lib/Gitolite/Common.pm" + (("\"ssh-keygen") + (string-append "\"" #$openssh "/bin/ssh-keygen")) + (("\"logger\"") + (string-append "\"" #$inetutils "/bin/logger\""))) + + (substitute* "src/lib/Gitolite/Cache.pm" + (("/usr/sbin/redis-server") "redis-server")) + + (substitute* "src/commands/svnserve" + (("/usr/bin/svnserve") "svnserve")))) + (replace 'install + (lambda* _ + (let* ((sharedir (string-append #$output "/share/gitolite")) + (bindir (string-append #$output "/bin"))) + (mkdir-p sharedir) + (mkdir-p bindir) + (invoke "./install" "-to" sharedir) + ;; Create symlinks for executable scripts in /bin. + (for-each (lambda (script) + (symlink (string-append sharedir "/" script) + (string-append bindir "/" script))) + '("gitolite" "gitolite-shell"))))) + (add-after 'install 'wrap-scripts + (lambda* _ + (for-each (lambda (file-name) + (wrap-program (string-append #$output file-name) + `("PATH" ":" prefix + ,(map (lambda (dir) + (string-append dir "/bin")) + (list #$output + #$coreutils + #$findutils + #$git + #$@extra-inputs))))) + '("/bin/gitolite" "/bin/gitolite-shell"))))))) (inputs - (list bash-minimal coreutils findutils git inetutils openssh perl)) + (append (list bash-minimal coreutils findutils git inetutils openssh perl) + extra-inputs)) (home-page "https://gitolite.com") (synopsis "Git access control layer") (description @@ -1587,6 +1592,8 @@ also walk each side of a merge and test those changes individually.") control to Git repositories.") (license license:gpl2))) +(define-public gitolite (make-gitolite)) + (define-public gitile (package (name "gitile") @@ -2231,7 +2238,7 @@ standards-compliant ChangeLog entries based on the changes that it detects.") (define-public diffstat (package (name "diffstat") - (version "1.64") + (version "1.65") (source (origin (method url-fetch) (uri @@ -2242,7 +2249,7 @@ standards-compliant ChangeLog entries based on the changes that it detects.") "diffstat-" version ".tgz"))) (sha256 (base32 - "1z7pwcv48fjnhxrjcsjdy83x8b9ckl582mbbds90a79fkn6y7bmq")))) + "12m2aysq6syw83bn4gqhpm284a2ran8w6m8pja2wvsvdj8j79wlc")))) (build-system gnu-build-system) (home-page "https://invisible-island.net/diffstat/") (synopsis "Make histograms from the output of @command{diff}") @@ -2387,82 +2394,6 @@ as possible. Resolution of contention for source files, a major headache for any project with more than one developer, is one of Aegis's major functions.") (license license:gpl3+))) -(define-public reposurgeon - (package - (name "reposurgeon") - (version "3.43") - (source (origin - (method url-fetch) - (uri (string-append "http://www.catb.org/~esr/" name "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "1af0z14wcm4bk5a9ysinbwq2fp3lf5f7i8mvwh7286hr3fnagcaz")) - (patches (search-patches - "reposurgeon-add-missing-docbook-files.patch")))) - (build-system gnu-build-system) - (arguments - `(#:make-flags - (list "ECHO=echo" - (string-append "target=" (assoc-ref %outputs "out"))) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-inputs - (lambda* (#:key inputs #:allow-other-keys) - (let ((tzdata (assoc-ref inputs "tzdata"))) - (substitute* "reposurgeon" - (("/usr/share/zoneinfo") - (string-append tzdata "/share/zoneinfo"))) - (substitute* "test/svn-to-svn" - (("/bin/echo") "echo")) - #t))) - (delete 'configure) ; no configure script - (add-before 'build 'fix-docbook - (lambda* (#:key inputs #:allow-other-keys) - (substitute* (find-files "." "\\.xml$") - (("docbook/docbookx.dtd") - (string-append (assoc-ref inputs "docbook-xml") - "/xml/dtd/docbook/docbookx.dtd"))) - #t)) - (add-before 'check 'set-up-test-environment - (lambda* (#:key inputs #:allow-other-keys) - (let ((tzdata (assoc-ref inputs "tzdata"))) - (setenv "TZDIR" (string-append tzdata "/share/zoneinfo")) - #t))) - (add-after 'install 'install-emacs-data - (lambda* (#:key outputs #:allow-other-keys) - (install-file "reposurgeon-mode.el" - (string-append (assoc-ref outputs "out") - "/share/emacs/site-lisp")) - #t))))) - (inputs - `(("python" ,python-wrapper) - ("tzdata" ,tzdata))) - (native-inputs - (list ;; For building documentation. - asciidoc - docbook-xml - docbook-xsl - libxml2 - xmlto - ;; For tests. - cvs - git - mercurial - subversion)) - (home-page "http://www.catb.org/~esr/reposurgeon/") - (synopsis "Edit version-control repository history") - (description "Reposurgeon enables risky operations that version-control -systems don't want to let you do, such as editing past comments and metadata -and removing commits. It works with any version control system that can -export and import Git fast-import streams, including Git, Mercurial, Fossil, -Bazaar, CVS, RCS, and Src. It can also read Subversion dump files directly -and can thus be used to script production of very high-quality conversions -from Subversion to any supported Distributed Version Control System (DVCS).") - ;; Most files are distributed under bsd-2, except 'repocutter' which is - ;; under bsd-3. - (license (list license:bsd-2 license:bsd-3)))) - (define-public tig (package (name "tig") @@ -2720,25 +2651,20 @@ by rclone usable with git-annex.") (define-public fossil (package (name "fossil") - (version "2.18") + (version "2.20") (source (origin (method url-fetch) (uri (string-append "https://www.fossil-scm.org/home/tarball/" - "84f25d7eb10c0714109d69bb2809abfa8b4b5c3d73b151a5b10df724dacd46d8" + "210e89a0597f225f49722b096cf5563bf193e920e02a9bd38503a906deacd416" "/fossil-src-" version ".tar.gz")) ;; XXX: Currently the above hash must be manually updated. (sha256 - (base32 "0cq7677p84nnbfvk2dsh3c3y900gslw3zaw8iipfq932vmf1s31h")) + (base32 "08g7img88n2nwcdkpzmg4aqbp2iy40nllgas53502dspm97ym4h8")) (modules '((guix build utils))) (snippet - '(begin - (delete-file-recursively "compat") - ;; Disable obsolete SQLite feature check; remove for 2.19. - (substitute* "tools/sqlcompattest.c" - ((".*\"ENABLE_JSON1\".*") - "")))))) + '(delete-file-recursively "compat")))) (build-system gnu-build-system) (native-inputs (list tcl ;for configuration only @@ -3458,3 +3384,69 @@ Git project instead of @command{git filter-branch}.") "Gitlint is a Git commit message linter written in Python: it checks your commit messages for style.") (license license:expat))) + +(define-public hut + (package + (name "hut") + (version "0.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~emersion/hut") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ybngrwwmkm00dlkdhvkfcvcjhp5xzs8fh90zqr0h12ssqx9pll3")))) + (build-system go-build-system) + (arguments + (list + #:import-path "git.sr.ht/~emersion/hut" + #:phases + #~(modify-phases %standard-phases + (replace 'build + (lambda* (#:key import-path #:allow-other-keys) + (with-directory-excursion (string-append "src/" import-path) + ;; The flags are copied from (guix build go-build-system). + (setenv "CGO_LDFLAGS" "-s -w") + (invoke "make" "all" "GOFLAGS=-v -x")))) + (replace 'install + (lambda* (#:key import-path #:allow-other-keys) + (with-directory-excursion (string-append "src/" import-path) + (invoke "make" "install" + (string-append "PREFIX=" #$output)))))))) + (native-inputs + (list scdoc)) + (inputs + (list go-git-sr-ht-emersion-go-scfg + go-git-sr-ht-emersion-gqlclient + go-github-com-juju-ansiterm + go-github-com-spf13-cobra + go-golang-org-x-oauth2 + go-golang-org-x-term)) + (home-page "https://git.sr.ht/~emersion/hut") + (synopsis "CLI tool for sr.ht") + (description "@command{hut} is a CLI tool for +@uref{https://sr.ht/~sircmpwn/sourcehut/, sr.ht}. It helps you interact with +sr.ht's public services: +@table @asis +@item builds +submit and manage build jobs +@item git +create, and manage git repositories and artifacts +@item hg +list Mercurial repositories +@item lists +manage mailing lists and patches +@item meta +manage PGP, and SSH keys +@item pages +publish and manage hosted websites +@item paste +create and manage pastes +@item todo +create and manage trackers, tickets +@item graphql +interact with GraphQL APIs directly +@end table") + (license license:agpl3))) |