X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/003e8d5e04d4296a18a651bf2183335db87dca77..22c161d0a881bd86f02494c5512ee6310d326b4d:/gnu/packages/version-control.scm diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 3cbd12f635..944eb7ae24 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -1,10 +1,14 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Nikita Karetnikov ;;; Copyright © 2013 Cyril Roelandt -;;; Copyright © 2013, 2014, 2015 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès ;;; Copyright © 2013, 2014 Andreas Enge -;;; Copyright © 2014 Mark H Weaver -;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2015, 2016 Mathieu Lirzin +;;; Copyright © 2014, 2015, 2016 Mark H Weaver +;;; Copyright © 2014, 2016 Eric Bavier +;;; Copyright © 2015, 2016 Efraim Flashner +;;; Copyright © 2015 Kyle Meyer +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,32 +27,36 @@ (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 cmake) #: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 base) #:use-module (gnu packages bison) #:use-module (gnu packages cook) #:use-module (gnu packages curl) + #:use-module (gnu packages docbook) #:use-module (gnu packages ed) #:use-module (gnu packages file) #:use-module (gnu packages flex) #:use-module (gnu packages gettext) #:use-module (gnu packages groff) #:use-module (gnu packages linux) -;; #:use-module (gnu packages gnutls) #:use-module (gnu packages nano) #:use-module (gnu packages ncurses) - #:use-module (gnu packages openssl) #:use-module (gnu packages ssh) + #:use-module (gnu packages web) + #:use-module (gnu packages openstack) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) @@ -59,20 +67,24 @@ #:use-module (gnu packages compression) #:use-module (gnu packages swig) #:use-module (gnu packages tcl) - #:use-module (gnu packages)) + #:use-module (gnu packages tls) + #:use-module (gnu packages) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1)) (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' @@ -100,14 +112,14 @@ as well as the classic centralized workflow.") ;; Keep in sync with 'git-manpages'! (package (name "git") - (version "2.2.1") + (version "2.7.4") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/software/scm/git/git-" version ".tar.xz")) (sha256 (base32 - "0l7l9rv1ww474rm4whj7dhjjacgdw5qlqqxqsnyzdpdxl34jshh9")))) + "0ys55v2xrhzj74jrrqx75xpr458klnyxshh8d8swfpp0zgg79rfy")))) (build-system gnu-build-system) (native-inputs `(("native-perl" ,perl) @@ -123,14 +135,25 @@ as well as the classic centralized workflow.") ;; For 'git-svn'. ("subversion" ,subversion) + ;; For 'git-send-email' + ("perl-authen-sasl" ,perl-authen-sasl) + ("perl-net-smtp-ssl" ,perl-net-smtp-ssl) + ("perl-io-socket-ssl" ,perl-io-socket-ssl) + ;; For 'git gui', 'gitk', and 'git citool'. ("tcl" ,tcl) ("tk" ,tk))) (outputs '("out" ; the core + "send-email" ; for git-send-email "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 . + "NO_INSTALL_HARDLINKS=indeed") #:test-target "test" #:tests? #f ; FIXME: Many tests are failing @@ -140,6 +163,8 @@ as well as the classic centralized workflow.") (assoc-ref %build-inputs "tk") "/bin/wish8.6")) ; XXX + #:modules ((srfi srfi-1) + ,@%gnu-build-system-modules) #:phases (alist-cons-after 'configure 'patch-makefile-shebangs @@ -163,6 +188,7 @@ as well as the classic centralized workflow.") (lambda* (#:key inputs outputs #:allow-other-keys) ;; Split the binaries to the various outputs. (let* ((out (assoc-ref outputs "out")) + (se (assoc-ref outputs "send-email")) (svn (assoc-ref outputs "svn")) (gui (assoc-ref outputs "gui")) (gitk (string-append out "/bin/gitk")) @@ -171,20 +197,23 @@ as well as the classic centralized workflow.") (git-gui* (string-append gui "/libexec/git-core/git-gui")) (git-cit (string-append out "/libexec/git-core/git-citool")) (git-cit* (string-append gui "/libexec/git-core/git-citool")) + (git-se (string-append out "/libexec/git-core/git-send-email")) + (git-se* (string-append se "/libexec/git-core/git-send-email")) (git-svn (string-append out "/libexec/git-core/git-svn")) (git-svn* (string-append svn "/libexec/git-core/git-svn")) (git-sm (string-append out "/libexec/git-core/git-submodule"))) (mkdir-p (string-append gui "/bin")) (mkdir-p (string-append gui "/libexec/git-core")) + (mkdir-p (string-append se "/libexec/git-core")) (mkdir-p (string-append svn "/libexec/git-core")) (for-each (lambda (old new) (copy-file old new) (delete-file old) (chmod new #o555)) - (list gitk git-gui git-cit git-svn) - (list gitk* git-gui* git-cit* git-svn*)) + (list gitk git-gui git-cit git-se git-svn) + (list gitk* git-gui* git-cit* git-se* git-svn*)) ;; Tell 'git-svn' where Subversion is. (wrap-program git-svn* @@ -201,6 +230,19 @@ as well as the classic centralized workflow.") (,(string-append (assoc-ref inputs "subversion") "/lib")))) + ;; Tell 'git-send-email' where perl modules are. + (wrap-program git-se* + `("PERL5LIB" ":" prefix + ,(map (lambda (o) (string-append o "/lib/perl5/site_perl")) + (list + ,@(transitive-input-references + 'inputs + (map (lambda (l) + (assoc l (inputs))) + '("perl-authen-sasl" + "perl-net-smtp-ssl" + "perl-io-socket-ssl"))))))) + ;; Tell 'git-submodule' where Perl is. (wrap-program git-sm `("PATH" ":" prefix @@ -249,7 +291,7 @@ everything from small to very large projects with speed and efficiency.") version ".tar.xz")) (sha256 (base32 - "0f75n5yfrzb55qbg5wq4bmv43lay806v51yhglwkp7mbv1zkby00")))) + "09ffk5c0dl1xg7xcvr0kadhspx4fr2spmlmcajzfycmap0ddhkyh")))) (build-system trivial-build-system) (arguments '(#:modules ((guix build utils)) @@ -278,17 +320,121 @@ everything from small to very large projects with speed and efficiency.") This is the documentation displayed when using the '--help' option of a 'git' command."))) +(define-public libgit2 + (package + (name "libgit2") + (version "0.24.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/libgit2/libgit2/" + "archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1c5jx0pcpz83x7s36jimfz5bj0vy7vwpchq9p4sgdqxy8gwr6rhw")))) + (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-hardcoded-paths + (lambda _ + (substitute* "tests/repo/init.c" + (("#!/bin/sh") (string-append "#!" (which "sh")))) + (substitute* "tests/clar/fs.h" + (("/bin/cp") (which "cp")) + (("/bin/rm") (which "rm"))) + #t)) + ;; Run checks more verbosely. + (replace 'check + (lambda _ (zero? (system* "./libgit2_clar" "-v" "-Q"))))))) + (inputs + `(("libssh2" ,libssh2) + ("libcurl" ,curl) + ("python" ,python-wrapper) + ("openssl" ,openssl))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://libgit2.github.com/") + (synopsis "Library providing Git core methods") + (description + "Libgit2 is a portable, pure C implementation of the Git core methods +provided as a re-entrant linkable library with a solid API, allowing you to +write native speed custom Git applications in any language with bindings.") + ;; GPLv2 with linking exception + (license gpl2))) + +(define-public cgit + (package + (name "cgit") + (version "0.12") + (source (origin + (method url-fetch) + (uri (string-append + "https://git.zx2c4.com/cgit/snapshot/cgit-" + version ".tar.xz")) + (sha256 + (base32 + "1dx54hgfyabmg9nm5qp6d01f54nlbqbbdwhwl0llb9imjf237qif")))) + (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))) @@ -310,7 +456,7 @@ command."))) (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 @@ -389,11 +535,9 @@ lot easier.") (output (assoc-ref %outputs "out")) (bindir (string-append output "/bin")) (script "git-test-sequence")) - (begin - (mkdir-p bindir) - (copy-file (string-append source "/" script) - (string-append bindir "/" script)) - #t))))) + (install-file (string-append source "/" script) + bindir) + #t)))) (home-page "http://dustin.sallings.org/2010/03/28/git-test-sequence.html") (synopsis "Run a command over a sequence of commits") (description @@ -405,19 +549,16 @@ also walk each side of a merge and test those changes individually.") (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 @@ -464,14 +605,14 @@ control to Git repositories.") (define-public mercurial (package (name "mercurial") - (version "3.2.4") + (version "3.8.1") (source (origin (method url-fetch) - (uri (string-append "http://mercurial.selenic.com/release/mercurial-" - version ".tar.gz")) + (uri (string-append "https://www.mercurial-scm.org/" + "release/mercurial-" version ".tar.gz")) (sha256 (base32 - "1g7nfvapxj5k44dyp0p08v37s0zmrj2vl0rjgfd8297x0afidm08")))) + "156m6269xdqq7mpw01c6b065k29xnb8b9lyzn1b0nlz5il2izkps")))) (build-system python-build-system) (arguments `(;; Restrict to Python 2, as Python 3 would require @@ -480,7 +621,7 @@ control to Git repositories.") ;; 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. @@ -491,14 +632,14 @@ and offers an easy and intuitive interface.") (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) @@ -536,29 +677,17 @@ WebDAV metadata support, wrappers for PROPFIND and PROPPATCH to simplify property manipulation.") (license gpl2+))) ; for documentation and tests; source under lgpl2.0+ -(define-public neon-0.29.6 - (package (inherit neon) - (name "neon") - (version "0.29.6") - (source (origin - (method url-fetch) - (uri (string-append "http://www.webdav.org/neon/neon-" - version ".tar.gz")) - (sha256 - (base32 - "0hzbjqdx1z8zw0vmbknf159wjsxbcq8ii0wgwkqhxj3dimr0nr4w")))))) - (define-public subversion (package (name "subversion") - (version "1.7.18") + (version "1.8.16") (source (origin (method url-fetch) (uri (string-append "http://archive.apache.org/dist/subversion/" "subversion-" version ".tar.bz2")) (sha256 (base32 - "06nrqnn3qq1hhskkcdbm0ilk2xv6ay2gyf2c7qvxp6xncb782wzn")))) + "0imkxn25n6sbcgfldrx4z29npjprb1lxjm5fb89q4297161nx3zi")))) (build-system gnu-build-system) (arguments '(#:phases (alist-cons-after @@ -574,7 +703,7 @@ property manipulation.") (substitute* "libtool" (("\\\\`ls") (string-append "\\`" coreutils "/bin/ls"))))) (alist-cons-after - 'install 'instal-perl-bindings + 'install 'install-perl-bindings (lambda* (#:key outputs #:allow-other-keys) ;; Follow the instructions from ;; 'subversion/bindings/swig/INSTALL'. @@ -603,7 +732,7 @@ property manipulation.") (inputs `(("apr" ,apr) ("apr-util" ,apr-util) - ("neon" ,neon-0.29.6) + ("serf" ,serf) ("perl" ,perl) ("python" ,python-2) ; incompatible with Python 3 (print syntax) ("sqlite" ,sqlite) @@ -656,7 +785,8 @@ machine.") (build-system gnu-build-system) (arguments ;; XXX: The test suite looks flawed, and the package is obsolete anyway. - '(#:tests? #f)) + '(#:tests? #f + #:configure-flags (list "--with-external-zlib"))) (inputs `(("zlib" ,zlib) ("nano" ,nano))) ; the default editor (home-page "http://cvs.nongnu.org") @@ -668,6 +798,45 @@ sources files, and documents. It fills a similar role to the free software RCS, PRCS, and Aegis packages.") (license gpl1+))) +(define-public cvs-fast-export + (package + (name "cvs-fast-export") + (version "1.33") + (source (origin + (method url-fetch) + (uri (string-append "http://www.catb.org/~esr/" + name "/" name "-" version ".tar.gz")) + (sha256 + (base32 + "1c3s4nacbwlaaccx1fr7hf72kxxrzy49y2rdz5hhqbk8r29vm8w1")))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases (delete 'configure)) + #:make-flags + (list "CC=gcc" (string-append "prefix?=" (assoc-ref %outputs "out"))))) + (inputs `(("git" ,git))) + (native-inputs `(("asciidoc" ,asciidoc) + ("docbook-xml" ,docbook-xml) + ("docbook-xsl" ,docbook-xsl) + ("xmllint" ,libxml2) + ("xsltproc" ,libxslt) + ;; These are needed for the tests. + ("cvs" ,cvs) + ("python" ,python-2) + ("rcs" ,rcs))) + (home-page "http://www.catb.org/esr/cvs-fast-export/") + (synopsis "Export an RCS or CVS history as a fast-import stream") + (description "This program analyzes a collection of RCS files in a CVS +repository (or outside of one) and, when possible, emits an equivalent history +in the form of a fast-import stream. Not all possible histories can be +rendered this way; the program tries to emit useful warnings when it can't. + +The program can also produce a visualization of the resulting commit directed +acyclic graph (DAG) in the input format of @uref{http://www.graphviz.org, +Graphviz}. The package also includes @command{cvssync}, a tool for mirroring +masters from remote CVS hosts.") + (license gpl2+))) + (define-public vc-dwim (package (name "vc-dwim") @@ -726,8 +895,8 @@ large, complex patch files.") (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 @@ -757,7 +926,7 @@ code control system SCCS. This allows old code still under that system to be accessed and migrated on modern systems.") (license gpl3+))) -;; This package can unfortunately work only in -TEST mode, since Aegis +;; This package can unfortunately work only in -TEST mode, since Aegis ;; requires that it is installed setuid root. (define-public aegis (package @@ -765,16 +934,16 @@ accessed and migrated on modern systems.") (version "4.24") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/aegis/aegis-" + (uri (string-append "mirror://sourceforge/aegis/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) @@ -788,17 +957,17 @@ accessed and migrated on modern systems.") ("groff" ,groff) ("perl" ,perl) ;; Various tests require the following: - ("cvs" ,cvs) + ("cvs" ,cvs) ("flex" ,flex) ("cook" ,cook) ("subversion" ,subversion) ("rcs" ,rcs) ("ed" ,ed))) (arguments - `(#:configure-flags (list "--with-no-aegis-configured" + `(#:configure-flags (list "--with-no-aegis-configured" "--sharedstatedir=/var/com/aegis") #:parallel-build? #f ; There are some nasty racy rules in the Makefile. - #:phases + #:phases (alist-cons-before 'configure 'pre-conf (lambda _ @@ -843,10 +1012,62 @@ as possible. Resolution of contention for source files, a major headache for any project with more than one developer, is one of Aegis's major functions.") (license 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") - (version "2.1") + (version "2.1.1") (source (origin (method url-fetch) (uri (string-append @@ -854,12 +1075,13 @@ any project with more than one developer, is one of Aegis's major functions.") version ".tar.gz")) (sha256 (base32 - "1c1w6w39a1dwx4whrg0ga1mhrlz095hz875z7ajn6xgmhkv8fqih")))) + "0bw5wivswwh7vx897q8xc2cqgkqhdzk8gh6fnav2kf34sngigiah")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses))) (arguments - `(#:tests? #f)) ; no tests implemented + `(#:tests? #f)) ; tests require access to /dev/tty + ;;`(#:test-target "test")) (home-page "http://jonas.nitro.dk/tig/") (synopsis "Ncurses-based text user interface for Git") (description @@ -867,3 +1089,165 @@ any project with more than one developer, is one of Aegis's major functions.") a history browser. It can also stage hunks for commit, or colorize the output of the 'git' command.") (license gpl2+))) + +(define-public findnewest + (package + (name "findnewest") + (version "0.3") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/0-wiz-0/findnewest/archive/findnewest-" + version ".tar.gz")) + (sha256 + (base32 + "1ydis4y0amkgfr4y60sn076f1l41ya2kn89kfd9fqf44f9ccgb5r")))) + (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'configure 'bootstrap + (lambda _ + (zero? (system* "autoreconf" "-vfi"))))))) + (native-inputs `(("autoconf" ,autoconf) + ("automake" ,automake))) + (home-page "https://github.com/0-wiz-0/findnewest/releases") + (synopsis "Print the modification time of the latest file") + (description + "Recursively find the newest file in a file tree and print its +modification time.") + (license bsd-2))) + +(define-public myrepos + (package + (name "myrepos") + (version "1.20160123") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/joeyh/myrepos/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1723cg5haplz2w9dwdzp6ds1ip33cx3awmj4wnb0h4yq171v5lqk")))) + (build-system gnu-build-system) + (inputs + `(("perl" ,perl))) + (arguments + `(#:test-target "test" + #:phases (alist-delete 'configure %standard-phases) + #:make-flags (list (string-append "PREFIX=" %output)))) + (home-page "http://myrepos.branchable.com/") + (synopsis "Multiple repository management tool") + (description + "Myrepos provides the @code{mr} command, which maps an operation (e.g., +fetching updates) over a collection of version control repositories. It +supports a large number of version control systems: Git, Subversion, +Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.") + (license gpl2+))) + +(define-public git-annex-remote-hubic + (package + (name "git-annex-remote-hubic") + (version "0.3.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/Schnouki/" name "/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "196g3jkaybjx11nbr51n0cjps3wjzb145ab76y717diqvvxp5v4r")))) + (build-system python-build-system) + (arguments `(#:python ,python-2)) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ;; for the tests + ("python2-six" ,python2-six))) + (propagated-inputs + `(("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))))