;;; 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 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
+;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;;
(define-module (gnu packages version-control)
#:use-module ((guix licenses)
- #:select (asl2.0 bsd-2
+ #:select (asl2.0 bsd-2 bsd-3
gpl1+ gpl2 gpl2+ gpl3+ lgpl2.1
- x11-style))
+ public-domain x11-style))
+ #:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (guix build-system trivial)
- #:use-module (guix build utils)
#:use-module (gnu packages apr)
#:use-module (gnu packages autotools)
- #:use-module (gnu packages asciidoc)
+ #:use-module (gnu packages documentation)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages cook)
(define-public bazaar
(package
(name "bazaar")
- (version "2.6.0")
+ (version "2.7.0")
(source
(origin
(method url-fetch)
- (uri (string-append "https://launchpad.net/bzr/2.6/" version
+ (uri (string-append "https://launchpad.net/bzr/"
+ (version-major+minor version) "/" version
"/+download/bzr-" version ".tar.gz"))
(sha256
(base32
- "1c6sj77h5f97qimjc14kr532kgc0jk3wq778xrkqi0pbh9qpk509"))))
+ "1cysix5k3wa6y7jjck3ckq3abls4gvz570s0v0hxv805nwki4i8d"))))
(build-system python-build-system)
(inputs
;; Note: 'tools/packaging/lp-upload-release' and 'tools/weavemerge.sh'
;; Keep in sync with 'git-manpages'!
(package
(name "git")
- (version "2.6.3")
+ (version "2.9.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "18vxb5fmwmrps504m23a4xdl29m7ibca3hmz0mn9jc38sz9y95yn"))))
+ "18l2jb4bkp9ljz6p2aviwzxqyzza9z3v6h1pnkz7kjf1fay61zp8"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
"svn" ; git-svn
"gui")) ; gitk, git gui
(arguments
- `(#:make-flags `("V=1") ; more verbose compilation
+ `(#:make-flags `("V=1" ;more verbose compilation
+
+ ;; By default 'make install' creates hard links for
+ ;; things in 'libexec/git-core', which leads to huge
+ ;; nars; see <http://bugs.gnu.org/21949>.
+ "NO_INSTALL_HARDLINKS=indeed")
#:test-target "test"
#:tests? #f ; FIXME: Many tests are failing
;; FIXME: This variable designates a single file; it is not a search path.
(list (search-path-specification
(variable "GIT_SSL_CAINFO")
+ (file-type 'regular)
(files '("etc/ssl/certs/ca-certificates.crt")))))
(synopsis "Distributed version control system")
version ".tar.xz"))
(sha256
(base32
- "1d7jb4pyln0prgxpxkfiy2l6ragsjzsyqyxbssbchdvl145gj8xf"))))
+ "1v9icsf85vvrrg7fakm91d11q23rvnh6dq4b4c4ya8v95z00mg8p"))))
(build-system trivial-build-system)
(arguments
'(#:modules ((guix build utils))
(define-public libgit2
(package
(name "libgit2")
- (version "0.23.3")
+ (version "0.24.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/libgit2/libgit2/"
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1bhyzw9b7xr1vj24hgbwbfjw2wiaigiklccsdvd8r4kmcr180p1d"))))
+ "1ppyfwxc276d2p2pwbzlmvs2bkgng425rl8k2rf9nsq66jxqq6b0"))))
(build-system cmake-build-system)
(arguments
`(#:phases
(inputs
`(("libssh2" ,libssh2)
("libcurl" ,curl)
- ("python" ,python)
+ ("python" ,python-wrapper)
("openssl" ,openssl)))
(native-inputs
`(("pkg-config" ,pkg-config)))
;; GPLv2 with linking exception
(license gpl2)))
+(define-public cgit
+ (package
+ (name "cgit")
+ (version "1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://git.zx2c4.com/cgit/snapshot/cgit-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0kbh835p7dl4h88qv55fyfh1za09cgnqh63rii325w9215hm95x8"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; XXX: fail to build the in-source git.
+ #:test-target "test"
+ #:make-flags '("CC=gcc" "SHELL_PATH=sh")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'unpack-git
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Unpack the source of git into the 'git' directory.
+ (zero? (system*
+ "tar" "--strip-components=1" "-C" "git" "-xf"
+ (assoc-ref inputs "git:src")))))
+ (delete 'configure) ; no configure script
+ (add-after 'build 'build-man
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (zero? (apply system* `("make" ,@make-flags "doc-man")))))
+ (replace 'install
+ (lambda* (#:key make-flags outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (and (zero? (apply system*
+ `("make" ,@make-flags
+ ,(string-append "prefix=" out)
+ ,(string-append
+ "CGIT_SCRIPT_PATH=" out "/share/cgit")
+ "install" "install-man")))
+ ;; Move the platform-dependent 'cgit.cgi' into lib
+ ;; to get it stripped.
+ (rename-file (string-append out "/share/cgit/cgit.cgi")
+ (string-append out "/lib/cgit/cgit.cgi"))
+ #t)))))))
+ (native-inputs
+ ;; For building manpage.
+ `(("asciidoc" ,asciidoc)
+ ("docbook-xml" ,docbook-xml)
+ ("docbook-xsl" ,docbook-xsl)
+ ("xmllint" ,libxml2)
+ ("xsltprot" ,libxslt)))
+ (inputs
+ `(("git:src" ,(package-source git))
+ ("openssl" ,openssl)
+ ("zlib" ,zlib)))
+ (home-page "https://git.zx2c4.com/cgit/")
+ (synopsis "Web frontend for git repositories")
+ (description
+ "CGit is an attempt to create a fast web interface for the Git SCM, using
+a built-in cache to decrease server I/O pressure.")
+ (license gpl2)))
+
(define-public shflags
(package
(name "shflags")
- (version "1.0.3")
+ (version "1.2.0")
(source (origin
(method url-fetch)
- (uri (string-append "https://shflags.googlecode.com/files/"
- "shflags-" version ".tgz"))
+ (uri (string-append "https://github.com/kward/shflags/archive/v"
+ version ".tar.gz"))
(sha256
(base32
- "08laxhf1hifh3w4j0hri5ppcklaqz0mnkmbaz8j0wxih29vi8slm"))))
+ "0zxw12haylaq60a335xlqcs4afw2zrgwqymmpw0m21r51w6irdmr"))))
(build-system trivial-build-system)
(native-inputs `(("tar" ,tar)
("gzip" ,gzip)))
(copy-file "src/shflags"
(string-append srcdir "/shflags"))
#t)))))
- (home-page "https://code.google.com/p/shflags/")
+ (home-page "https://github.com/kward/shflags")
(synopsis "Command-line flags library for shell scripts")
(description
"Shell Flags (shFlags) is a library written to greatly simplify the
(method git-fetch)
(uri (git-reference
(url "https://github.com/nvie/gitflow/")
- (commit "15aab26")))
+ (commit "15aab26490facf285acef56cb5d61025eacb3a69")))
(sha256
(base32
"01fs97q76fdfnvmrh2cyjhywcs3pykf1dg58sy0frflnsdzs6prx"))))
(license bsd-2)))
(define-public git-test-sequence
- (let ((commit "48e5a2f"))
+ (let ((commit "48e5a2f5a13a5f30452647237e23362b459b9c76"))
(package
(name "git-test-sequence")
- (version (string-append "20140312." commit))
+ (version (string-append "20140312." (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
(define-public gitolite
(package
(name "gitolite")
- (version "3.6.2")
+ (version "3.6.5")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/sitaramc/gitolite/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
- ;; Commit ed807a4 upstream
- (patches
- (list (search-patch "gitolite-openssh-6.8-compat.patch")))
(sha256
(base32
- "1gsgzi9ayb4rablki3mqr11b0h8db4xg43df660marfpacmkfb01"))))
+ "0xpqg04gyr4dhdhxx5lbk61lwwd5ml32530bigg2qy663icngwqm"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests
(define-public mercurial
(package
(name "mercurial")
- (version "3.2.4")
+ (version "3.8.4")
(source (origin
(method url-fetch)
- (uri (string-append "https://mercurial.selenic.com/release/mercurial-"
- version ".tar.gz"))
+ (uri (string-append "https://www.mercurial-scm.org/"
+ "release/mercurial-" version ".tar.gz"))
(sha256
(base32
- "1g7nfvapxj5k44dyp0p08v37s0zmrj2vl0rjgfd8297x0afidm08"))))
+ "19ixvxgifx48lxp9vdmsf88nnjsxl035ahmp3iw1vyilkpqkwbjb"))))
(build-system python-build-system)
(arguments
`(;; Restrict to Python 2, as Python 3 would require
;; FIXME: Disabled tests because they require the nose unit
;; testing framework: https://nose.readthedocs.org/en/latest/ .
#:tests? #f))
- (home-page "http://mercurial.selenic.com")
+ (home-page "https://www.mercurial-scm.org/")
(synopsis "Decentralized version control system")
(description
"Mercurial is a free, distributed source control management tool.
(define-public neon
(package
(name "neon")
- (version "0.30.0")
+ (version "0.30.1")
(source (origin
(method url-fetch)
(uri (string-append "http://www.webdav.org/neon/neon-"
version ".tar.gz"))
(sha256
(base32
- "1hlhg5w505jxdvaf7bq17057f6a48dry981g7lp2gwrhbp5wyqi9"))))
+ "1pawhk02x728xn396a1kcivy9gqm94srmgad6ymr9l0qvk02dih0"))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl)
(define-public subversion
(package
(name "subversion")
- (version "1.8.15")
+ (version "1.8.16")
(source (origin
(method url-fetch)
(uri (string-append "http://archive.apache.org/dist/subversion/"
"subversion-" version ".tar.bz2"))
(sha256
(base32
- "0b68rjy1sjd66nqcswrm1bhda3vk2ngkgs6drcanmzbcd3vs366g"))))
+ "0imkxn25n6sbcgfldrx4z29npjprb1lxjm5fb89q4297161nx3zi"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-after
"094pjwshvazlgagc254in2xvrp93vhcj0kb5ms17qs7sch99x9z2"))))
(build-system gnu-build-system)
(inputs `(("perl" ,perl)
- ("inetutils" ,inetutils) ; for `hostname', used in the tests
- ("emacs" ,emacs-no-x))) ; for `ctags'
+ ("inetutils" ,inetutils))) ; for `hostname', used in the tests
+ (native-inputs `(("emacs" ,emacs-minimal))) ; for `ctags'
(home-page "http://www.gnu.org/software/vc-dwim/")
(synopsis "Version-control-agnostic ChangeLog diff and commit tool")
(description
(sha256
(base32
"0bkw6fjh20ppvn54smv05461lm1vcwvn02avx941c4acafmkl1cm"))
- (patches (list (search-patch "cssc-gets-undeclared.patch")
- (search-patch "cssc-missing-include.patch")))))
+ (patches (search-patches "cssc-gets-undeclared.patch"
+ "cssc-missing-include.patch"))))
(build-system gnu-build-system)
(arguments
`(#:phases (alist-cons-before
(version "4.24")
(source (origin
(method url-fetch)
- (uri (string-append "mirror://sourceforge/aegis/aegis-"
- version ".tar.gz"))
+ (uri (string-append "mirror://sourceforge/aegis/aegis/" version
+ "/aegis-" version ".tar.gz"))
(sha256
(base32
"18s86ssarfmc4l17gbpzybca29m5wa37cbaimdji8czlcry3mcjl"))
- (patches (list (search-patch "aegis-perl-tempdir1.patch")
- (search-patch "aegis-perl-tempdir2.patch")
- (search-patch "aegis-test-fixup-1.patch")
- (search-patch "aegis-test-fixup-2.patch")
- (search-patch "aegis-constness-error.patch")))))
+ (patches (search-patches "aegis-perl-tempdir1.patch"
+ "aegis-perl-tempdir2.patch"
+ "aegis-test-fixup-1.patch"
+ "aegis-test-fixup-2.patch"
+ "aegis-constness-error.patch"))))
(build-system gnu-build-system)
(inputs
`(("e2fsprogs" ,e2fsprogs)
any project with more than one developer, is one of Aegis's major functions.")
(license gpl3+)))
+(define-public reposurgeon
+ (package
+ (name "reposurgeon")
+ (version "3.37")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.catb.org/~esr/" name "/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "14asjg4xy3mhh5z0r3k7c1wv9y803j2zfq32g5q5m95sf7yzygan"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ;no test suite distributed
+ #:make-flags
+ (list (string-append "target=" (assoc-ref %outputs "out")))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'build 'fix-docbook
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* (find-files "." "\\.xml$")
+ (("docbook/docbookx.dtd")
+ (string-append (assoc-ref inputs "docbook-xml")
+ "/xml/dtd/docbook/docbookx.dtd")))
+ #t))
+ (add-after 'install 'install-emacs-data
+ (lambda* (#:key outputs #:allow-other-keys)
+ (install-file "reposurgeon-mode.el"
+ (string-append (assoc-ref outputs "out")
+ "/share/emacs/site-lisp")))))))
+ (inputs
+ `(("python" ,python-wrapper)))
+ (native-inputs
+ `(("asciidoc" ,asciidoc)
+ ("docbook-xml" ,docbook-xml-4.1.2)
+ ("docbook-xsl" ,docbook-xsl)
+ ("libxml2" ,libxml2)
+ ("xmlto" ,xmlto)))
+ (home-page "http://www.catb.org/~esr/reposurgeon/")
+ (synopsis "Edit version-control repository history")
+ (description "Reposurgeon enables risky operations that version-control
+systems don't want to let you do, such as editing past comments and metadata
+and removing commits. It works with any version control system that can
+export and import Git fast-import streams, including Git, Mercurial, Fossil,
+Bazaar, CVS, RCS, and Src. It can also read Subversion dump files directly
+and can thus be used to script production of very high-quality conversions
+from Subversion to any supported Distributed Version Control System (DVCS).")
+ ;; Most files are distributed under bsd-2, except 'repocutter' which is
+ ;; under bsd-3.
+ (license (list bsd-2 bsd-3))))
+
(define-public tig
(package
(name "tig")
(define-public findnewest
(package
(name "findnewest")
- (version "0.2")
+ (version "0.3")
(source (origin
(method url-fetch)
(uri (string-append
version ".tar.gz"))
(sha256
(base32
- "0zlflad568y203yc5ynf1nxi2szn2pmbf1lvz6yk77kjyrpw7zxg"))))
+ "1ydis4y0amkgfr4y60sn076f1l41ya2kn89kfd9fqf44f9ccgb5r"))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
(define-public myrepos
(package
(name "myrepos")
- (version "1.20151022")
+ (version "1.20160123")
(source
(origin
(method url-fetch)
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0c93lqsngpsxsca7nygk4qhidr40ijgih86q81x1mfcwbs0gbds8"))))
+ (base32 "1723cg5haplz2w9dwdzp6ds1ip33cx3awmj4wnb0h4yq171v5lqk"))))
(build-system gnu-build-system)
(inputs
`(("perl" ,perl)))
(base32
"196g3jkaybjx11nbr51n0cjps3wjzb145ab76y717diqvvxp5v4r"))))
(build-system python-build-system)
+ (arguments `(#:python ,python-2))
(native-inputs
- `(("python-setuptools" ,python-setuptools)
+ `(("python2-setuptools" ,python2-setuptools)
;; for the tests
- ("python-six" ,python-six)))
+ ("python2-six" ,python2-six)))
(propagated-inputs
- `(("python-dateutil" ,python-dateutil-2)
- ("python-futures" ,python-futures)
- ("python-rauth" ,python-rauth)
- ("python-swiftclient" ,python-swiftclient)))
+ `(("python2-dateutil" ,python2-dateutil-2)
+ ("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 gpl3+)))
+
+(define-public fossil
+ (package
+ (name "fossil")
+ (version "1.34")
+ (source
+ (origin
+ (method url-fetch)
+ ;; Upstream source affected by
+ ;; http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20962
+ (uri (string-append
+ "https://web.archive.org/web/20160402202958/"
+ "https://www.fossil-scm.org/download/fossil-src-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "17x4vgjcfihwmq195qg32irp50panvjqfpvhqydfvv4ghwzbi9jk"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Commit 0a2ebe57 on 2015-08-03 18:35:53 changed output formatting
+ ;; for some commands, but affected tests were not updated. Use
+ ;; substitute here, which is more concise than patching.
+ (substitute* "test/clean.test"
+ (("NEW ") "NEW "))
+ (substitute* '("test/revert.test" "test/mv-rm.test")
+ (("REVERTED:") "REVERT ")
+ (("DELETE:") "DELETE ")
+ (("UNMANAGE:") "UNMANAGE "))
+ ;; Fix use of __DATE__ and __TIME__
+ (substitute* "src/main.c"
+ (("Compiled on %s %s") "Compiled")
+ (("__DATE__, __TIME__, ") ""))
+ #t))
+ (patches (list (search-patch "fossil-test-fixes.patch")))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("tcl" ,tcl) ;for configuration only
+ ("which" ,which) ;for tests only
+ ("ed" ,ed))) ;ditto
+ (inputs
+ `(("openssl" ,openssl)
+ ("zlib" ,zlib)
+ ("sqlite" ,sqlite)))
+ (arguments
+ `(#:configure-flags (list "--with-openssl=auto"
+ "--disable-internal-sqlite")
+ #:test-target "test"
+ #:phases (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs (configure-flags '())
+ #:allow-other-keys)
+ ;; The 'configure' script is not an autoconf script and
+ ;; chokes on unrecognized options.
+ (zero? (apply system*
+ "./configure"
+ (string-append "--prefix="
+ (assoc-ref outputs "out"))
+ configure-flags))))
+ (add-before 'check 'test-setup
+ (lambda _
+ (setenv "USER" "guix")
+ (setenv "TZ" "UTC")
+ ;; Fixing the th1 test would require many backports, so
+ ;; just disable for now.
+ (delete-file "test/th1.test")
+ #t)))))
+ (home-page "https://fossil-scm.org")
+ (synopsis "Software configuration management system")
+ (description
+ "Fossil is a distributed source control management system which supports
+access and administration over HTTP CGI or via a built-in HTTP server. It has
+a built-in wiki, built-in file browsing, built-in tickets system, etc.")
+ (license (list public-domain ;src/miniz.c, src/shell.c
+ bsd-2))))