;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2016, 2019 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2015, 2018 Kyle Meyer <kyle@kyleam.com>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2018, 2020, 2021 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2015, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is>
-;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2017 André <eu@euandre.org>
+;;; Copyright © 2017, 2020 EuAndreh <eu@euandre.org>
;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
-;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2017, 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2018 Timothy Sample <samplet@ngyro.com>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2020 John D. Boy <jboy@bius.moe>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
+;;; Copyright © 2021 Léo Le Bouter <lle-bout@zaclys.net>
+;;; Copyright © 2021 LibreMiami <packaging-guix@libremiami.org>
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix hg-download)
#:use-module (guix build-system cmake)
+ #:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
+ #:use-module (guix build-system perl)
#:use-module (guix build-system python)
#:use-module (guix build-system trivial)
#:use-module (gnu packages apr)
#:use-module (gnu packages ed)
#:use-module (gnu packages file)
#:use-module (gnu packages flex)
+ #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gl)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages golang)
#:use-module (gnu packages groff)
#:use-module (gnu packages guile)
#:use-module (gnu packages image)
#:use-module (gnu packages perl-check)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-build)
+ #:use-module (gnu packages python-check)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages readline)
(define-public git
(package
(name "git")
- (version "2.26.2")
+ (version "2.31.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "0j685w6pzkn926z5nf5r8fij4ziipvw4c9yb0wc577nzf4j16rbd"))))
+ "10367n5sv4nsgaxy486pbp7nscx34vjk8vrb06jm9ffm8ix42qcz"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
version ".tar.xz"))
(sha256
(base32
- "0rb4f4jc31zrcg4gyjg4fi07dw7nggkjg2nqfiq5p1aayw2f2ga3"))))
+ "00n7vbfmd3ywgjksgwrszwj0l2niba64qkaq07ra4p8mawy483ax"))))
;; For subtree documentation.
("asciidoc" ,asciidoc-py3)
("docbook-xsl" ,docbook-xsl)
- ("xmlto" ,xmlto)))
+ ("xmlto" ,xmlto)
+ ("pkg-config" ,pkg-config)))
(inputs
`(("curl" ,curl)
("expat" ,expat)
;; For 'git gui', 'gitk', and 'git citool'.
("tcl" ,tcl)
- ("tk" ,tk)))
+ ("tk" ,tk)
+
+ ;; For 'git-credential-libsecret'
+ ("glib" ,glib)
+ ("libsecret" ,libsecret)))
(outputs '("out" ; the core
"send-email" ; for git-send-email
"svn" ; git-svn
"credential-netrc" ; git-credential-netrc
+ "credential-libsecret" ; git-credential-libsecret
"subtree" ; git-subtree
"gui")) ; gitk, git gui
(arguments
#:modules ((srfi srfi-1)
(srfi srfi-26)
+ ((guix build gnu-build-system) #:prefix gnu:)
,@%gnu-build-system-modules)
#:phases
(modify-phases %standard-phases
;; specified in the XML, unlike the above substitution. Instead it
;; uses a hard-coded URL. Work around it here, but if this is
;; common perhaps we should hardcode this path in xmlto itself.
- (("\\$\\(XMLTO\\) -m \\$\\(MANPAGE_XSL\\) man")
+ (("\\$\\(XMLTO\\) -m \\$\\(MANPAGE_XSL\\)")
(string-append "$(XMLTO) -x "
(string-append (assoc-ref inputs "docbook-xsl")
"/xml/xsl/docbook-xsl-"
,(package-version docbook-xsl))
- "/manpages/docbook.xsl -m $(MANPAGE_XSL) man")))
+ "/manpages/docbook.xsl -m $(MANPAGE_XSL)")))
(invoke "make")
(invoke "make" "install")
(invoke "make" "install-doc")
`("PERL5LIB" ":" prefix
(,(string-append (assoc-ref outputs "out") "/share/perl5"))))
#t)))
+ (add-after 'install 'install-credential-libsecret
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((libsecret (assoc-ref outputs "credential-libsecret")))
+ (with-directory-excursion "contrib/credential/libsecret"
+ ((assoc-ref gnu:%standard-phases 'build))
+ (install-file "git-credential-libsecret"
+ (string-append libsecret "/bin"))
+ #t))))
(add-after 'install 'install-subtree
(lambda* (#:key outputs #:allow-other-keys)
(let ((subtree (assoc-ref outputs "subtree")))
(install-file "contrib/subtree/git-subtree.1"
(string-append subtree "/share/man/man1"))
#t)))
+ (add-after 'install 'restore-sample-hooks-shebang
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (dir (string-append out "/share/git-core/templates/hooks")))
+ (for-each (lambda (file)
+ (format #t "restoring shebang on `~a'~%" file)
+ (substitute* file
+ (("^#!.*/bin/sh") "#!/bin/sh")))
+ (find-files dir ".*"))
+ #t)))
(add-after 'install 'split
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Split the binaries to the various outputs.
(delete 'install-man-pages)
(delete 'install-subtree)
(delete 'install-credential-netrc)
- (add-before 'check 'delete-svn-test
- (lambda _
- ;; This test cannot run since we are not building 'git-svn'.
- (delete-file "t/t9020-remote-svn.sh")
- #t))
+ (delete 'install-credential-libsecret)
(add-after 'install 'remove-unusable-perl-commands
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
("perl" ,perl)
("zlib" ,zlib)))))
+(define-public git2cl
+ (let ((commit "1d74d4c0d933fc69ed5cec838c73502584dead05"))
+ (package
+ (name "git2cl")
+ (version (string-append "20120919." (string-take commit 7)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.savannah.nongnu.org/git/git2cl.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0wnnbm2sjvfj0qrksj89jlnl69miwl0vk3wrrvgvpclgys3na2g1"))))
+ (build-system copy-build-system)
+ (inputs
+ `(("perl" ,perl)))
+ (arguments
+ `(#:install-plan '(("git2cl" "bin/git2cl"))))
+ (home-page "https://savannah.nongnu.org/projects/git2cl")
+ (synopsis "Convert Git logs to GNU ChangeLog format")
+ (description "@code{git2cl} is a command line tool for converting Git
+logs to GNU ChangeLog format.")
+ (license license:gpl2+))))
+
(define-public gitless
(package
(name "gitless")
on @command{git}, and use any regular Git hosting service.")
(license license:expat)))
+(define-public git-cal
+ (package
+ (name "git-cal")
+ (version "0.9.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/k4rthik/git-cal")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "08s9sif3qlk5n2dqpzq5yjczggnqlnxldljspjdqgpfydb2dqg3z"))))
+ (build-system perl-build-system)
+ (home-page "https://github.com/k4rthik/git-cal/")
+ (synopsis "GitHub like contributions calendar for terminal")
+ (description "@code{git-cal} is a script to view commits calendar similar
+to GitHub contributions calendar.")
+ (license license:expat)))
+
(define-public libgit2
(package
(name "libgit2")
- (version "1.0.0")
+ (version "1.1.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/libgit2/libgit2/"
"/libgit2-" version ".tar.gz"))
(sha256
(base32
- "1d09ni0v3vammk8zqmmwks92fh3wwnsxpyrh4s5wwdb3gxma27va"))
+ "1fjdglkh04qv3b4alg621pxa689i0wlf8m7nf2755zawjr2zhwxd"))
(patches (search-patches "libgit2-mtime-0.patch"))
(snippet '(begin
(delete-file-recursively "deps") #t))
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/AGWA/git-crypt.git")
+ (url "https://github.com/AGWA/git-crypt")
(commit version)))
(file-name (git-file-name name version))
(sha256
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/davisp/ghp-import.git")
+ (url "https://github.com/davisp/ghp-import")
(commit version)))
(file-name (git-file-name name version))
(sha256
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/kward/shflags.git")
+ (url "https://github.com/kward/shflags")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(define-public stgit
(package
(name "stgit")
- (version "0.21")
+ (version "1.0")
(source
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/ctmarinas/stgit.git")
+ (url "https://github.com/ctmarinas/stgit")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "00pmz93znl418lsjwy4mr0chp8i2w27h1xjysa05f62smsv91yyc"))))
+ (base32 "0dixgvjlsk3xisj8blzdhh0nphm5zqkjbj081wgsba52z4zq1y0q"))))
(build-system python-build-system)
(native-inputs
`(("perl" ,perl)))
"PERL_PATH=perl"
(string-append "SHELL_PATH=" (which "bash"))
"test"))))))
- (home-page "http://procode.org/stgit/")
+ (home-page "https://stacked-git.github.io/")
(synopsis "Stacked Git")
(description
"StGit is a command-line application that provides functionality similar
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/RichiH/vcsh.git")
+ (url "https://github.com/RichiH/vcsh")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(define-public gitolite
(package
(name "gitolite")
- (version "3.6.11")
+ (version "3.6.12")
(source
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/sitaramc/gitolite.git")
+ (url "https://github.com/sitaramc/gitolite")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1rkj7gknwjlc5ij9w39zf5mr647bm45la57yjczydmvrb8c56yrh"))))
+ (base32 "05xw1pmagvkrbzga5pgl3xk9qyc6b5x73f842454f3w9ijspa8zy"))))
(build-system gnu-build-system)
(arguments
- '(#:tests? #f ; no tests
+ '(#:tests? #f ; no tests
#:phases (modify-phases %standard-phases
(delete 'configure)
(delete 'build)
control to Git repositories.")
(license license:gpl2)))
-(define (mercurial-patch name revision hash)
- (origin
- (method url-fetch)
- (uri (string-append "https://www.mercurial-scm.org/repo/hg/raw-rev/" revision))
- (file-name (string-append "mercurial-" name ".patch"))
- (sha256 (base32 hash))))
-
-(define %mercurial-patches
- (list
- ;; These three patches fixes compatibility with the updated gzip module
- ;; in Python 3.8.2: <https://bz.mercurial-scm.org/show_bug.cgi?id=6284>.
- (mercurial-patch "python-mtime" "6c36a521572edf3a79ee567b118469b3192037cc"
- "0bmm7y40r8s081ws2sjvn1v8kvyfan4a97jl0fhdh7yc2pzxlzqq")
- (mercurial-patch "indent-gzip" "a23b859ad17dd0a5b9bb37846b69b5e30f99c44c"
- "1spscv9dgqv38m7h1liki93ax6w97gxayg17fr7wr6acjdfccpr9")
- (mercurial-patch "python-gzip" "b7ca03dff14c63d64ad7bfa36a2d0a36a6b62253"
- "0p88ffhx0kk21ssrsb156ffhpcb7g8mkwwkmq49qpmbm5ag2paf0")
- ;; This fixes an incompatibility with os.isfile in Python 3.8:
- ;; <https://bz.mercurial-scm.org/show_bug.cgi?id=6287>.
- (mercurial-patch "os-isfile" "6a8738dc4a019da4c9df5c26961aa09d45ce1c68"
- "0lr069m12kzrkmr1pmhaxg5lxmdwxabsza61qp1i1q70g7sy8lvy")))
+(define-public pre-commit
+ (package
+ (name "pre-commit")
+ (version "2.8.1")
+ (source
+ (origin
+ ;; No tests in the PyPI tarball.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pre-commit/pre-commit")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0b3ks6viccq3n4p8i8zgfd40vp1k5nkhmmlz7p4nxcdizw8zxgn8"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'set-up-git
+ (lambda _
+ ;; Change from /homeless-shelter to /tmp for write permission.
+ (setenv "HOME" "/tmp")
+ ;; Environment variables used in the tests.
+ (setenv "GIT_AUTHOR_NAME" "Your Name")
+ (setenv "GIT_COMMITTER_NAME" "Your Name")
+ (setenv "GIT_AUTHOR_EMAIL" "you@example.com")
+ (setenv "GIT_COMMITTER_EMAIL" "you@example.com")
+ (invoke "git" "config" "--global" "user.name" "Your Name")
+ (invoke "git" "config" "--global" "user.email" "you@example.com")
+ #t))
+ (replace 'check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (invoke "pytest" "tests" "-k"
+ (string-append
+ ;; Disable conda tests.
+ "not test_conda_hook"
+ " and not test_conda_with_additional_dependencies_hook"
+ " and not test_local_conda_additional_dependencies"
+ ;; Disable cpan tests.
+ " and not test_local_perl_additional_dependencies"
+ " and not test_perl_hook"
+ ;; Disable Ruby tests.
+ " and not test_additional_ruby_dependencies_installed"
+ " and not test_install_rbenv"
+ " and not test_install_rbenv_with_version"
+ " and not test_run_a_ruby_hook"
+ " and not test_run_ruby_hook_with_disable_shared_gems"
+ " and not test_run_versioned_ruby_hook"
+ ;; Disable Cargo tests.
+ " and not test_additional_rust_cli_dependencies_installed"
+ " and not test_additional_rust_lib_dependencies_installed"
+ " and not test_local_rust_additional_dependencies"
+ " and not test_rust_hook"
+ ;; Disable dotnet tests.
+ " and not test_dotnet_hook"
+ ;; Disable nodejs tests.
+ " and not test_unhealthy_if_system_node_goes_missing"
+ " and not test_installs_without_links_outside_env"
+ " and not test_healthy_system_node"
+ ;; Disable python2 test.
+ " and not test_switch_language_versions_doesnt_clobber"
+ ;; These tests try to open a network socket.
+ " and not test_additional_golang_dependencies_installed"
+ " and not test_additional_node_dependencies_installed"
+ " and not test_golang_hook"
+ " and not test_golang_hook_still_works_when_gobin_is_set"
+ " and not test_local_golang_additional_dependencies"
+ " and not test_main"
+ " and not test_node_hook_with_npm_userconfig_set"
+ " and not test_run_a_node_hook"
+ " and not test_run_versioned_node_hook"
+ ;; Tests failing with a permission error.
+ ;; They try to write to the filesystem.
+ " and not test_autoupdate_hook_disappearing_repo"
+ " and not test_hook_disppearing_repo_raises"
+ " and not test_img_conflict"
+ " and not test_img_something_unstaged"
+ " and not test_installed_from_venv"
+ " and not test_too_new_version"
+ " and not test_try_repo_uncommitted_changes"
+ " and not test_versions_ok"
+ ;; This test tries to activate a virtualenv.
+ " and not test_healthy_venv_creator"
+ ;; Fatal error: Not a Git repository.
+ " and not test_all_cmds"
+ " and not test_try_repo"
+ ;; No module named 'pip._internal.cli.main'.
+ " and not test_additional_dependencies_roll_forward"
+ ;; Assertion errors.
+ " and not test_install_existing_hooks_no_overwrite"
+ " and not test_uninstall_restores_legacy_hooks"))))
+ (add-before 'reset-gzip-timestamps 'make-files-writable
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Make sure .gz files are writable so that the
+ ;; 'reset-gzip-timestamps' phase can do its work.
+ (let ((out (assoc-ref outputs "out")))
+ (for-each make-file-writable
+ (find-files out "\\.gz$"))
+ #t))))))
+ (native-inputs
+ `(("git" ,git-minimal)
+ ("python-pytest" ,python-pytest)
+ ("python-re-assert" ,python-re-assert)))
+ ;; Propagate because pre-commit is also used as a module.
+ (propagated-inputs
+ `(("python-cfgv" ,python-cfgv)
+ ("python-identify" ,python-identify)
+ ("python-nodeenv" ,python-nodeenv)
+ ("python-pyyaml" ,python-pyyaml)
+ ("python-toml" ,python-toml)
+ ("python-virtualenv" ,python-virtualenv)))
+ (home-page "https://pre-commit.com/")
+ (synopsis "Framework for managing and maintaining multi-language pre-commit hooks")
+ (description
+ "Pre-commit is a multi-language package manager for pre-commit hooks. You
+specify a list of hooks you want and pre-commit manages the installation and
+execution of any hook written in any language before every commit.")
+ (license license:expat)))
(define-public mercurial
(package
(name "mercurial")
- (version "5.3.1")
+ (version "5.6.1")
(source (origin
(method url-fetch)
(uri (string-append "https://www.mercurial-scm.org/"
"release/mercurial-" version ".tar.gz"))
- (patches %mercurial-patches)
(sha256
(base32
- "1nbjpzjrzgql4hrvslpxwbcgn885ikq6ba1yb4w6p78rw9nzkhgp"))))
+ "1bgz8f1a7lnmh6lzcvwg6q1yx6i7yibhwy06l4k55i04957jap75"))))
(build-system python-build-system)
(arguments
`(#:phases
"tests/test-run-tests.t"
"tests/test-transplant.t")
(("/bin/sh")
- (which "sh")))
- #t))
+ (which "sh")))))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(with-directory-excursion "tests"
;; PATH from before (that's why we are building it!)?
"test-hghave.t"
- ;; FIXME: Why does this fail in the build container, but
- ;; not in 'guix environment -C' (even without /bin/sh)?
+ ;; These tests fail because the program is not
+ ;; connected to a TTY in the build container.
"test-nointerrupt.t"
+ "test-transaction-rollback-on-sigpipe.t"
+
+ ;; FIXME: This gets killed but does not receive an interrupt.
+ "test-commandserver.t"
+
+ ;; Only works when run in a hg-repo, not in an
+ ;; extracted tarball
+ "test-doctest.py"
;; TODO: the fqaddr() call fails in the build
;; container, causing these server tests to fail.
"--slowtimeout" "86400"
;; The test suite takes a long time and produces little
;; output by default. Prevent timeouts due to silence.
- "-v"))
- #t))))))
+ "-v"))))))))
;; The following inputs are only needed to run the tests.
(native-inputs
`(("python-nose" ,python-nose)
and offers an easy and intuitive interface.")
(license license:gpl2+)))
+(define-public python-hg-evolve
+ (package
+ (name "python-hg-evolve")
+ (version "10.0.1")
+ (source
+ (origin
+ (method hg-fetch)
+ (uri (hg-reference
+ (url "https://www.mercurial-scm.org/repo/evolve")
+ (changeset version)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1lz407373lfam9n02gq0l0rc2sjvn0m96kbzy93ipia3ika8fa68"))))
+ (build-system python-build-system)
+ (arguments
+ ;; Tests need mercurial source code.
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("mercurial" ,mercurial)))
+ (home-page "https://www.mercurial-scm.org/doc/evolution/")
+ (synopsis "Flexible evolution of Mercurial history")
+ (description "Evolve is a Mercurial extension for faster and safer mutable
+history. It implements the changeset evolution concept for Mercurial.")
+ (license license:gpl2)))
+
(define-public neon
(package
(name "neon")
- (version "0.30.2")
+ (version "0.31.2")
(source (origin
(method url-fetch)
- (uri (string-append "http://www.webdav.org/neon/neon-"
+ (uri (string-append "https://notroj.github.io/neon/neon-"
version ".tar.gz"))
(sha256
(base32
- "1jpvczcx658vimqm7c8my2q41fnmjaf1j03g7bsli6rjxk6xh2yv"))))
+ "0y46dbhiblcvg8k41bdydr3fivghwk73z040ki5825d24ynf67ng"))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl)
;; https://sourceware.org/bugzilla/show_bug.cgi?id=16475
#:tests? #f
#:configure-flags '("--enable-shared"
+ "--disable-static"
;; requires libgnutils-config, deprecated
;; in gnutls 2.8.
; "--with-ssl=gnutls")))
"--with-ssl=openssl")))
- (home-page "http://www.webdav.org/neon/")
+ (home-page "https://notroj.github.io/neon/")
(synopsis "HTTP and WebDAV client library")
(description
"Neon is an HTTP and WebDAV client library, with a C interface and the
(define-public subversion
(package
(name "subversion")
- (version "1.10.6")
+ (version "1.14.1")
(source (origin
(method url-fetch)
- (uri
- (list
- (string-append "https://archive.apache.org/dist/subversion/"
- "subversion-" version ".tar.bz2")
- (string-append "https://www-eu.apache.org/dist/subversion/"
- "subversion-" version ".tar.bz2")))
+ (uri (string-append "mirror://apache/subversion/"
+ "subversion-" version ".tar.bz2"))
(sha256
(base32
- "19zc215mhpnm92mlyl5jbv57r5zqp6cavr3s2g9yglp6j4kfgj0q"))))
+ "1ag1hvcm9q92kgalzbbgcsq9clxnzmbj9nciz9lmabjx4lyajp9c"))))
(build-system gnu-build-system)
(arguments
'(#:parallel-tests? #f ; TODO Seems to cause test failures on
(define-public rcs
(package
(name "rcs")
- (version "5.9.4")
+ (version "5.10.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/rcs/rcs-"
version ".tar.xz"))
(sha256
(base32
- "1zsx7bb0rgvvvisiy4zlixf56ay8wbd9qqqcp1a1g0m1gl6mlg86"))
- (patches (search-patches "rcs-5.9.4-noreturn.patch"))))
+ "1if5pa4iip2p70gljm54nggfdnsfjxa4cqz8fpj07lvsijary39s"))
+ (patches (search-patches "rcs-5.10.0-no-stdin.patch"))))
(build-system gnu-build-system)
(native-inputs `(("ed" ,ed)))
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-before 'check 'disable-t810
- ;; See https://savannah.gnu.org/bugs/index.php?52288
- ;; Back-porting the fix is non-trivial, so disable for now.
- (lambda _
- (substitute* "tests/Makefile"
- ((" t810 \\\\\n") ""))
- #t)))))
(home-page "https://www.gnu.org/software/rcs/")
(synopsis "Per-file local revision control system")
(description
(define-public cvs-fast-export
(package
(name "cvs-fast-export")
- (version "1.55")
+ (version "1.56")
(source (origin
(method url-fetch)
(uri (string-append "http://www.catb.org/~esr/cvs-fast-export/"
"cvs-fast-export-" version ".tar.gz"))
(sha256
(base32
- "06y2myhhv2ap08bq7d7shq0b7lq6wgznwrpz6622xq66cxkf2n5g"))))
+ "058bzp3npng48ascls943m16kgvrl0h197a10brf7mvx8zpfc7sc"))))
(build-system gnu-build-system)
(arguments
'(#:phases
(define-public vc-dwim
(package
(name "vc-dwim")
- (version "1.9")
+ (version "1.10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/vc-dwim/vc-dwim-"
version ".tar.xz"))
(sha256
(base32
- "0mf1dd7wdqxsm4fcfinfd7iadzarmzvg747pbsbi32qpavpk8gdf"))))
+ "0am6axxdvkm2vwgg0gjrd930yv4dlsdbf0rdv0zh5bhy1ir64rph"))))
(build-system gnu-build-system)
(inputs `(("perl" ,perl)))
(native-inputs
(define-public diffstat
(package
(name "diffstat")
- (version "1.63")
+ (version "1.64")
(source (origin
(method url-fetch)
(uri
"diffstat-" version ".tgz")))
(sha256
(base32
- "0vyw200s5dv1257pmrh6c6fdkmw3slyz5szpqfx916xr04sdbpby"))))
+ "1z7pwcv48fjnhxrjcsjdy83x8b9ckl582mbbds90a79fkn6y7bmq"))))
(build-system gnu-build-system)
(home-page "https://invisible-island.net/diffstat/")
(synopsis "Make histograms from the output of @command{diff}")
(define-public tig
(package
(name "tig")
- (version "2.5.1")
+ (version "2.5.3")
(source (origin
(method url-fetch)
(uri (string-append
version "/tig-" version ".tar.gz"))
(sha256
(base32
- "0r4y9hyvpkplaxrzslws3asz652d83qh3bjwvmp8assga8s5s3ah"))))
+ "1p1575yh4daxjifywxkd0hgyfwciylqcm2qakawvwn6mk620ca75"))))
(build-system gnu-build-system)
(native-inputs
`(("asciidoc" ,asciidoc)
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/0-wiz-0/findnewest.git")
+ (url "https://github.com/0-wiz-0/findnewest")
(commit (string-append "findnewest-" version))))
(file-name (git-file-name name version))
(sha256
Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.")
(license license:gpl2+)))
+(define-public grokmirror
+ (package
+ (name "grokmirror")
+ (version "2.0.8")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url (string-append "https://git.kernel.org/pub/scm/"
+ "utils/grokmirror/grokmirror.git"))
+ (commit (string-append "v" version))))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32 "0zfiwjw02df3mzpawp9jx61iwp0nhcf6y03cs8022l0hkvc7blbr"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f ; no test suite
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'install-manpages
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((man (string-append (assoc-ref outputs "out")
+ "/man/man1/")))
+ (mkdir-p man)
+ (for-each (lambda (file) (install-file file man))
+ (find-files "." "\\.1$")))
+ #t)))))
+ (propagated-inputs
+ `(("python-packaging" ,python-packaging)
+ ("python-requests" ,python-requests)))
+ (home-page
+ "https://git.kernel.org/pub/scm/utils/grokmirror/grokmirror.git")
+ (synopsis "Framework to smartly mirror git repositories")
+ (description "Grokmirror enables replicating large git repository
+collections efficiently. Mirrors decide to clone and update repositories
+based on a manifest file published by servers.")
+ (license license:gpl3+)))
+
+(define-public b4
+ (package
+ (name "b4")
+ (version "0.6.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "b4" version))
+ (sha256
+ (base32 "1j904dy9cwxl85k2ngc498q5cdnqwsmw3jibjr1m55w8aqdck68z"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Fixes issue with dependency requirements being too strict. See upstream commit:
+ ;; https://git.kernel.org/pub/scm/utils/b4/b4.git/commit/?id=31348a14afdb1d39e7faf9576eaddea1ced76e19
+ (substitute* "setup.py"
+ (("~=") ">="))
+ #t))))
+ (build-system python-build-system)
+ (arguments '(#:tests? #f)) ; No tests.
+ (inputs
+ `(("python-dkimpy" ,python-dkimpy)
+ ("python-dnspython" ,python-dnspython)
+ ("python-requests" ,python-requests)))
+ (home-page "https://git.kernel.org/pub/scm/utils/b4/b4.git")
+ (synopsis "Tool for working with patches in public-inbox archives")
+ (description
+ "The @code{b4} command is designed to make it easier to participate in
+patch-based workflows for projects that have public-inbox archives.
+
+Features include:
+@itemize
+@item downloading a thread's mbox given a message ID
+@item processing an mbox so that is ready to be fed to @code{git-am}
+@item creating templated replies for processed patches and pull requests
+@item submitting cryptographic attestation for patches.
+@end itemize")
+ (license license:gpl2+)))
+
(define-public git-annex-remote-rclone
(package
(name "git-annex-remote-rclone")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/DanielDent/git-annex-remote-rclone.git")
+ (url "https://github.com/DanielDent/git-annex-remote-rclone")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/mhagger/git-imerge.git")
+ (url "https://github.com/mhagger/git-imerge")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(define-public git-lfs
(package
(name "git-lfs")
- (version "2.7.2")
+ (version "2.13.3")
(source (origin
(method git-fetch)
(uri (git-reference
(file-name (git-file-name name version))
(sha256
(base32
- "1nf40rbdz901vsahg5cm09pznpina6wimmxl0lmh8pn0mi51yzvc"))))
+ "0r7dmqhkhz91d3n7qfpny483x8f1n88yya22j2fvx75rgg33z2sg"))))
(build-system go-build-system)
(arguments
- '(#:import-path "github.com/git-lfs/git-lfs"))
+ `(#:import-path "github.com/git-lfs/git-lfs"
+ #:install-source? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'man-gen
+ ;; Without this, the binary generated in 'build
+ ;; phase won't have any embedded usage-text.
+ (lambda _
+ (with-directory-excursion "src/github.com/git-lfs/git-lfs"
+ (invoke "make" "mangen"))))
+ (add-after 'build 'build-man-pages
+ (lambda _
+ (with-directory-excursion "src/github.com/git-lfs/git-lfs"
+ (invoke "make" "man"))
+ #t))
+ (add-after 'install 'install-man-pages
+ (lambda _
+ (with-directory-excursion "src/github.com/git-lfs/git-lfs/man"
+ (let ((out (assoc-ref %outputs "out")))
+ (for-each
+ (lambda (manpage)
+ (install-file manpage (string-append out "/share/man/man1")))
+ (find-files "." "^git-lfs.*\\.1$"))))
+ #t)))))
+ ;; make `ronn` available during build for man page generation
+ (native-inputs `(("ronn-ng" ,ronn-ng)))
(home-page "https://git-lfs.github.com/")
(synopsis "Git extension for versioning large files")
(description
file contents on a remote server.")
(license license:expat)))
+(define-public git-open
+ (package
+ (name "git-open")
+ (version "2.1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/paulirish/git-open")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "11n46bngvca5wbdbfcxzjhjbfdbad7sgf7h9gf956cb1q8swsdm0"))))
+ (build-system copy-build-system)
+ (inputs
+ `(("xdg-utils" ,xdg-utils)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-program
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (xdg-utils (assoc-ref inputs "xdg-utils")))
+ (wrap-program (string-append out "/bin/git-open")
+ `("PATH" ":" prefix (,(string-append xdg-utils "/bin"))))))))
+ #:install-plan
+ '(("git-open" "bin/git-open"))))
+ (home-page "https://github.com/paulirish/git-open")
+ (synopsis "Open a Git repository's homepage from the command-line")
+ (description
+ "@code{git open} opens the repository's website from the command-line,
+guessing the URL pattern from the @code{origin} remote.")
+ (license license:expat)))
+
(define-public tla
(package
(name "gnu-arch")
for historians.")
(home-page "https://www.gnu.org/software/gnu-arch/")
(license license:gpl2))) ;version 2 only
+
+(define-public diff-so-fancy
+ (package
+ (name "diff-so-fancy")
+ (version "1.3.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/so-fancy/diff-so-fancy")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0aavxahzha2mms4vdwysk79pa6wzswpfwgsq2hwaxnaf66maahfl"))))
+ (inputs
+ `(("perl" ,perl)
+ ("ncurses" ,ncurses)))
+ (build-system copy-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-lib-path
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((lib (string-append (assoc-ref outputs "out") "/lib")))
+ (substitute* "diff-so-fancy"
+ (("use lib.*$")
+ (string-append "use lib '" lib "';\n")))
+ #t)))
+ (add-after 'install 'symlink-executable
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (ncurses (assoc-ref inputs "ncurses"))
+ (perl (assoc-ref inputs "perl")))
+ (wrap-program (string-append out "/bin/diff-so-fancy")
+ `("PATH" ":" prefix (,(string-append ncurses "/bin")
+ ,(string-append perl "/bin"))))
+ #t))))
+ #:install-plan
+ '(("lib" "lib")
+ ("diff-so-fancy" "bin/"))))
+ (home-page "https://github.com/so-fancy/diff-so-fancy")
+ (synopsis "Makes diffs more human friendly and readable")
+ (description
+ "@code{diff-so-fancy} strives to make your diffs human readable instead
+of machine readable. This helps improve code quality and helps you spot
+defects faster.")
+ (license license:expat)))
+
+(define-public go-github-go-git
+ (package
+ (name "go-github-go-git")
+ (version "5.1.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/go-git/go-git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1vkcmhh2qq8c38sjbnzf0wvg2rzr19wssaq177bsvrjwj1xz1qbs"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:tests? #f ;requires network connection
+ #:import-path "github.com/go-git/go-git/v5"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'setup
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((git (assoc-ref inputs "git"))
+ (git-bin (string-append (assoc-ref inputs "git") "/bin"))
+ (git-exe (string-append git-bin "/git")))
+ (setenv "GIT_DIST_PATH=" git)
+ (setenv "GIT_EXEC_PATH=" git-bin)
+ (setenv "HOME" (getcwd))
+ (invoke git-exe "config" "--global" "user.email" "gha@example.com")
+ (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)))
+ (home-page "https://github.com/go-git/")
+ (synopsis "Git implementation library")
+ (description "This package provides a Git implementation library.")
+ (license license:asl2.0)))
+
+(define-public gita
+ (let ((commit "e41b504dca90a25e9be27f296da7ce22e5782893")
+ (revision "1"))
+ (package
+ (name "gita")
+ (version (git-version "0.12.9" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/nosarthur/gita")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1k03zgcbhl91cgyh4k7ywyjp00y63q4bqbimncqh5b3lni8l8j5l"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("git" ,git) ;for tests
+ ("python-pytest" ,python-pytest)))
+ (propagated-inputs
+ `(("python-pyyaml" ,python-pyyaml)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* "tests/test_main.py"
+ (("'gita\\\\n'") "'source\\n'")
+ (("'gita'") "'source'"))
+ (invoke (string-append (assoc-ref inputs "git") "/bin/git")
+ "init")
+ (add-installed-pythonpath inputs outputs)
+ (invoke (string-append (assoc-ref inputs "python-pytest")
+ "/bin/pytest")
+ "-vv" "tests")))
+ (add-after 'install 'install-shell-completions
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bash-completion (string-append out "/etc/bash_completion.d"))
+ (zsh-completion (string-append out "/etc/zsh/site-functions")))
+ (mkdir-p bash-completion)
+ (copy-file ".gita-completion.bash"
+ (string-append bash-completion "/gita"))
+ (mkdir-p zsh-completion)
+ (copy-file ".gita-completion.zsh"
+ (string-append zsh-completion "/_gita"))))))))
+ (home-page "https://github.com/nosarthur/gita")
+ (synopsis "Command-line tool to manage multiple Git repos")
+ (description "This package provides a command-line tool to manage
+multiple Git repos.
+
+This tool does two things:
+@itemize
+@item display the status of multiple Git repos such as branch, modification,
+commit message side by side
+@item (batch) delegate Git commands/aliases from any working directory
+@end itemize
+
+If several repos are related, it helps to see their status together.")
+ (license license:expat))))
+
+(define-public ghq
+ (package
+ (name "ghq")
+ (version "1.1.7")
+ (home-page "https://github.com/x-motemen/ghq")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "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)))))
+ (native-inputs
+ `(("git" ,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)))
+ (synopsis "Manage remote repository clones")
+ (description
+ "@code{ghq} provides a way to organize remote repository clones, like
+@code{go get} does. When you clone a remote repository by @code{ghq get}, ghq
+makes a directory under a specific root directory (by default @file{~/ghq})
+using the remote repository URL's host and path.")
+ (license license:expat)))