diff options
Diffstat (limited to 'gnu/packages/version-control.scm')
-rw-r--r-- | gnu/packages/version-control.scm | 275 |
1 files changed, 197 insertions, 78 deletions
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index a7a701629f..cbdd1a89a2 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015, 2016 Mathieu Lirzin <[email protected]> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <[email protected]> ;;; Copyright © 2014, 2016, 2019, 2021 Eric Bavier <[email protected]> -;;; Copyright © 2015-2023 Flashner <[email protected]> +;;; Copyright © 2015-2024 Flashner <[email protected]> ;;; Copyright © 2015, 2018, 2020, 2021, 2022 Kyle Meyer <[email protected]> ;;; Copyright © 2015, 2017, 2018, 2020 Ricardo Wurmus <[email protected]> ;;; Copyright © 2016, 2017 Leo Famulari <[email protected]> @@ -50,6 +50,8 @@ ;;; Copyright © 2023 Nicolas Graves <[email protected]> ;;; Copyright © 2023 Kjartan Oli Agustsson <[email protected]> ;;; Copyright © 2023 Steve George <[email protected]> +;;; Copyright © 2023 Josselin Poiret <[email protected]> +;;; Copyright © 2024 Hilton Chain <[email protected]> ;;; ;;; This file is part of GNU Guix. ;;; @@ -81,6 +83,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system go) #:use-module (guix build-system perl) + #:use-module (guix build-system pyproject) #:use-module (guix build-system python) #:use-module (guix build-system qt) #:use-module (guix build-system trivial) @@ -94,6 +97,7 @@ #:use-module (gnu packages check) #:use-module (gnu packages cook) #:use-module (gnu packages crates-io) + #:use-module (gnu packages crates-vcs) #:use-module (gnu packages curl) #:use-module (gnu packages databases) #:use-module (gnu packages docbook) @@ -106,8 +110,11 @@ #:use-module (gnu packages gnome) #:use-module (gnu packages gnupg) #:use-module (gnu packages golang) + #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-check) + #:use-module (gnu packages golang-crypto) #:use-module (gnu packages golang-web) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages groff) #:use-module (gnu packages guile) #:use-module (gnu packages guile-xyz) @@ -869,10 +876,10 @@ which has been extracted into a standalone library for compatibility with other git-like projects such as @code{libgit2}.") (license license:lgpl2.1+)))) -(define-public libgit2 +(define-public libgit2-1.5 (package (name "libgit2") - (version "1.5.1") + (version "1.5.2") (source (origin ;; Since v1.1.1, release artifacts are no longer offered (see: ;; https://github.com/libgit2/libgit2/discussions/5932#discussioncomment-1682729). @@ -883,7 +890,7 @@ other git-like projects such as @code{libgit2}.") (file-name (git-file-name name version)) (sha256 (base32 - "04ypzpicpgq1wh6anwcmjjyh2b854lvjhxq0hq2hbsx7kb14qc1b")) + "0v9jdaxmqrzbs9v5vhh2xf5xv9h29q8qqn8vmns279ljx1zav5yd")) (modules '((guix build utils))) (snippet '(begin @@ -906,8 +913,10 @@ other git-like projects such as @code{libgit2}.") '())) #:phases (modify-phases %standard-phases - ,@(if (target-arm32?) + ,@(if (or (target-arm32?) (target-hurd?)) ;; Some tests are flaky on armhf. + ;; On GNU/Hurd, the 'diff/workdir' test in libgit2 1.7.1 fails + ;; while comparing st.st_size to zero. '((add-before 'check 'pre-check (lambda _ (setenv "GITTEST_FLAKY_STAT" "true")))) @@ -935,10 +944,14 @@ write native speed custom Git applications in any language with bindings.") ;; GPLv2 with linking exception (license license:gpl2))) +(define-public libgit2 + ;; Default version of libgit2. + libgit2-1.5) + (define-public libgit2-1.7 (package (inherit libgit2) - (version "1.7.1") + (version "1.7.2") (source (origin (inherit (package-source libgit2)) (method git-fetch) @@ -948,7 +961,7 @@ write native speed custom Git applications in any language with bindings.") (file-name (git-file-name "libgit2" version)) (sha256 (base32 - "1wq6a91k97gbsyafla39yvn1lnr559hqc41ksz1qxv7flf5kyvfx")) + "0i95jwrwx4svh5l4dpa5r4a99f813hlm7nzzkbqzmnw4pkyxhlvx")) ;; We need to use the bundled xdiff until an option is given ;; to use the one from git. (modules '((guix build utils))) @@ -980,7 +993,7 @@ write native speed custom Git applications in any language with bindings.") (define-public libgit2-1.4 (package (inherit libgit2) - (version "1.4.5") + (version "1.4.6") (source (origin (inherit (package-source libgit2)) (method git-fetch) @@ -990,7 +1003,7 @@ write native speed custom Git applications in any language with bindings.") (file-name (git-file-name "libgit2" version)) (sha256 (base32 - "0q754ipc6skagszi93lcy6qr09ibavivm2q5i5fhpdblvlnv2p7x")))))) + "0iv7h2fdnlv5vj4dx09w71xbj004hidbpsbgv02gbvlpvsz3jpcf")))))) (define-public libgit2-1.3 (package @@ -1148,7 +1161,7 @@ collaboration using typical untrusted file hosts or services.") (invoke "tar" "--strip-components=1" "-C" "git" "-xf" (assoc-ref inputs "git-source")))) (add-after 'unpack 'patch-absolute-file-names - (lambda* (#:key inputs #:allow-other-keys) + (lambda* (#:key inputs outputs #:allow-other-keys) (define (quoted-file-name input path) (string-append "\"" input path "\"")) (substitute* "ui-snapshot.c" @@ -1160,7 +1173,7 @@ collaboration using typical untrusted file hosts or services.") (quoted-file-name (assoc-ref inputs "xz") "/bin/xz"))) (substitute* "filters/about-formatting.sh" - (("$\\(dirname $0\\)") (string-append (assoc-ref outputs "out") + (("\\$\\(dirname \\$0\\)") (string-append (assoc-ref outputs "out") "/lib/cgit/filters")) (("\\| tr") (string-append "| " (which "tr")))) @@ -2909,26 +2922,42 @@ email header.") (define-public b4 (package (name "b4") - (version "0.12.3") + (version "0.13.0") (source (origin - (method url-fetch) - (uri (pypi-uri "b4" version)) + (method git-fetch) + (uri (git-reference + (url "https://git.kernel.org/pub/scm/utils/b4/b4.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "0qpa0ahw1d86mdgs09ykq5pd0lm8083ds6j0knalw757yh31akmn")))) - (build-system python-build-system) + (base32 + "1dijszinn00r6d0lxii3jz36h2c23zavbgz1m8finp5v6kaiafcg")))) + (build-system pyproject-build-system) (arguments - (list #:tests? #f ;no tests + (list #:tests? (not (%current-target-system)) ;git path hardcoded. #:phases #~(modify-phases %standard-phases ;; XXX: dnspython attempts to read /etc/resolv.conf when loading ;; resolver.py, which breaks the sanity check in dependent ;; packages. This should rather be fixed in dnspython. - (delete 'sanity-check)))) + (delete 'sanity-check) + ;; This ensures git is present when called. + (add-after 'unpack 'hardcode-git-bin + (lambda* (#:key inputs #:allow-other-keys) + (substitute* (find-files "b4" "\\.py$") + (("\\['git'") + (string-append + "['" (search-input-file inputs "bin/git") "'")))))))) (inputs - (list python-dkimpy python-dnspython python-requests)) - (propagated-inputs - (list patatt)) + (list git-filter-repo + git-minimal + patatt + python-dkimpy + python-dnspython + python-requests)) + (native-inputs + (list python-pytest)) (home-page "https://git.kernel.org/pub/scm/utils/b4/b4.git") (synopsis "Tool for working with patches in public-inbox archives") (description @@ -3618,24 +3647,24 @@ defects faster.") (invoke git-exe "config" "--global" "user.name" "GitHub Actions") #t) #t))))) - (native-inputs - `(("go-github-com-emirpasic-gods" ,go-github-com-emirpasic-gods) - ("go-github-com-go-git-gcfg" ,go-github-com-go-git-gcfg) - ("go-github-com-go-git-go-billy" ,go-github-com-go-git-go-billy) - ("go-github-com-imdario-mergo" ,go-github-com-imdario-mergo) - ("go-github-com-jbenet-go-context" ,go-github-com-jbenet-go-context) - ("go-github-com-kevinburke-ssh-config" ,go-github-com-kevinburke-ssh-config) - ("go-github-com-mitchellh-go-homedir" ,go-github-com-mitchellh-go-homedir) - ("go-github-com-sergi-go-diff" ,go-github-com-sergi-go-diff) - ("go-github-com-xanzy-ssh-agentf" ,go-github-com-xanzy-ssh-agent) - ("go-golang-org-x-crypto" ,go-golang-org-x-crypto) - ("go-golang-org-x-net" ,go-golang-org-x-net) - ("go-gopkg-in-warnings" ,go-gopkg-in-warnings) - ("go-github-com-go-git-go-git-fixtures" ,go-github-com-go-git-go-git-fixtures) - ("go-gopkg-in-check-v1" ,go-gopkg-in-check-v1) - ("go-github-com-alcortesm-tgz" ,go-github-com-alcortesm-tgz) - ("go-golang-org-x-text" ,go-golang-org-x-text) - ("git" ,git))) + (propagated-inputs + (list go-github-com-alcortesm-tgz + go-github-com-emirpasic-gods + go-github-com-go-git-gcfg + go-github-com-go-git-go-billy + go-github-com-go-git-go-git-fixtures + go-github-com-imdario-mergo + go-github-com-jbenet-go-context + go-github-com-kevinburke-ssh-config + go-github-com-mitchellh-go-homedir + go-github-com-sergi-go-diff + go-github-com-xanzy-ssh-agent + go-golang-org-x-crypto + go-golang-org-x-net + go-golang-org-x-text + go-gopkg-in-check-v1 + go-gopkg-in-warnings)) + (native-inputs (list git)) (home-page "https://github.com/go-git/") (synopsis "Git implementation library") (description "This package provides a Git implementation library.") @@ -3717,33 +3746,34 @@ If several repos are related, it helps to see their status together.") "155sfmhmh4ia3iinm1s8fk7fxyn5dxdryad9xkbg7mr3i3ikqjwh")))) (build-system go-build-system) (arguments - '(#:install-source? #f - #:import-path "github.com/x-motemen/ghq" - #:phases - (modify-phases %standard-phases - (add-after 'install 'install-completions - (lambda* (#:key outputs import-path #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bash-completion (string-append out "/etc/bash_completion.d")) - (zsh-completion (string-append out "/share/zsh/site-functions"))) - (with-directory-excursion (string-append "src/" import-path) - (mkdir-p bash-completion) - (copy-file "misc/bash/_ghq" - (string-append bash-completion "/ghq")) - (mkdir-p zsh-completion) - (copy-file "misc/zsh/_ghq" - (string-append zsh-completion "/_ghq")))) - #t))))) + (list + #:install-source? #f + #:go go-1.21 + #:import-path "github.com/x-motemen/ghq" + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'install-completions + (lambda* (#:key outputs import-path #:allow-other-keys) + (let* ((out #$output) + (bash-completion (string-append out "/etc/bash_completion.d")) + (zsh-completion (string-append out "/share/zsh/site-functions"))) + (with-directory-excursion (string-append "src/" import-path) + (mkdir-p bash-completion) + (copy-file "misc/bash/_ghq" + (string-append bash-completion "/ghq")) + (mkdir-p zsh-completion) + (copy-file "misc/zsh/_ghq" + (string-append zsh-completion "/_ghq"))))))))) (native-inputs - `(("git" ,git-minimal))) + (list git-minimal)) (inputs - `(("github.com/songmu/gitconfig" ,go-github-com-songmu-gitconfig) - ("github.com/mattn/go-isatty" ,go-github-com-mattn-go-isatty) - ("github.com/motemen/go-colorine" ,go-github-com-motemen-go-colorine) - ("github.com/saracen/walker" ,go-github-com-saracen-walker) - ("github.com/urfave/cli/v2" ,go-github-com-urfave-cli-v2) - ("golang.org/x/net/html" ,go-golang-org-x-net-html) - ("golang.org/x/sync/errgroup" ,go-golang.org-x-sync-errgroup))) + (list go-github-com-songmu-gitconfig + go-github-com-mattn-go-isatty + go-github-com-motemen-go-colorine + go-github-com-saracen-walker + go-github-com-urfave-cli-v2 + go-golang-org-x-net-html + go-golang.org-x-sync-errgroup)) (synopsis "Manage remote repository clones") (description "@code{ghq} provides a way to organize remote repository clones, like @@ -3835,25 +3865,64 @@ TkDiff is included for browsing and merging your changes.") (define-public git-filter-repo (package (name "git-filter-repo") - (version "2.29.0") + (version "2.38.0") (source (origin - ;; Use a release tarball instead of 'git-fetch' because it contains - ;; pre-compiled man-pages which are too hard to build in this context - ;; as it depends on Git's Makefile. - (method url-fetch) - (uri (string-append "https://github.com/newren/git-filter-repo/releases/" - "download/v" version - "/git-filter-repo-" version ".tar.xz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/newren/git-filter-repo") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "00nn7k9jqrybb762486fmigsnbcn9lbvimgpfvvarz4ikdp9y9pb")))) - (build-system copy-build-system) + "1al43zpw1mdfy9i05w4xw178abypjwnkk52lqvmbl19lr1l47r4i")) + ;; Modified from <https://github.com/newren/git-filter-repo/pull/477>. + ;; Used with 'unpack-git-source phase. + (patches (search-patches "git-filter-repo-generate-doc.patch")))) + (build-system gnu-build-system) (arguments - `(#:install-plan - '(("git-filter-repo" "libexec/git-core/") - ("Documentation/man1/" "share/man/man1") - ("/" "" #:include ())))) + (list + #:tests? #f ;No tests. + #:imported-modules + `(,@%gnu-build-system-modules + (guix build python-build-system)) + #:modules + '((guix build gnu-build-system) + ((guix build python-build-system) #:select (site-packages)) + (guix build utils) + (srfi srfi-26)) + #:make-flags + #~(list (string-append "prefix=" #$output) + (string-append "VERSION=" #$(package-version this-package))) + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'unpack-git-source + (lambda _ + (let* ((old-path (getcwd)) + (doc-source (string-append old-path "/Documentation"))) + (mkdir-p "git-source") + (chdir "git-source") + ((assoc-ref %standard-phases 'unpack) + #:source #+(package-source git)) + (for-each + (cut install-file <> doc-source) + (find-files "." "asciidoc\\.conf$|manpage.*\\.xsl$")) + (chdir old-path) + (delete-file-recursively "git-source")))) + (add-before 'build 'set-pythondir + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "Makefile" + (("(pythondir = ).*" _ pre) + (string-append pre (site-packages inputs outputs)))))) + (replace 'build + (lambda* (#:key make-flags #:allow-other-keys) + (apply invoke "make" "doc" make-flags)))))) + (native-inputs + (list asciidoc + docbook-xsl + libxml2 ;for XML_CATALOG_FILES + xmlto)) (inputs (list python)) ;for the shebang (home-page "https://github.com/newren/git-filter-repo") (synopsis "Quickly rewrite Git repository history") @@ -3999,3 +4068,53 @@ file into Darcs, Git, Mercurial, Bazaar, Subversion, or CVS repositories. It comes as a command line app and also an Emacs interface.") (home-page "https://porkrind.org/commit-patch/") (license license:gpl2+))) + +(define-public git-sizer + (package + (name "git-sizer") + (version "1.5.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/github/git-sizer") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1b4sl4djnfaxwph41y4bh9yal4bpd1nz4403ryp7nzna7h2x0zis")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/github/git-sizer" + #:install-source? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key outputs #:allow-other-keys) + (substitute* '("src/github.com/github/git-sizer/git_sizer_test.go") + (("bin/git-sizer") + (string-append (assoc-ref outputs "out") + "/bin/git-sizer"))))) + (replace 'check + (lambda* (#:key tests? import-path #:allow-other-keys) + (when tests? + (for-each (lambda (test) + (invoke "go" "test" "-v" "-run" test import-path)) + ;; TestExec and TestSubmodule require a copy of the + ;; Git repository. + '("TestBomb" "TestFromSubdir" "TestRefgroups" + "TestRefSelections" "TestTaggedTags")))))))) + (native-inputs (list git)) + (propagated-inputs + (list go-github-com-cli-safeexec + go-github-com-davecgh-go-spew + go-github-com-pmezard-go-difflib + go-github-com-spf13-pflag + go-github-com-stretchr-testify + go-go-uber-org-goleak + go-golang-org-x-sync + go-gopkg-in-yaml-v3)) + (home-page "https://github.com/github/git-sizer") + (synopsis "Analyze size of a Git repo") + (description "Compute various size metrics for a Git repository, flagging +those that might cause problems or inconvenience.") + (license license:expat))) |