;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;; 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, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2018 Kyle Meyer <kyle@kyleam.com>
-;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is>
;;; Copyright © 2017, 2018, 2019, 2020 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, 2018 Marius Bakke <mbakke@fastmail.com>
+;;; 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 © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2019 Jovany Leandro G.C <bit4bit@riseup.net>
;;; Copyright © 2019 Kei Kebreau <kkebreau@posteo.net>
-;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
;;; 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>
;;;
;;; 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 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 flex)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gl)
+ #:use-module (gnu packages golang)
#:use-module (gnu packages groff)
#:use-module (gnu packages guile)
#:use-module (gnu packages image)
as well as the classic centralized workflow.")
(license license:gpl2+)))
+(define git-cross-configure-flags
+ '("ac_cv_fread_reads_directories=yes"
+ "ac_cv_snprintf_returns_bogus=no"
+ "ac_cv_iconv_omits_bom=no"))
+
(define-public git
(package
(name "git")
- ;; XXX When updating Git, check if the special 'git-source' input to cgit
- ;; needs to be updated as well.
- (version "2.25.1")
+ (version "2.28.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "09lzwa183nblr6l8ib35g2xrjf9wm9yhk3szfvyzkwivdv69c9r2"))))
+ "17a311vzimqn1glc9d7x82rhb1mb81m5rr4g8xji8idaafid39fz"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
+ ;; Add bash-minimal explicitly to ensure it comes before bash-for-tests,
+ ;; see <https://bugs.gnu.org/39513>.
+ ("bash" ,bash-minimal)
+ ("bash-for-tests" ,bash)
("gettext" ,gettext-minimal)
("git-manpages"
,(origin
version ".tar.xz"))
(sha256
(base32
- "15pfm7j4wq8ryp9n9d81h8v0arl15yq9i6cigw45walnq5r6721h"))))
+ "1dvwq0py8a2ywmgc5pzdlsj3608s7r9wyba292728fcs3yj7ynk6"))))
;; For subtree documentation.
- ("asciidoc" ,asciidoc)
+ ("asciidoc" ,asciidoc-py3)
("docbook-xsl" ,docbook-xsl)
("xmlto" ,xmlto)))
(inputs
("expat" ,expat)
("openssl" ,openssl)
("perl" ,perl)
- ("python" ,python-2) ; CAVEAT: incompatible with python-3 according to INSTALL
+ ("python" ,python) ; for git-p4
("zlib" ,zlib)
- ;; Note: we keep this in inputs rather than native-inputs to work around
- ;; a problem in 'patch-shebangs'; see <https://bugs.gnu.org/31952>.
- ("bash-for-tests" ,bash)
-
;; For PCRE support in git grep (USE_LIBPCRE2).
("pcre" ,pcre2)
#:test-target "test"
- ;; Tests fail randomly when parallel: <https://bugs.gnu.org/29512>.
- #:parallel-tests? #f
-
;; The explicit --with-tcltk forces the build system to hardcode the
;; absolute file name to 'wish'.
#:configure-flags (list (string-append "--with-tcltk="
(assoc-ref %build-inputs "tk")
- "/bin/wish8.6")) ; XXX
+ "/bin/wish8.6") ; XXX
+ ,@(if (%current-target-system)
+ git-cross-configure-flags
+ '()))
#:modules ((srfi srfi-1)
(srfi srfi-26)
,@%gnu-build-system-modules)
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'modify-PATH
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((path (string-split (getenv "PATH") #\:))
- (bash-full (assoc-ref inputs "bash-for-tests")))
- ;; Drop the test bash from PATH so that (which "sh") and
- ;; similar does the right thing.
- (setenv "PATH" (string-join
- (remove (cut string-prefix? bash-full <>) path)
- ":"))
- #t)))
+ ,@(if (%current-target-system)
+ ;; The git build system assumes build == host
+ `((add-after 'unpack 'use-host-uname_S
+ (lambda _
+ (substitute* "config.mak.uname"
+ (("uname_S := .*" all)
+ (if (equal? ,(%current-target-system) "i586-pc-gnu")
+ "uname_S := GNU\n"
+ all)))
+ #t)))
+ ;; We do not have bash-for-tests when cross-compiling.
+ `((add-after 'unpack 'modify-PATH
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((path (string-split (getenv "PATH") #\:))
+ (bash-full (assoc-ref inputs "bash-for-tests")))
+ ;; Drop the test bash from PATH so that (which "sh") and
+ ;; similar does the right thing.
+ (setenv "PATH" (string-join
+ (remove (cut string-prefix? bash-full <>) path)
+ ":"))
+ #t)))))
+ ;; Add cross curl-config script to PATH when cross-compiling.
+ ,@(if (%current-target-system)
+ '((add-before 'configure 'add-cross-curl-config
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "PATH"
+ (string-append (assoc-ref inputs "curl") "/bin:"
+ (getenv "PATH")))
+ #t)))
+ '())
(add-after 'configure 'patch-makefiles
(lambda _
(substitute* "Makefile"
(("/usr/bin/perl") (which "perl"))
- (("/usr/bin/python") (which "python")))
+ (("/usr/bin/python") (which "python3")))
#t))
(add-after 'configure 'add-PM.stamp
(lambda _
;; 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")
(add-after 'install 'install-credential-netrc
(lambda* (#:key outputs #:allow-other-keys)
(let* ((netrc (assoc-ref outputs "credential-netrc")))
- (install-file "contrib/credential/netrc/git-credential-netrc"
+ (install-file "contrib/credential/netrc/git-credential-netrc.perl"
(string-append netrc "/bin"))
+ (rename-file (string-append netrc "/bin/git-credential-netrc.perl")
+ (string-append netrc "/bin/git-credential-netrc"))
;; Previously, Git.pm was automatically found by netrc.
;; Perl 5.26 changed how it locates modules so that @INC no
;; longer includes the current working directory (the Perl
((#:make-flags flags)
`(delete "USE_LIBPCRE2=yes" ,flags))
((#:configure-flags flags)
- ''())
+ `(list
+ ,@(if (%current-target-system)
+ git-cross-configure-flags
+ '())))
((#:disallowed-references lst '())
`(,perl ,@lst))))
(outputs '("out"))
(native-inputs
- `(("native-perl" ,perl)
+ `(("bash" ,bash-minimal)
+ ("bash-for-tests" ,bash)
+ ("native-perl" ,perl)
("gettext" ,gettext-minimal)))
(inputs
`(("curl" ,curl) ;for HTTP(S) access
("expat" ,expat) ;for 'git push' over HTTP(S)
("openssl" ,openssl)
("perl" ,perl)
- ("zlib" ,zlib)
- ("bash-for-tests" ,bash)))))
+ ("zlib" ,zlib)))))
-(define-public libgit2
+(define-public gitless
(package
- (name "libgit2")
- (version "0.28.4")
+ (name "gitless")
+ (version "0.8.8")
+ (source
+ (origin
+ ;; The PyPI package lacks a test suite. Build directly from git.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/gitless-vcs/gitless")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "048kl27zjr68hgs70g3l98ci9765wxva6azzrhcdys7nsdd493n6"))
+ (file-name (git-file-name name version))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'loosen-requirements
+ (lambda _
+ (substitute* "setup.py"
+ ;; Using Guix's python-pygit2 1.1.0 appears to work fine…
+ (("pygit2==") "pygit2>="))
+ #t))
+ (add-before 'check 'prepare-for-tests
+ (lambda _
+ ;; Find the 'gl' command.
+ (rename-file "gl.py" "gl")
+ (setenv "PATH" (string-append (getcwd) ":" (getenv "PATH")))
+
+ ;; The tests try to run git as if it were already set up.
+ (setenv "HOME" (getcwd))
+ (invoke "git" "config" "--global" "user.email" "git@example.com")
+ (invoke "git" "config" "--global" "user.name" "Guix")))
+ (replace 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (git (assoc-ref inputs "git")))
+ (wrap-program (string-append out "/bin/gl")
+ `("PATH" ":" prefix (,(string-append git "/bin")))
+ `("PYTHONPATH" ":" =
+ (,(string-append out "/lib/python"
+ ,(version-major+minor
+ (package-version python))
+ "/site-packages:")
+ ,(getenv "PYTHONPATH"))))
+ #t))))))
+ (native-inputs
+ `(("git-for-tests" ,git-minimal)))
+ (inputs
+ `(("git" ,git-minimal)
+ ("python-clint" ,python-clint)
+ ("python-pygit2" ,python-pygit2)
+ ("python-sh" ,python-sh)))
+ (home-page "https://gitless.com")
+ (synopsis "Simple version control system built on top of Git")
+ (description
+ "Gitless is a Git-compatible version control system that aims to be easy to
+learn and use. It simplifies the common workflow by committing changes to
+tracked files by default and saving any uncommitted changes as part of a branch.
+
+The friendly @command{gl} command-line interface gives feedback and helps you
+figure out what to do next.
+
+Gitless is implemented on top of Git and its commits and repositories are
+indistinguishable from Git's. You (or other contributors) can always fall back
+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/libgit2/libgit2.git")
+ (url "https://github.com/k4rthik/git-cal")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
- "171b25aym4q88bidc4c76y4l6jmdwifm3q9zjqsll0wjhlkycfy1"))
- (patches (search-patches "libgit2-avoid-python.patch"
- "libgit2-mtime-0.patch"))
+ "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)))
- ;; Remove bundled software.
+(define-public libgit2
+ (package
+ (name "libgit2")
+ (version "1.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/libgit2/libgit2/"
+ "releases/download/v" version
+ "/libgit2-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0nlg35pxhh548nn7aa3y1m81mf81nkbzz86i2psps4f474n497v8"))
+ (patches (search-patches "libgit2-mtime-0.patch"))
(snippet '(begin
- (delete-file-recursively "deps")
- #t))
+ (delete-file-recursively "deps") #t))
(modules '((guix build utils)))))
(build-system cmake-build-system)
(outputs '("out" "debug"))
(arguments
- `(#:configure-flags '("-DUSE_SHA1DC=ON") ; SHA-1 collision detection
+ `(#:configure-flags
+ (list "-DUSE_NTLMCLIENT=OFF" ;TODO: package this
+ "-DREGEX_BACKEND=pcre2"
+ "-DUSE_HTTP_PARSER=system"
+ ,@(if (%current-target-system)
+ `((string-append
+ "-DPKG_CONFIG_EXECUTABLE="
+ (assoc-ref %build-inputs "pkg-config")
+ "/bin/" ,(%current-target-system) "-pkg-config"))
+ '()))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-hardcoded-paths
(("/bin/cp") (which "cp"))
(("/bin/rm") (which "rm")))
#t))
- (add-after 'unpack 'make-git-checkout-writable
- (lambda _
- (for-each make-file-writable (find-files "."))
- #t))
- ;; Run checks more verbosely.
+ ;; Run checks more verbosely, unless we are cross-compiling.
(replace 'check
- (lambda _ (invoke "./libgit2_clar" "-v" "-Q"))))))
+ (lambda* (#:key (tests? #t) #:allow-other-keys)
+ (if tests?
+ (invoke "./libgit2_clar" "-v" "-Q")
+ ;; Tests may be disabled if cross-compiling.
+ (format #t "Test suite not run.~%")))))))
(inputs
`(("libssh2" ,libssh2)
("http-parser" ,http-parser)))
(native-inputs
- `(("guile" ,guile-2.2)
- ("pkg-config" ,pkg-config)))
+ `(("pkg-config" ,pkg-config)
+ ("python" ,python)))
(propagated-inputs
- ;; These two libraries are in 'Requires.private' in libgit2.pc.
+ ;; These libraries are in 'Requires.private' in libgit2.pc.
`(("openssl" ,openssl)
+ ("pcre2" ,pcre2)
("zlib" ,zlib)))
- (home-page "https://libgit2.github.com/")
+ (home-page "https://libgit2.org/")
(synopsis "Library providing Git core methods")
(description
"Libgit2 is a portable, pure C implementation of the Git core methods
;; GPLv2 with linking exception
(license license:gpl2)))
+(define-public libgit2-0.28
+ (package
+ (inherit libgit2)
+ (version "0.28.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/libgit2/libgit2/releases/"
+ "download/v" version
+ "/libgit2-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0hjgpqjjmkciw1i8jqkx9q2vhdc4fc99qajhrj2bq8ziwsp6hyrb"))
+ (patches (search-patches "libgit2-mtime-0.patch"))
+ (modules '((guix build utils)))
+ (snippet '(begin
+ (delete-file-recursively "deps") #t))))))
+
(define-public git-crypt
(package
(name "git-crypt")
(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
(define-public git-remote-gcrypt
(package
(name "git-remote-gcrypt")
- (version "1.0.3")
+ (version "1.3")
(source (origin
(method git-fetch)
(uri (git-reference
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "1vay3204729c7wajgn3nxf0s0hzwpdrw14pl6kd8w2ss25gvw2k1"))))
+ "0n8fzvr6y0pxrbvkywlky2bd8jvi0ayp4n9hwi84l1ldmv4a40dh"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
(package
(name "cgit")
;; Update the ‘git-source’ input as well.
- (version "1.2.2")
+ (version "1.2.3")
(source (origin
(method url-fetch)
(uri (string-append
version ".tar.xz"))
(sha256
(base32
- "0dmjsisigjz5k4gw7gm55qhm3wazzbm4cg7a5dwf0gqg9nacx5rz"))))
+ "193d990ym10qlslk0p8mjwp2j6rhqa7fq0y1iff65lvbyv914pss"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; XXX: fail to build the in-source git.
(method url-fetch)
;; cgit is tightly bound to git. Use GIT_VER from the Makefile,
;; which may not match the current (package-version git).
- (uri "mirror://kernel.org/software/scm/git/git-2.25.0.tar.xz")
+ (uri "mirror://kernel.org/software/scm/git/git-2.25.4.tar.xz")
(sha256
- (base32 "1l58v42aazj0x9276gk8r9mwyl9pgp9w99aakz4xfhzv7wd2jq60"))))
+ (base32 "11am6s46wmn1yll5614smjhzlghbqq6gysgcs64igjr9y5wzpdxq"))))
("openssl" ,openssl)
("groff" ,groff)
("python" ,python)
(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
(define-public python-gitdb
(package
(name "python-gitdb")
- (version "2.0.4")
+ (version "4.0.2")
(source (origin
(method url-fetch)
- (uri (pypi-uri "gitdb2" version))
+ (uri (pypi-uri "gitdb" version))
(sha256
(base32
- "0i608q9c47rdsmyac1cn6s0hzwwj7cb957y8fc9wacc5lnw8ak5v"))))
+ "0l113fphn6msjl3cl3kyf332b6lal7daxdd0nfma0x9ipfb013jr"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(setenv "TRAVIS" "1")
(invoke "nosetests" "-v"))))))
(propagated-inputs
- `(("python-smmap2" ,python-smmap2)))
+ `(("python-smmap" ,python-smmap)))
(native-inputs
`(("git" ,git)
("python-nose" ,python-nose)))
allowing to handle large objects with a small memory footprint.")
(license license:bsd-3)))
-(define-public python2-gitdb
- (package-with-python2 python-gitdb))
-
(define-public python-gitpython
(package
(name "python-gitpython")
- (version "2.1.11")
+ (version "3.1.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "GitPython" version))
(sha256
(base32
- "1a357c28dnhgvq3saia7v29r71ynp48l2qp5xsmnc4vgzmdxqdw2"))))
+ "1jzllsy9lwc9yibccgv7h9naxisazx2n3zmpy21c8n5xhysw69p4"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ;XXX: Tests can only be run within the GitPython repository.
@command{git} command implementation.")
(license license:bsd-3)))
-(define-public python2-gitpython
- (package-with-python2 python-gitpython))
-
(define-public shflags
(package
(name "shflags")
(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
"gitflow-shFlags")))))
(delete 'configure)
(delete 'build))))
- (home-page "http://nvie.com/posts/a-successful-git-branching-model/")
+ (home-page "https://nvie.com/posts/a-successful-git-branching-model/")
(synopsis "Git extensions for Vincent Driessen's branching model")
(description
"Vincent Driessen's branching model is a git branching and release
(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
(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
(install-file (string-append source "/" script)
bindir)
#t))))
- (home-page "http://dustin.sallings.org/2010/03/28/git-test-sequence.html")
+ (home-page "https://dustin.sallings.org/2010/03/28/git-test-sequence.html")
(synopsis "Run a command over a sequence of commits")
(description
"git-test-sequence is similar to an automated git bisect except it’s
(define-public gitolite
(package
(name "gitolite")
- (version "3.6.7")
+ (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 "0rmyzr66lxh2ildf3h1nh3hh2ndwk21rjdin50r5vhwbdd7jg8vb"))))
+ (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)
(propagated-inputs
`(("git" ,git)
("openssh" ,openssh)))
- (home-page "http://gitolite.com")
+ (home-page "https://gitolite.com")
(synopsis "Git access control layer")
(description
"Gitolite is an access control layer on top of Git, providing fine access
control to Git repositories.")
(license license:gpl2)))
+(define-public pre-commit
+ (package
+ (name "pre-commit")
+ (version "2.7.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 "0n7qby5a4yz3s02nqcp5js6jg9wrd0x7msblxwb1883ds4b2b71a"))))
+ (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 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)))
+ (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.2.1")
+ (version "5.5.1")
(source (origin
(method url-fetch)
(uri (string-append "https://www.mercurial-scm.org/"
"release/mercurial-" version ".tar.gz"))
(sha256
(base32
- "1pxkd37b0a1mi2zakk1hi122lgz1ffy2fxdnbs8acwlqpw55bc8q"))))
+ "0x08yjs26j88kh1bvl2g3r24lnfc023ry3i1cxfq6haray6sv5ag"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'patch-tests
+ (lambda _
+ (substitute* '("tests/test-extdiff.t"
+ "tests/test-logtoprocess.t"
+ "tests/test-patchbomb.t"
+ "tests/test-run-tests.t"
+ "tests/test-transplant.t")
+ (("/bin/sh")
+ (which "sh")))
+ #t))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(with-directory-excursion "tests"
;; The following tests are known to fail.
- (for-each (lambda (file)
- (delete-file file))
- '("test-extdiff.t"
+ (for-each delete-file
+ '(;; XXX: This test calls 'run-tests.py --with-hg=
+ ;; `which hg`' and fails because there is no hg on
+ ;; 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)?
+ "test-nointerrupt.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.
"test-hgwebdir.t"
"test-http-branchmap.t"
- "test-logtoprocess.t"
- "test-merge-combination.t"
- "test-nointerrupt.t"
- "test-patchbomb.t"
"test-pull-bundle.t"
"test-push-http.t"
- "test-run-tests.t"
"test-serve.t"
"test-subrepo-deep-nested-change.t"
- "test-subrepo-recursion.t"
- "test-transplant.t"))
+ "test-subrepo-recursion.t"))
(when tests?
(invoke "./run-tests.py"
;; ‘make check’ does not respect ‘-j’.
;; The following inputs are only needed to run the tests.
(native-inputs
`(("python-nose" ,python-nose)
- ("unzip" ,unzip)))
+ ("unzip" ,unzip)
+ ("which" ,which)))
(home-page "https://www.mercurial-scm.org/")
(synopsis "Decentralized version control system")
(description
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")
(define-public subversion
(package
(name "subversion")
- (version "1.10.6")
+ (version "1.14.0")
(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"))))
+ "00i1f88snlpcnsycpn6r315h6792l5nkr2p5k6kq6yprz4cf5a3b"))))
(build-system gnu-build-system)
(arguments
'(#:parallel-tests? #f ; TODO Seems to cause test failures on
(define-public cvs-fast-export
(package
(name "cvs-fast-export")
- (version "1.51")
+ (version "1.55")
(source (origin
(method url-fetch)
(uri (string-append "http://www.catb.org/~esr/cvs-fast-export/"
"cvs-fast-export-" version ".tar.gz"))
(sha256
(base32
- "0nn5cf8syb5nbjvkn8w561pk25clv187h4hs9pnc700g9w56chzf"))))
+ "06y2myhhv2ap08bq7d7shq0b7lq6wgznwrpz6622xq66cxkf2n5g"))))
(build-system gnu-build-system)
(arguments
'(#:phases
("ed" ,ed)))
(arguments
`(#:configure-flags (list "--with-no-aegis-configured"
- "--sharedstatedir=/var/com/aegis")
+ "--sharedstatedir=/var/com/aegis"
+ ;; Uses the old 'throw()' specifier with 'new'
+ ;; which changed in C++11.
+ "CXXFLAGS=-std=c++03")
#:parallel-build? #f ; There are some nasty racy rules in the Makefile.
#:phases
(modify-phases %standard-phases
;; The author decided to call the check rule "sure".
(invoke "make" "sure")))))))
- (home-page "http://aegis.sourceforge.net")
+ (home-page "https://sourceforge.net/projects/aegis/")
(synopsis "Project change supervisor")
(description "Aegis is a project change supervisor, and performs some of
the Software Configuration Management needed in a CASE environment. Aegis
(define-public tig
(package
(name "tig")
- (version "2.5.0")
+ (version "2.5.1")
(source (origin
(method url-fetch)
(uri (string-append
version "/tig-" version ".tar.gz"))
(sha256
(base32
- "1x5famvvs93ih7sr11x7m33dksb1k7zs1s3c4zkyf0cjmxkpqlzz"))))
+ "0r4y9hyvpkplaxrzslws3asz652d83qh3bjwvmp8assga8s5s3ah"))))
(build-system gnu-build-system)
(native-inputs
`(("asciidoc" ,asciidoc)
(add-after 'install 'install-doc
(lambda _
(invoke "make" "install-doc"))))
- #:tests? #f)) ; tests require access to /dev/tty
- ;; #:test-target "test"))
+ #:test-target "test"
+ #:tests? #f)) ; tests require access to /dev/tty
(home-page "https://jonas.github.io/tig/")
(synopsis "Ncurses-based text user interface for Git")
(description
(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 git-annex-remote-hubic
- (package
- (name "git-annex-remote-hubic")
- (version "0.3.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/Schnouki/git-annex-remote-hubic.git")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "16y9sk67hfi17h9n2kkffyabfccksh5rab40hhk69v6cxmbpn2sx"))))
- (build-system python-build-system)
- (arguments `(#:python ,python-2))
- (native-inputs
- `(;; for the tests
- ("python2-six" ,python2-six)))
- (propagated-inputs
- `(("python2-dateutil" ,python2-dateutil)
- ("python2-futures" ,python2-futures)
- ("python2-rauth" ,python2-rauth)
- ("python2-swiftclient" ,python2-swiftclient)))
- (home-page "https://github.com/Schnouki/git-annex-remote-hubic/")
- (synopsis "Use hubic as a git-annex remote")
- (description
- "This package allows you to use your hubic account as a \"special
-repository\" with git-annex.")
- (license license:gpl3+)))
-
(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
(define-public fossil
(package
(name "fossil")
- (version "2.8")
+ (version "2.11")
(source
(origin
(method url-fetch)
- ;; Older downloads are moved to another URL.
- (uri (list
- (string-append
- "https://www.fossil-scm.org/index.html/uv/download/"
- "fossil-src-" version ".tar.gz")
- (string-append
+ (uri (string-append
"https://www.fossil-scm.org/index.html/uv/"
- "fossil-src-" version ".tar.gz")))
+ "fossil-src-" version ".tar.gz"))
(sha256
- (base32
- "0pbinf8d2kj1j7niblhzjd2l2khg6r2pn2xvig6gavz27p3vwcka"))
+ (base32 "0c9nzx42wxfmym9vf1pnbdb1c7gp7a7zqky60izxsph7w2xh8nix"))
(modules '((guix build utils)))
(snippet
'(begin
(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.11.0")
(source (origin
(method git-fetch)
(uri (git-reference
(file-name (git-file-name name version))
(sha256
(base32
- "1nf40rbdz901vsahg5cm09pznpina6wimmxl0lmh8pn0mi51yzvc"))))
+ "05qd96bn2cl7gn5qarbcv6scdpj28qiwdfzalamqk5jjiidpmng5"))))
(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
videos, datasets, and graphics with text pointers inside Git, while storing the
file contents on a remote server.")
(license license:expat)))
+
+(define-public tla
+ (package
+ (name "gnu-arch")
+ (version "1.3.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://ftp.gnu.org/old-gnu/gnu-arch/"
+ "tla-" version ".tar.gz"))
+ (sha256
+ (base32
+ "01mfzj1i6p4s8191cgd5850hds1zls88hkf9rb6qx1vqjv585aj0"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; In tar 1.32, '--preserve' is ambiguous and leads to an
+ ;; error, so address that.
+ (substitute* "src/tla/libarch/archive.c"
+ (("\"--preserve\"")
+ "\"--preserve-permissions\""))
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (chdir "src")
+
+ (mkdir "=build")
+ (chdir "=build")
+
+ ;; For libneon's 'configure' script.
+ ;; XXX: There's a bundled copy of neon.
+ (setenv "CONFIG_SHELL" (which "sh"))
+
+ (invoke "../configure" "--prefix" out
+ "--config-shell" (which "sh")
+ "--with-posix-shell" (which "sh")
+ "--with-cc" "gcc")))))
+
+
+ ;; There are build failures when building in parallel.
+ #:parallel-build? #f
+ #:parallel-tests? #f
+
+ #:test-target "test"))
+ (native-inputs
+ `(("which" ,which)))
+ (synopsis "Historical distributed version-control system")
+ (description
+ "GNU Arch, aka. @code{tla}, was one of the first free distributed
+version-control systems (DVCS). It saw its last release in 2006. This
+package is provided for users who need to recover @code{tla} repositories and
+for historians.")
+ (home-page "https://www.gnu.org/software/gnu-arch/")
+ (license license:gpl2))) ;version 2 only
+
+(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)))