gnu: Update URLs for sourceforge.net.
[jackhill/guix/guix.git] / gnu / packages / version-control.scm
CommitLineData
dcee3fc5
NK
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
cf3fe3b0 3;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
1a59b6d0 4;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
fc1e4516 5;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
62063d85 6;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
6c0e2dbb 7;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
f36a1eba 8;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
17206f72 9;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
e92b8599 10;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
086e498b 11;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
dcee3fc5
NK
12;;;
13;;; This file is part of GNU Guix.
14;;;
15;;; GNU Guix is free software; you can redistribute it and/or modify it
16;;; under the terms of the GNU General Public License as published by
17;;; the Free Software Foundation; either version 3 of the License, or (at
18;;; your option) any later version.
19;;;
20;;; GNU Guix is distributed in the hope that it will be useful, but
21;;; WITHOUT ANY WARRANTY; without even the implied warranty of
22;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23;;; GNU General Public License for more details.
24;;;
25;;; You should have received a copy of the GNU General Public License
26;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
27
1b1c335f 28(define-module (gnu packages version-control)
83a39ed7 29 #:use-module ((guix licenses)
62063d85 30 #:select (asl2.0 bsd-2 bsd-3
c7810bd1 31 gpl1+ gpl2 gpl2+ gpl3+ lgpl2.1
f36a1eba 32 public-domain x11-style))
d1cba090 33 #:use-module (guix utils)
dcee3fc5
NK
34 #:use-module (guix packages)
35 #:use-module (guix download)
c7810bd1 36 #:use-module (guix git-download)
086e498b 37 #:use-module (guix build-system cmake)
1b1c335f 38 #:use-module (guix build-system gnu)
dcee3fc5 39 #:use-module (guix build-system python)
c7810bd1 40 #:use-module (guix build-system trivial)
2b24faa2 41 #:use-module (gnu packages apr)
df7393b9 42 #:use-module (gnu packages autotools)
99828fa7 43 #:use-module (gnu packages documentation)
c7810bd1 44 #:use-module (gnu packages base)
0e534e74
JD
45 #:use-module (gnu packages bison)
46 #:use-module (gnu packages cook)
d9ff410f 47 #:use-module (gnu packages curl)
59ef2030 48 #:use-module (gnu packages docbook)
740c24df 49 #:use-module (gnu packages ed)
0e534e74
JD
50 #:use-module (gnu packages file)
51 #:use-module (gnu packages flex)
fc1e4516 52 #:use-module (gnu packages gettext)
0e534e74
JD
53 #:use-module (gnu packages groff)
54 #:use-module (gnu packages linux)
1972fed4 55 #:use-module (gnu packages nano)
2459141e 56 #:use-module (gnu packages ncurses)
378b01dc 57 #:use-module (gnu packages ssh)
46138f3e 58 #:use-module (gnu packages web)
e8d2168c 59 #:use-module (gnu packages openstack)
cf3fe3b0 60 #:use-module (gnu packages perl)
fc1e4516 61 #:use-module (gnu packages pkg-config)
cf3fe3b0 62 #:use-module (gnu packages python)
5f96f303 63 #:use-module (gnu packages databases)
9de46ffb 64 #:use-module (gnu packages admin)
d9ff410f 65 #:use-module (gnu packages xml)
a4572a17 66 #:use-module (gnu packages emacs)
8b2fe785 67 #:use-module (gnu packages compression)
ecfb6993 68 #:use-module (gnu packages swig)
25f76ef0 69 #:use-module (gnu packages tcl)
cc2b77df 70 #:use-module (gnu packages tls)
58c18069
EB
71 #:use-module (gnu packages)
72 #:use-module (ice-9 match)
73 #:use-module (srfi srfi-1))
dcee3fc5
NK
74
75(define-public bazaar
76 (package
77 (name "bazaar")
d1cba090 78 (version "2.7.0")
dcee3fc5
NK
79 (source
80 (origin
81 (method url-fetch)
d1cba090
EF
82 (uri (string-append "https://launchpad.net/bzr/"
83 (version-major+minor version) "/" version
dcee3fc5
NK
84 "/+download/bzr-" version ".tar.gz"))
85 (sha256
86 (base32
d1cba090 87 "1cysix5k3wa6y7jjck3ckq3abls4gvz570s0v0hxv805nwki4i8d"))))
dcee3fc5
NK
88 (build-system python-build-system)
89 (inputs
90 ;; Note: 'tools/packaging/lp-upload-release' and 'tools/weavemerge.sh'
91 ;; require Zsh.
1dba6407 92 `(("gettext" ,gnu-gettext)))
dcee3fc5 93 (arguments
1611eccd 94 `(#:tests? #f ; no test target
3b9af0f3 95 #:python ,python-2 ; Python 3 apparently not yet supported, see
1611eccd 96 ; https://answers.launchpad.net/bzr/+question/229048
3b9af0f3
MW
97 #:phases (alist-cons-after
98 'unpack 'fix-mandir
99 (lambda _
100 (substitute* "setup.py"
101 (("man/man1") "share/man/man1")))
102 %standard-phases)))
dcee3fc5 103 (home-page "https://gnu.org/software/bazaar")
79c311b8 104 (synopsis "Version control system supporting both distributed and centralized workflows")
dcee3fc5 105 (description
79c311b8 106 "GNU Bazaar is a version control system that allows you to record
35b9e423 107changes to project files over time. It supports both a distributed workflow
79c311b8 108as well as the classic centralized workflow.")
2c71cf66 109 (license gpl2+)))
1b1c335f 110
d9ff410f 111(define-public git
1c38551a 112 ;; Keep in sync with 'git-manpages'!
d9ff410f
AE
113 (package
114 (name "git")
f0344d93 115 (version "2.9.1")
d9ff410f
AE
116 (source (origin
117 (method url-fetch)
4d96439d 118 (uri (string-append "mirror://kernel.org/software/scm/git/git-"
ff212a5c 119 version ".tar.xz"))
d9ff410f
AE
120 (sha256
121 (base32
f0344d93 122 "18l2jb4bkp9ljz6p2aviwzxqyzza9z3v6h1pnkz7kjf1fay61zp8"))))
d9ff410f 123 (build-system gnu-build-system)
2a5e15c6
LC
124 (native-inputs
125 `(("native-perl" ,perl)
126 ("gettext" ,gnu-gettext)))
d9ff410f
AE
127 (inputs
128 `(("curl" ,curl)
129 ("expat" ,expat)
d9ff410f
AE
130 ("openssl" ,openssl)
131 ("perl" ,perl)
d1f30e99 132 ("python" ,python-2) ; CAVEAT: incompatible with python-3 according to INSTALL
ed5f49ff
LC
133 ("zlib" ,zlib)
134
135 ;; For 'git-svn'.
ecfb6993
LC
136 ("subversion" ,subversion)
137
58c18069
EB
138 ;; For 'git-send-email'
139 ("perl-authen-sasl" ,perl-authen-sasl)
140 ("perl-net-smtp-ssl" ,perl-net-smtp-ssl)
141 ("perl-io-socket-ssl" ,perl-io-socket-ssl)
142
ecfb6993
LC
143 ;; For 'git gui', 'gitk', and 'git citool'.
144 ("tcl" ,tcl)
145 ("tk" ,tk)))
146 (outputs '("out" ; the core
58c18069 147 "send-email" ; for git-send-email
ecfb6993
LC
148 "svn" ; git-svn
149 "gui")) ; gitk, git gui
d9ff410f 150 (arguments
1a59b6d0
LC
151 `(#:make-flags `("V=1" ;more verbose compilation
152
153 ;; By default 'make install' creates hard links for
154 ;; things in 'libexec/git-core', which leads to huge
155 ;; nars; see <http://bugs.gnu.org/21949>.
156 "NO_INSTALL_HARDLINKS=indeed")
d9ff410f
AE
157 #:test-target "test"
158 #:tests? #f ; FIXME: Many tests are failing
ecfb6993
LC
159
160 ;; The explicit --with-tcltk forces the build system to hardcode the
161 ;; absolute file name to 'wish'.
162 #:configure-flags (list (string-append "--with-tcltk="
163 (assoc-ref %build-inputs "tk")
164 "/bin/wish8.6")) ; XXX
165
58c18069
EB
166 #:modules ((srfi srfi-1)
167 ,@%gnu-build-system-modules)
d9ff410f 168 #:phases
d4bf49b1
EB
169 (alist-cons-after
170 'configure 'patch-makefile-shebangs
171 (lambda _
172 (substitute* "Makefile"
173 (("/bin/sh") (which "sh"))
174 (("/usr/bin/perl") (which "perl"))
175 (("/usr/bin/python") (which "python"))))
ed5f49ff 176 (alist-cons-after
23c0e743
LC
177 'install 'install-shell-completion
178 (lambda* (#:key outputs #:allow-other-keys)
179 (let* ((out (assoc-ref outputs "out"))
180 (completions (string-append out "/etc/bash_completion.d")))
181 ;; TODO: Install the tcsh and zsh completions in the right place.
182 (mkdir-p completions)
183 (copy-file "contrib/completion/git-completion.bash"
be3ed52d 184 (string-append completions "/git"))
23c0e743
LC
185 #t))
186 (alist-cons-after
187 'install 'split
188 (lambda* (#:key inputs outputs #:allow-other-keys)
189 ;; Split the binaries to the various outputs.
190 (let* ((out (assoc-ref outputs "out"))
58c18069 191 (se (assoc-ref outputs "send-email"))
23c0e743
LC
192 (svn (assoc-ref outputs "svn"))
193 (gui (assoc-ref outputs "gui"))
194 (gitk (string-append out "/bin/gitk"))
195 (gitk* (string-append gui "/bin/gitk"))
196 (git-gui (string-append out "/libexec/git-core/git-gui"))
197 (git-gui* (string-append gui "/libexec/git-core/git-gui"))
198 (git-cit (string-append out "/libexec/git-core/git-citool"))
199 (git-cit* (string-append gui "/libexec/git-core/git-citool"))
58c18069
EB
200 (git-se (string-append out "/libexec/git-core/git-send-email"))
201 (git-se* (string-append se "/libexec/git-core/git-send-email"))
23c0e743
LC
202 (git-svn (string-append out "/libexec/git-core/git-svn"))
203 (git-svn* (string-append svn "/libexec/git-core/git-svn"))
204 (git-sm (string-append out
205 "/libexec/git-core/git-submodule")))
206 (mkdir-p (string-append gui "/bin"))
207 (mkdir-p (string-append gui "/libexec/git-core"))
58c18069 208 (mkdir-p (string-append se "/libexec/git-core"))
23c0e743 209 (mkdir-p (string-append svn "/libexec/git-core"))
ecfb6993 210
23c0e743
LC
211 (for-each (lambda (old new)
212 (copy-file old new)
213 (delete-file old)
214 (chmod new #o555))
58c18069
EB
215 (list gitk git-gui git-cit git-se git-svn)
216 (list gitk* git-gui* git-cit* git-se* git-svn*))
ed5f49ff 217
23c0e743
LC
218 ;; Tell 'git-svn' where Subversion is.
219 (wrap-program git-svn*
220 `("PATH" ":" prefix
221 (,(string-append (assoc-ref inputs "subversion")
222 "/bin")))
223 `("PERL5LIB" ":" prefix
224 (,(string-append (assoc-ref inputs "subversion")
225 "/lib/perl5/site_perl")))
ed5f49ff 226
23c0e743
LC
227 ;; XXX: The .so for SVN/Core.pm lacks a RUNPATH, so
228 ;; help it find 'libsvn_client-1.so'.
229 `("LD_LIBRARY_PATH" ":" prefix
230 (,(string-append (assoc-ref inputs "subversion")
231 "/lib"))))
0a5a1db2 232
58c18069
EB
233 ;; Tell 'git-send-email' where perl modules are.
234 (wrap-program git-se*
235 `("PERL5LIB" ":" prefix
236 ,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
355e53c4 237 (list
a6d0b306 238 ,@(transitive-input-references
355e53c4 239 'inputs
a6d0b306
EB
240 (map (lambda (l)
241 (assoc l (inputs)))
242 '("perl-authen-sasl"
243 "perl-net-smtp-ssl"
244 "perl-io-socket-ssl")))))))
58c18069 245
23c0e743
LC
246 ;; Tell 'git-submodule' where Perl is.
247 (wrap-program git-sm
248 `("PATH" ":" prefix
249 (,(string-append (assoc-ref inputs "perl")
250 "/bin"))))
2a5e15c6 251
23c0e743
LC
252 ;; Tell 'git' to look for core programs in the user's profile.
253 ;; This allows user to install other outputs of this package and
254 ;; have them transparently taken into account. There's a
255 ;; 'GIT_EXEC_PATH' environment variable, but it's supposed to
256 ;; specify a single directory, not a search path.
257 (wrap-program (string-append out "/bin/git")
258 `("PATH" ":" prefix
259 ("$HOME/.guix-profile/libexec/git-core")))))
260 %standard-phases)))))
da699774
LC
261
262 (native-search-paths
263 ;; For HTTPS access, Git needs a single-file certificate bundle, specified
264 ;; with $GIT_SSL_CAINFO.
265 ;; FIXME: This variable designates a single file; it is not a search path.
266 (list (search-path-specification
267 (variable "GIT_SSL_CAINFO")
6d461b21 268 (file-type 'regular)
da699774
LC
269 (files '("etc/ssl/certs/ca-certificates.crt")))))
270
d9ff410f
AE
271 (synopsis "Distributed version control system")
272 (description
273 "Git is a free distributed version control system designed to handle
274everything from small to very large projects with speed and efficiency.")
275 (license gpl2)
276 (home-page "http://git-scm.com/")))
277
1c38551a
LC
278(define-public git-manpages
279 ;; Keep in sync with 'git'!
280
281 ;; Granted, we could build the man pages from the 'git' package itself,
282 ;; which contains the real source. However, it would add a dependency on a
283 ;; full XML tool chain, and building it actually takes ages. So we use this
284 ;; lazy approach.
285 (package
286 (name "git-manpages")
287 (version (package-version git))
288 (source (origin
289 (method url-fetch)
290 (uri (string-append
291 "mirror://kernel.org/software/scm/git/git-manpages-"
292 version ".tar.xz"))
293 (sha256
294 (base32
f0344d93 295 "1v9icsf85vvrrg7fakm91d11q23rvnh6dq4b4c4ya8v95z00mg8p"))))
1c38551a
LC
296 (build-system trivial-build-system)
297 (arguments
298 '(#:modules ((guix build utils))
299 #:builder
300 (begin
301 (use-modules (guix build utils))
302
d9762589
LC
303 (let* ((xz (assoc-ref %build-inputs "xz"))
304 (tar (assoc-ref %build-inputs "tar"))
305 (out (assoc-ref %outputs "out"))
306 (man (string-append out "/share/man")))
1c38551a
LC
307 (setenv "PATH" (string-append tar "/bin:" xz "/bin"))
308
d9762589
LC
309 (mkdir-p man)
310 (with-directory-excursion man
1c38551a
LC
311 (zero? (system* "tar" "xvf"
312 (assoc-ref %build-inputs "source"))))))))
313
314 (native-inputs `(("tar" ,tar)
315 ("xz" ,xz)))
316 (home-page (package-home-page git))
317 (license (package-license git))
318 (synopsis "Man pages of the Git version control system")
319 (description
320 "This package provides the man pages of the Git version control system.
321This is the documentation displayed when using the '--help' option of a 'git'
322command.")))
323
086e498b
RW
324(define-public libgit2
325 (package
326 (name "libgit2")
b6c2f7da 327 (version "0.24.1")
086e498b
RW
328 (source (origin
329 (method url-fetch)
330 (uri (string-append "https://github.com/libgit2/libgit2/"
331 "archive/v" version ".tar.gz"))
332 (file-name (string-append name "-" version ".tar.gz"))
333 (sha256
334 (base32
b6c2f7da 335 "1ppyfwxc276d2p2pwbzlmvs2bkgng425rl8k2rf9nsq66jxqq6b0"))))
086e498b
RW
336 (build-system cmake-build-system)
337 (arguments
338 `(#:phases
339 (modify-phases %standard-phases
340 (add-after 'unpack 'fix-hardcoded-paths
341 (lambda _
342 (substitute* "tests/repo/init.c"
343 (("#!/bin/sh") (string-append "#!" (which "sh"))))
344 (substitute* "tests/clar/fs.h"
345 (("/bin/cp") (which "cp"))
346 (("/bin/rm") (which "rm")))
347 #t))
348 ;; Run checks more verbosely.
349 (replace 'check
350 (lambda _ (zero? (system* "./libgit2_clar" "-v" "-Q")))))))
351 (inputs
352 `(("libssh2" ,libssh2)
353 ("libcurl" ,curl)
3a099d17 354 ("python" ,python-wrapper)
086e498b
RW
355 ("openssl" ,openssl)))
356 (native-inputs
357 `(("pkg-config" ,pkg-config)))
358 (home-page "http://libgit2.github.com/")
359 (synopsis "Library providing Git core methods")
360 (description
361 "Libgit2 is a portable, pure C implementation of the Git core methods
362provided as a re-entrant linkable library with a solid API, allowing you to
363write native speed custom Git applications in any language with bindings.")
364 ;; GPLv2 with linking exception
365 (license gpl2)))
366
7ad1fee5
SB
367(define-public cgit
368 (package
369 (name "cgit")
569d9efe 370 (version "1.0")
7ad1fee5
SB
371 (source (origin
372 (method url-fetch)
373 (uri (string-append
374 "https://git.zx2c4.com/cgit/snapshot/cgit-"
375 version ".tar.xz"))
376 (sha256
377 (base32
569d9efe 378 "0kbh835p7dl4h88qv55fyfh1za09cgnqh63rii325w9215hm95x8"))))
7ad1fee5
SB
379 (build-system gnu-build-system)
380 (arguments
381 '(#:tests? #f ; XXX: fail to build the in-source git.
382 #:test-target "test"
383 #:make-flags '("CC=gcc" "SHELL_PATH=sh")
384 #:phases
385 (modify-phases %standard-phases
386 (add-after 'unpack 'unpack-git
387 (lambda* (#:key inputs #:allow-other-keys)
388 ;; Unpack the source of git into the 'git' directory.
389 (zero? (system*
390 "tar" "--strip-components=1" "-C" "git" "-xf"
391 (assoc-ref inputs "git:src")))))
392 (delete 'configure) ; no configure script
393 (add-after 'build 'build-man
394 (lambda* (#:key make-flags #:allow-other-keys)
395 (zero? (apply system* `("make" ,@make-flags "doc-man")))))
396 (replace 'install
397 (lambda* (#:key make-flags outputs #:allow-other-keys)
398 (let ((out (assoc-ref outputs "out")))
399 (and (zero? (apply system*
400 `("make" ,@make-flags
401 ,(string-append "prefix=" out)
402 ,(string-append
403 "CGIT_SCRIPT_PATH=" out "/share/cgit")
404 "install" "install-man")))
405 ;; Move the platform-dependent 'cgit.cgi' into lib
406 ;; to get it stripped.
407 (rename-file (string-append out "/share/cgit/cgit.cgi")
408 (string-append out "/lib/cgit/cgit.cgi"))
409 #t)))))))
410 (native-inputs
411 ;; For building manpage.
412 `(("asciidoc" ,asciidoc)
413 ("docbook-xml" ,docbook-xml)
414 ("docbook-xsl" ,docbook-xsl)
415 ("xmllint" ,libxml2)
416 ("xsltprot" ,libxslt)))
417 (inputs
418 `(("git:src" ,(package-source git))
419 ("openssl" ,openssl)
420 ("zlib" ,zlib)))
421 (home-page "https://git.zx2c4.com/cgit/")
422 (synopsis "Web frontend for git repositories")
423 (description
424 "CGit is an attempt to create a fast web interface for the Git SCM, using
425a built-in cache to decrease server I/O pressure.")
426 (license gpl2)))
427
c7810bd1
EB
428(define-public shflags
429 (package
430 (name "shflags")
b65195c2 431 (version "1.2.0")
c7810bd1
EB
432 (source (origin
433 (method url-fetch)
b65195c2
EF
434 (uri (string-append "https://github.com/kward/shflags/archive/v"
435 version ".tar.gz"))
c7810bd1
EB
436 (sha256
437 (base32
b65195c2 438 "0zxw12haylaq60a335xlqcs4afw2zrgwqymmpw0m21r51w6irdmr"))))
c7810bd1
EB
439 (build-system trivial-build-system)
440 (native-inputs `(("tar" ,tar)
441 ("gzip" ,gzip)))
442 (arguments
443 `(#:modules ((guix build utils))
444 #:builder (begin
445 (use-modules (guix build utils))
446 (let* ((source (assoc-ref %build-inputs "source"))
447 (tar (assoc-ref %build-inputs "tar"))
448 (gzip (assoc-ref %build-inputs "gzip"))
449 (output (assoc-ref %outputs "out"))
450 (srcdir (string-append output "/src")))
451 (begin
452 (setenv "PATH" (string-append gzip "/bin"))
453 (system* (string-append tar "/bin/tar") "xzf"
454 source)
455 (chdir ,(string-append name "-" version))
456 (mkdir-p srcdir)
457 (copy-file "src/shflags"
458 (string-append srcdir "/shflags"))
459 #t)))))
b65195c2 460 (home-page "https://github.com/kward/shflags")
c7810bd1
EB
461 (synopsis "Command-line flags library for shell scripts")
462 (description
463 "Shell Flags (shFlags) is a library written to greatly simplify the
464handling of command-line flags in Bourne based Unix shell scripts (bash, dash,
465ksh, sh, zsh). Most shell scripts use getopt for flags processing, but the
466different versions of getopt on various OSes make writing portable shell
467scripts difficult. shFlags instead provides an API that doesn't change across
468shell and OS versions so the script writer can be confident that the script
469will work.")
470 (license lgpl2.1)))
471
472(define-public git-flow
473 (package
474 (name "git-flow")
475 ;; This version has not be officially released yet, so we build it
476 ;; directly from the git repository.
477 (version "0.4.2-pre")
478 (source (origin
479 (method git-fetch)
480 (uri (git-reference
481 (url "https://github.com/nvie/gitflow/")
698bd297 482 (commit "15aab26490facf285acef56cb5d61025eacb3a69")))
c7810bd1
EB
483 (sha256
484 (base32
485 "01fs97q76fdfnvmrh2cyjhywcs3pykf1dg58sy0frflnsdzs6prx"))))
486 (build-system gnu-build-system)
487 (inputs `(("shflags" ,shflags)))
488 (arguments
489 '(#:tests? #f ; no tests
490 #:make-flags (list (string-append "prefix="
491 (assoc-ref %outputs "out")))
492 #:phases (alist-cons-after
493 'unpack 'reset-shFlags-link
494 (lambda* (#:key inputs #:allow-other-keys)
495 ;; The link points to a file in the shFlags submodule.
496 ;; Redirect it to point to our system shFlags.
497 (let ((shflags (assoc-ref inputs "shflags")))
498 (begin
499 (delete-file "gitflow-shFlags")
500 (symlink (string-append shflags "/src/shflags")
501 "gitflow-shFlags"))))
502 (alist-delete
503 'configure
504 (alist-delete 'build %standard-phases)))))
505 (home-page "http://nvie.com/posts/a-successful-git-branching-model/")
506 (synopsis "Git extensions for Vincent Driessen's branching model")
507 (description
508 "Vincent Driessen's branching model is a git branching and release
509management strategy that helps developers keep track of features, hotfixes,
510and releases in bigger software projects. The git-flow library of git
511subcommands helps automate some parts of the flow to make working with it a
512lot easier.")
513 (license bsd-2)))
514
a63094a7 515(define-public git-test-sequence
698bd297 516 (let ((commit "48e5a2f5a13a5f30452647237e23362b459b9c76"))
a63094a7
EB
517 (package
518 (name "git-test-sequence")
698bd297 519 (version (string-append "20140312." (string-take commit 7)))
a63094a7
EB
520 (source (origin
521 (method git-fetch)
522 (uri (git-reference
523 ;; There are many other scripts in this directory; we
524 ;; are interested in just one for this package.
525 (url "https://github.com/dustin/bindir")
526 (commit commit)))
527 (sha256
528 (base32
529 "1dcq0y16yznbv4k9h8gg90kv1gkn8r8dbvl4m2rpfd7q5nqhn617"))))
530 (build-system trivial-build-system)
531 (arguments
532 `(#:modules ((guix build utils))
533 #:builder (begin
534 (use-modules (guix build utils))
535 (let* ((source (assoc-ref %build-inputs "source"))
536 (output (assoc-ref %outputs "out"))
537 (bindir (string-append output "/bin"))
538 (script "git-test-sequence"))
96c46210
LC
539 (install-file (string-append source "/" script)
540 bindir)
541 #t))))
a63094a7
EB
542 (home-page "http://dustin.sallings.org/2010/03/28/git-test-sequence.html")
543 (synopsis "Run a command over a sequence of commits")
544 (description
545 "git-test-sequence is similar to an automated git bisect except it’s
546linear. It will test every change between two points in the DAG. It will
547also walk each side of a merge and test those changes individually.")
548 (license (x11-style "file://LICENSE")))))
549
378b01dc
DT
550(define-public gitolite
551 (package
552 (name "gitolite")
20109e07 553 (version "3.6.5")
378b01dc
DT
554 (source (origin
555 (method url-fetch)
556 (uri (string-append
557 "https://github.com/sitaramc/gitolite/archive/v"
558 version ".tar.gz"))
559 (file-name (string-append name "-" version ".tar.gz"))
378b01dc
DT
560 (sha256
561 (base32
20109e07 562 "0xpqg04gyr4dhdhxx5lbk61lwwd5ml32530bigg2qy663icngwqm"))))
378b01dc
DT
563 (build-system gnu-build-system)
564 (arguments
565 '(#:tests? #f ; no tests
566 #:phases (modify-phases %standard-phases
567 (delete 'configure)
568 (delete 'build)
569 (add-before 'install 'patch-scripts
570 (lambda* (#:key inputs #:allow-other-keys)
571 (let ((perl (string-append (assoc-ref inputs "perl")
572 "/bin/perl")))
573 ;; This seems to take care of every shell script that
574 ;; invokes Perl.
575 (substitute* (find-files "." ".*")
576 ((" perl -")
577 (string-append " " perl " -"))))))
578 (replace 'install
579 (lambda* (#:key outputs #:allow-other-keys)
580 (let* ((output (assoc-ref outputs "out"))
581 (sharedir (string-append output "/share/gitolite"))
582 (bindir (string-append output "/bin")))
583 (mkdir-p sharedir)
584 (mkdir-p bindir)
585 (system* "./install" "-to" sharedir)
586 ;; Create symlinks for executable scripts in /bin.
587 (for-each (lambda (script)
588 (symlink (string-append sharedir "/" script)
589 (string-append bindir "/" script)))
590 '("gitolite" "gitolite-shell"))
591 #t))))))
592 (inputs
593 `(("perl" ,perl)))
594 ;; git and openssh are propagated because trying to patch the source via
595 ;; regexp matching is too brittle and prone to false positives.
596 (propagated-inputs
597 `(("git" ,git)
598 ("openssh" ,openssh)))
599 (home-page "http://gitolite.com")
600 (synopsis "Git access control layer")
601 (description
602 "Gitolite is an access control layer on top of Git, providing fine access
603control to Git repositories.")
604 (license gpl2)))
605
5151c2e1
AB
606(define-public mercurial
607 (package
608 (name "mercurial")
94d8726b 609 (version "3.8.4")
5151c2e1
AB
610 (source (origin
611 (method url-fetch)
5575917d
EF
612 (uri (string-append "https://www.mercurial-scm.org/"
613 "release/mercurial-" version ".tar.gz"))
5151c2e1
AB
614 (sha256
615 (base32
94d8726b 616 "19ixvxgifx48lxp9vdmsf88nnjsxl035ahmp3iw1vyilkpqkwbjb"))))
5151c2e1
AB
617 (build-system python-build-system)
618 (arguments
619 `(;; Restrict to Python 2, as Python 3 would require
620 ;; the argument --c2to3.
621 #:python ,python-2
622 ;; FIXME: Disabled tests because they require the nose unit
623 ;; testing framework: https://nose.readthedocs.org/en/latest/ .
624 #:tests? #f))
5575917d 625 (home-page "https://www.mercurial-scm.org/")
5151c2e1
AB
626 (synopsis "Decentralized version control system")
627 (description
628 "Mercurial is a free, distributed source control management tool.
629It efficiently handles projects of any size
630and offers an easy and intuitive interface.")
631 (license gpl2+)))
632
fc1e4516
AE
633(define-public neon
634 (package
635 (name "neon")
892f92b7 636 (version "0.30.1")
fc1e4516
AE
637 (source (origin
638 (method url-fetch)
639 (uri (string-append "http://www.webdav.org/neon/neon-"
640 version ".tar.gz"))
641 (sha256
642 (base32
892f92b7 643 "1pawhk02x728xn396a1kcivy9gqm94srmgad6ymr9l0qvk02dih0"))))
fc1e4516
AE
644 (build-system gnu-build-system)
645 (native-inputs
646 `(("perl" ,perl)
647 ("pkg-config" ,pkg-config)))
648 (inputs
649 `(("libxml2" ,libxml2)
650 ("openssl" ,openssl)
651 ("zlib" ,zlib)))
652 (arguments
653 `(;; FIXME: Add tests once reverse address lookup is fixed in glibc, see
654 ;; https://sourceware.org/bugzilla/show_bug.cgi?id=16475
655 #:tests? #f
656 #:configure-flags '("--enable-shared"
657 ;; requires libgnutils-config, deprecated
658 ;; in gnutls 2.8.
659 ; "--with-ssl=gnutls")))
660 "--with-ssl=openssl")))
661 (home-page "http://www.webdav.org/neon/")
662 (synopsis "HTTP and WebDAV client library")
663 (description "Neon is an HTTP and WebDAV client library, with a
664C interface. Features:
665High-level wrappers for common HTTP and WebDAV operations (GET, MOVE,
666DELETE, etc.);
667low-level interface to the HTTP request/response engine, allowing the use
668of arbitrary HTTP methods, headers, etc.;
669authentication support including Basic and Digest support, along with
670GSSAPI-based Negotiate on Unix, and SSPI-based Negotiate/NTLM on Win32;
671SSL/TLS support using OpenSSL or GnuTLS, exposing an abstraction layer for
672verifying server certificates, handling client certificates, and examining
673certificate properties, smartcard-based client certificates are also
674supported via a PKCS#11 wrapper interface;
675abstract interface to parsing XML using libxml2 or expat, and wrappers for
676simplifying handling XML HTTP response bodies;
677WebDAV metadata support, wrappers for PROPFIND and PROPPATCH to simplify
678property manipulation.")
679 (license gpl2+))) ; for documentation and tests; source under lgpl2.0+
680
cf3fe3b0
CR
681(define-public subversion
682 (package
683 (name "subversion")
6c0e2dbb 684 (version "1.8.16")
cf3fe3b0
CR
685 (source (origin
686 (method url-fetch)
7639105b
EB
687 (uri (string-append "http://archive.apache.org/dist/subversion/"
688 "subversion-" version ".tar.bz2"))
cf3fe3b0
CR
689 (sha256
690 (base32
6c0e2dbb 691 "0imkxn25n6sbcgfldrx4z29npjprb1lxjm5fb89q4297161nx3zi"))))
cf3fe3b0 692 (build-system gnu-build-system)
8b2fe785
LC
693 (arguments
694 '(#:phases (alist-cons-after
7639105b
EB
695 'configure 'patch-libtool-wrapper-ls
696 (lambda* (#:key inputs #:allow-other-keys)
697 ;; This substitution allows tests svnauthz_tests and
698 ;; svnlook_tests to pass. These tests execute svnauthz and
699 ;; svnlook through their libtool wrapper scripts from svn
700 ;; hooks, whose empty environments cause "ls: command not
701 ;; found" errors. It would be nice if this fix ultimately
702 ;; made its way into libtool.
703 (let ((coreutils (assoc-ref inputs "coreutils")))
704 (substitute* "libtool"
705 (("\\\\`ls") (string-append "\\`" coreutils "/bin/ls")))))
706 (alist-cons-after
46138f3e 707 'install 'install-perl-bindings
7639105b
EB
708 (lambda* (#:key outputs #:allow-other-keys)
709 ;; Follow the instructions from
710 ;; 'subversion/bindings/swig/INSTALL'.
711 (let ((out (assoc-ref outputs "out")))
712 (and (zero? (system* "make" "swig-pl-lib"))
713 ;; FIXME: Test failures.
714 ;; (zero? (system* "make" "check-swig-pl"))
715 (zero? (system* "make" "install-swig-pl-lib"))
8b2fe785 716
7639105b
EB
717 ;; Set the right installation prefix.
718 (with-directory-excursion
719 "subversion/bindings/swig/perl/native"
720 (and (zero?
721 (system* "perl" "Makefile.PL"
722 (string-append "PREFIX=" out)))
723 (zero?
6b206853
SB
724 (system* "make" "install"
725 (string-append "OTHERLDFLAGS="
726 "-Wl,-rpath="
727 out "/lib"))))))))
7639105b 728 %standard-phases))))
8b2fe785 729 (native-inputs
98b79d36
AE
730 `(("pkg-config" ,pkg-config)
731 ;; For the Perl bindings.
732 ("swig" ,swig)))
cf3fe3b0 733 (inputs
2b24faa2
AE
734 `(("apr" ,apr)
735 ("apr-util" ,apr-util)
46138f3e 736 ("serf" ,serf)
cf3fe3b0 737 ("perl" ,perl)
aa9e22ef 738 ("python" ,python-2) ; incompatible with Python 3 (print syntax)
cf3fe3b0
CR
739 ("sqlite" ,sqlite)
740 ("zlib" ,zlib)))
741 (home-page "http://subversion.apache.org/")
35b9e423 742 (synopsis "Revision control system")
cf3fe3b0 743 (description
749b90a5
LC
744 "Subversion exists to be universally recognized and adopted as a
745centralized version control system characterized by its
cf3fe3b0
CR
746reliability as a safe haven for valuable data; the simplicity of its model and
747usage; and its ability to support the needs of a wide variety of users and
748projects, from individuals to large-scale enterprise operations.")
749 (license asl2.0)))
750
1b1c335f
LC
751(define-public rcs
752 (package
753 (name "rcs")
73ebc66f 754 (version "5.9.4")
1b1c335f
LC
755 (source (origin
756 (method url-fetch)
757 (uri (string-append "mirror://gnu/rcs/rcs-"
758 version ".tar.xz"))
759 (sha256
760 (base32
73ebc66f 761 "1zsx7bb0rgvvvisiy4zlixf56ay8wbd9qqqcp1a1g0m1gl6mlg86"))))
1b1c335f 762 (build-system gnu-build-system)
740c24df 763 (native-inputs `(("ed" ,ed)))
1b1c335f
LC
764 (home-page "http://www.gnu.org/software/rcs/")
765 (synopsis "Per-file local revision control system")
766 (description
79c311b8
LC
767 "RCS is the original Revision Control System. It works on a
768file-by-file basis, in contrast to subsequent version control systems such as
769CVS, Subversion, and Git. This can make it suitable for system
770administration files, for example, which are often inherently local to one
771machine.")
1b1c335f 772 (license gpl3+)))
1972fed4
LC
773
774(define-public cvs
775 (package
776 (name "cvs")
777 (version "1.12.13")
778 (source (origin
779 (method url-fetch)
780 (uri (string-append
781 "http://ftp.gnu.org/non-gnu/cvs/source/feature/"
782 version "/cvs-" version ".tar.bz2"))
783 (sha256
784 (base32
785 "0pjir8cwn0087mxszzbsi1gyfc6373vif96cw4q3m1x6p49kd1bq"))))
786 (build-system gnu-build-system)
787 (arguments
788 ;; XXX: The test suite looks flawed, and the package is obsolete anyway.
7fbbd3e7
EF
789 '(#:tests? #f
790 #:configure-flags (list "--with-external-zlib")))
1972fed4
LC
791 (inputs `(("zlib" ,zlib)
792 ("nano" ,nano))) ; the default editor
793 (home-page "http://cvs.nongnu.org")
794 (synopsis "Historical centralized version control system")
795 (description
796 "CVS is a version control system, an important component of Source
797Configuration Management (SCM). Using it, you can record the history of
798sources files, and documents. It fills a similar role to the free software
799RCS, PRCS, and Aegis packages.")
800 (license gpl1+)))
a4572a17 801
59ef2030
ML
802(define-public cvs-fast-export
803 (package
804 (name "cvs-fast-export")
805 (version "1.33")
806 (source (origin
807 (method url-fetch)
808 (uri (string-append "http://www.catb.org/~esr/"
809 name "/" name "-" version ".tar.gz"))
810 (sha256
811 (base32
812 "1c3s4nacbwlaaccx1fr7hf72kxxrzy49y2rdz5hhqbk8r29vm8w1"))))
813 (build-system gnu-build-system)
814 (arguments
815 `(#:phases (modify-phases %standard-phases (delete 'configure))
816 #:make-flags
817 (list "CC=gcc" (string-append "prefix?=" (assoc-ref %outputs "out")))))
818 (inputs `(("git" ,git)))
819 (native-inputs `(("asciidoc" ,asciidoc)
820 ("docbook-xml" ,docbook-xml)
821 ("docbook-xsl" ,docbook-xsl)
822 ("xmllint" ,libxml2)
823 ("xsltproc" ,libxslt)
824 ;; These are needed for the tests.
825 ("cvs" ,cvs)
826 ("python" ,python-2)
827 ("rcs" ,rcs)))
828 (home-page "http://www.catb.org/esr/cvs-fast-export/")
829 (synopsis "Export an RCS or CVS history as a fast-import stream")
830 (description "This program analyzes a collection of RCS files in a CVS
831repository (or outside of one) and, when possible, emits an equivalent history
832in the form of a fast-import stream. Not all possible histories can be
833rendered this way; the program tries to emit useful warnings when it can't.
834
835The program can also produce a visualization of the resulting commit directed
836acyclic graph (DAG) in the input format of @uref{http://www.graphviz.org,
837Graphviz}. The package also includes @command{cvssync}, a tool for mirroring
838masters from remote CVS hosts.")
839 (license gpl2+)))
840
a4572a17
LC
841(define-public vc-dwim
842 (package
843 (name "vc-dwim")
844 (version "1.7")
845 (source (origin
846 (method url-fetch)
847 (uri (string-append "mirror://gnu/vc-dwim/vc-dwim-"
848 version ".tar.xz"))
849 (sha256
850 (base32
851 "094pjwshvazlgagc254in2xvrp93vhcj0kb5ms17qs7sch99x9z2"))))
852 (build-system gnu-build-system)
853 (inputs `(("perl" ,perl)
6aaf3899 854 ("inetutils" ,inetutils))) ; for `hostname', used in the tests
b8fc3622 855 (native-inputs `(("emacs" ,emacs-minimal))) ; for `ctags'
a4572a17
LC
856 (home-page "http://www.gnu.org/software/vc-dwim/")
857 (synopsis "Version-control-agnostic ChangeLog diff and commit tool")
858 (description
a22dc0c4
LC
859 "The vc-dwim package contains two tools, \"vc-dwim\" and \"vc-chlog\".
860vc-dwim is a tool that simplifies the task of maintaining a ChangeLog and
861using version control at the same time, for example by printing a reminder
862when a file change has been described in the ChangeLog but the file has not
79c311b8 863been added to the VC. vc-chlog scans changed files and generates
a22dc0c4 864standards-compliant ChangeLog entries based on the changes that it detects.")
a4572a17 865 (license gpl3+)))
83a39ed7
LC
866
867(define-public diffstat
868 (package
869 (name "diffstat")
870 (version "1.58")
871 (source (origin
872 (method url-fetch)
873 (uri (string-append
874 "ftp://invisible-island.net/diffstat/diffstat-"
875 version ".tgz"))
876 (sha256
877 (base32
878 "14rpf5c05ff30f6vn6pn6pzy0k4g4is5im656ahsxff3k58i7mgs"))))
879 (build-system gnu-build-system)
880 (home-page "http://invisible-island.net/diffstat/")
881 (synopsis "Make histograms from the output of 'diff'")
882 (description
35b9e423 883 "Diffstat reads the output of 'diff' and displays a histogram of the
83a39ed7
LC
884insertions, deletions, and modifications per-file. It is useful for reviewing
885large, complex patch files.")
886 (license (x11-style "file://COPYING"))))
25f76ef0 887
25f76ef0
JD
888(define-public cssc
889 (package
890 (name "cssc")
891 (version "1.3.0")
892 (source (origin
893 (method url-fetch)
894 (uri (string-append "mirror://gnu/" name "/CSSC-"
895 version ".tar.gz"))
896 (sha256
897 (base32
898 "0bkw6fjh20ppvn54smv05461lm1vcwvn02avx941c4acafmkl1cm"))
fc1adab1
AK
899 (patches (search-patches "cssc-gets-undeclared.patch"
900 "cssc-missing-include.patch"))))
25f76ef0
JD
901 (build-system gnu-build-system)
902 (arguments
903 `(#:phases (alist-cons-before
904 'check 'precheck
905 (lambda _
906 (begin
907 (substitute* "tests/common/test-common"
908 (("/bin/pwd") (which "pwd")))
909
910 (substitute* "tests/prt/all-512.sh"
911 (("/bin/sh") (which "sh")))
912
913 ;; XXX: This test has no hope of passing until there is a "nogroup"
914 ;; entry (or at least some group to which the guix builder does
915 ;; not belong) in the /etc/group file of the build environment.
916 ;; Currently we do not have such a group. Disable this test for now.
917 (substitute* "tests/Makefile"
918 (("test-delta ") ""))))
919 %standard-phases)))
920 ;; These are needed for the tests
921 (native-inputs `(("git" ,git)
922 ("cvs" ,cvs)))
923 (home-page "http://www.gnu.org/software/cssc/")
924 (synopsis "File-based version control like SCCS")
925 (description "GNU CSSC provides a replacement for the legacy Unix source
926code control system SCCS. This allows old code still under that system to be
927accessed and migrated on modern systems.")
928 (license gpl3+)))
0e534e74 929
e881752c 930;; This package can unfortunately work only in -TEST mode, since Aegis
0e534e74
JD
931;; requires that it is installed setuid root.
932(define-public aegis
933 (package
934 (name "aegis")
935 (version "4.24")
936 (source (origin
937 (method url-fetch)
de67e922
LF
938 (uri (string-append "mirror://sourceforge/aegis/aegis/" version
939 "/aegis-" version ".tar.gz"))
0e534e74
JD
940 (sha256
941 (base32
942 "18s86ssarfmc4l17gbpzybca29m5wa37cbaimdji8czlcry3mcjl"))
fc1adab1
AK
943 (patches (search-patches "aegis-perl-tempdir1.patch"
944 "aegis-perl-tempdir2.patch"
945 "aegis-test-fixup-1.patch"
946 "aegis-test-fixup-2.patch"
947 "aegis-constness-error.patch"))))
0e534e74
JD
948 (build-system gnu-build-system)
949 (inputs
950 `(("e2fsprogs" ,e2fsprogs)
951 ("curl" ,curl)
0253ab39 952 ("file" ,file)
0e534e74
JD
953 ("libxml2" ,libxml2)
954 ("zlib" ,zlib)
955 ("gettext" ,gnu-gettext)))
956 (native-inputs
957 `(("bison" ,bison)
958 ("groff" ,groff)
959 ("perl" ,perl)
960 ;; Various tests require the following:
e881752c 961 ("cvs" ,cvs)
0e534e74
JD
962 ("flex" ,flex)
963 ("cook" ,cook)
964 ("subversion" ,subversion)
965 ("rcs" ,rcs)
966 ("ed" ,ed)))
967 (arguments
e881752c 968 `(#:configure-flags (list "--with-no-aegis-configured"
0e534e74
JD
969 "--sharedstatedir=/var/com/aegis")
970 #:parallel-build? #f ; There are some nasty racy rules in the Makefile.
e881752c 971 #:phases
0e534e74
JD
972 (alist-cons-before
973 'configure 'pre-conf
974 (lambda _
975 (substitute* (append '("configure"
976 "etc/check-tar-gz.sh"
977 "etc/patches.sh"
978 "etc/test.sh"
979 "script/aexver.in"
980 "script/aebisect.in"
981 "script/aeintegratq.in"
982 "script/tkaegis.in"
983 "script/test_funcs.in"
984 "web/eg_oss_templ.sh"
985 "web/webiface.html"
986 "libaegis/getpw_cache.cc")
987 (find-files "test" "\\.sh"))
988 (("/bin/sh") (which "sh")))
989 (setenv "SH" (which "sh")))
990 (alist-replace
991 'check
992 (lambda _
993 (let ((home (string-append (getcwd) "/my-new-home")))
994 ;; Some tests need to write to $HOME.
995 (mkdir home)
996 (setenv "HOME" home)
997
998 ;; This test assumes that flex has been symlinked to "lex".
999 (substitute* "test/00/t0011a.sh"
1000 (("type lex") "type flex"))
1001
1002 ;; The author decided to call the check rule "sure".
1003 (zero? (system* "make" "sure"))))
1004 %standard-phases))))
1005 (home-page "http://aegis.sourceforge.net")
1006 (synopsis "Project change supervisor")
1007 (description "Aegis is a project change supervisor, and performs some of
35b9e423 1008the Software Configuration Management needed in a CASE environment. Aegis
0e534e74
JD
1009provides a framework within which a team of developers may work on many
1010changes to a program independently, and Aegis coordinates integrating these
1011changes back into the master source of the program, with as little disruption
35b9e423 1012as possible. Resolution of contention for source files, a major headache for
0e534e74
JD
1013any project with more than one developer, is one of Aegis's major functions.")
1014 (license gpl3+)))
2459141e 1015
62063d85
ML
1016(define-public reposurgeon
1017 (package
1018 (name "reposurgeon")
1019 (version "3.37")
1020 (source (origin
1021 (method url-fetch)
1022 (uri (string-append "http://www.catb.org/~esr/" name "/"
1023 name "-" version ".tar.xz"))
1024 (sha256
1025 (base32
1026 "14asjg4xy3mhh5z0r3k7c1wv9y803j2zfq32g5q5m95sf7yzygan"))))
1027 (build-system gnu-build-system)
1028 (arguments
1029 `(#:tests? #f ;no test suite distributed
1030 #:make-flags
1031 (list (string-append "target=" (assoc-ref %outputs "out")))
1032 #:phases
1033 (modify-phases %standard-phases
1034 (delete 'configure)
1035 (add-before 'build 'fix-docbook
1036 (lambda* (#:key inputs #:allow-other-keys)
1037 (substitute* (find-files "." "\\.xml$")
1038 (("docbook/docbookx.dtd")
1039 (string-append (assoc-ref inputs "docbook-xml")
1040 "/xml/dtd/docbook/docbookx.dtd")))
1041 #t))
1042 (add-after 'install 'install-emacs-data
1043 (lambda* (#:key outputs #:allow-other-keys)
1044 (install-file "reposurgeon-mode.el"
1045 (string-append (assoc-ref outputs "out")
1046 "/share/emacs/site-lisp")))))))
1047 (inputs
1048 `(("python" ,python-wrapper)))
1049 (native-inputs
1050 `(("asciidoc" ,asciidoc)
1051 ("docbook-xml" ,docbook-xml-4.1.2)
1052 ("docbook-xsl" ,docbook-xsl)
1053 ("libxml2" ,libxml2)
1054 ("xmlto" ,xmlto)))
1055 (home-page "http://www.catb.org/~esr/reposurgeon/")
1056 (synopsis "Edit version-control repository history")
1057 (description "Reposurgeon enables risky operations that version-control
1058systems don't want to let you do, such as editing past comments and metadata
1059and removing commits. It works with any version control system that can
1060export and import Git fast-import streams, including Git, Mercurial, Fossil,
1061Bazaar, CVS, RCS, and Src. It can also read Subversion dump files directly
1062and can thus be used to script production of very high-quality conversions
1063from Subversion to any supported Distributed Version Control System (DVCS).")
1064 ;; Most files are distributed under bsd-2, except 'repocutter' which is
1065 ;; under bsd-3.
1066 (license (list bsd-2 bsd-3))))
1067
2459141e
1068(define-public tig
1069 (package
1070 (name "tig")
92d9a36e 1071 (version "2.1.1")
2459141e
1072 (source (origin
1073 (method url-fetch)
1074 (uri (string-append
1075 "http://jonas.nitro.dk/tig/releases/tig-"
1076 version ".tar.gz"))
1077 (sha256
1078 (base32
92d9a36e 1079 "0bw5wivswwh7vx897q8xc2cqgkqhdzk8gh6fnav2kf34sngigiah"))))
2459141e
1080 (build-system gnu-build-system)
1081 (inputs
1082 `(("ncurses" ,ncurses)))
1083 (arguments
92d9a36e
EF
1084 `(#:tests? #f)) ; tests require access to /dev/tty
1085 ;;`(#:test-target "test"))
2459141e
1086 (home-page "http://jonas.nitro.dk/tig/")
1087 (synopsis "Ncurses-based text user interface for Git")
1088 (description
1089 "Tig is an ncurses text user interface for Git, primarily intended as
1090a history browser. It can also stage hunks for commit, or colorize the
1091output of the 'git' command.")
1092 (license gpl2+)))
df7393b9
LC
1093
1094(define-public findnewest
1095 (package
1096 (name "findnewest")
9c7e7ead 1097 (version "0.3")
df7393b9
LC
1098 (source (origin
1099 (method url-fetch)
1100 (uri (string-append
1101 "https://github.com/0-wiz-0/findnewest/archive/findnewest-"
1102 version ".tar.gz"))
1103 (sha256
1104 (base32
9c7e7ead 1105 "1ydis4y0amkgfr4y60sn076f1l41ya2kn89kfd9fqf44f9ccgb5r"))))
df7393b9
LC
1106 (build-system gnu-build-system)
1107 (arguments
1108 '(#:phases (modify-phases %standard-phases
1109 (add-before 'configure 'bootstrap
1110 (lambda _
1111 (zero? (system* "autoreconf" "-vfi")))))))
1112 (native-inputs `(("autoconf" ,autoconf)
1113 ("automake" ,automake)))
1114 (home-page "https://github.com/0-wiz-0/findnewest/releases")
1115 (synopsis "Print the modification time of the latest file")
1116 (description
1117 "Recursively find the newest file in a file tree and print its
1118modification time.")
1119 (license bsd-2)))
e92b8599
KM
1120
1121(define-public myrepos
1122 (package
1123 (name "myrepos")
17206f72 1124 (version "1.20160123")
e92b8599
KM
1125 (source
1126 (origin
1127 (method url-fetch)
1128 (uri (string-append
1129 "https://github.com/joeyh/myrepos/archive/"
1130 version ".tar.gz"))
1131 (file-name (string-append name "-" version ".tar.gz"))
1132 (sha256
17206f72 1133 (base32 "1723cg5haplz2w9dwdzp6ds1ip33cx3awmj4wnb0h4yq171v5lqk"))))
e92b8599
KM
1134 (build-system gnu-build-system)
1135 (inputs
1136 `(("perl" ,perl)))
1137 (arguments
1138 `(#:test-target "test"
1139 #:phases (alist-delete 'configure %standard-phases)
1140 #:make-flags (list (string-append "PREFIX=" %output))))
1141 (home-page "http://myrepos.branchable.com/")
1142 (synopsis "Multiple repository management tool")
1143 (description
1144 "Myrepos provides the @code{mr} command, which maps an operation (e.g.,
1145fetching updates) over a collection of version control repositories. It
1146supports a large number of version control systems: Git, Subversion,
1147Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.")
1148 (license gpl2+)))
e8d2168c
EF
1149
1150(define-public git-annex-remote-hubic
1151 (package
1152 (name "git-annex-remote-hubic")
1153 (version "0.3.1")
1154 (source (origin
1155 (method url-fetch)
1156 (uri (string-append
1157 "https://github.com/Schnouki/" name "/archive/v"
1158 version ".tar.gz"))
1159 (file-name (string-append name "-" version ".tar.gz"))
1160 (sha256
1161 (base32
1162 "196g3jkaybjx11nbr51n0cjps3wjzb145ab76y717diqvvxp5v4r"))))
1163 (build-system python-build-system)
f71d1a08 1164 (arguments `(#:python ,python-2))
e8d2168c 1165 (native-inputs
f71d1a08 1166 `(("python2-setuptools" ,python2-setuptools)
e8d2168c 1167 ;; for the tests
f71d1a08 1168 ("python2-six" ,python2-six)))
e8d2168c 1169 (propagated-inputs
f71d1a08
EF
1170 `(("python2-dateutil" ,python2-dateutil-2)
1171 ("python2-futures" ,python2-futures)
1172 ("python2-rauth" ,python2-rauth)
1173 ("python2-swiftclient" ,python2-swiftclient)))
e8d2168c
EF
1174 (home-page "https://github.com/Schnouki/git-annex-remote-hubic/")
1175 (synopsis "Use hubic as a git-annex remote")
1176 (description
1177 "This package allows you to use your hubic account as a \"special
1178repository\" with git-annex.")
1179 (license gpl3+)))
f36a1eba
EB
1180
1181(define-public fossil
1182 (package
1183 (name "fossil")
1184 (version "1.34")
1185 (source
1186 (origin
1187 (method url-fetch)
1188 ;; Upstream source affected by
1189 ;; http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20962
1190 (uri (string-append
1191 "https://web.archive.org/web/20160402202958/"
1192 "https://www.fossil-scm.org/download/fossil-src-"
1193 version ".tar.gz"))
1194 (sha256
1195 (base32
1196 "17x4vgjcfihwmq195qg32irp50panvjqfpvhqydfvv4ghwzbi9jk"))
1197 (modules '((guix build utils)))
1198 (snippet
1199 '(begin
1200 ;; Commit 0a2ebe57 on 2015-08-03 18:35:53 changed output formatting
1201 ;; for some commands, but affected tests were not updated. Use
1202 ;; substitute here, which is more concise than patching.
1203 (substitute* "test/clean.test"
1204 (("NEW ") "NEW "))
1205 (substitute* '("test/revert.test" "test/mv-rm.test")
1206 (("REVERTED:") "REVERT ")
1207 (("DELETE:") "DELETE ")
1208 (("UNMANAGE:") "UNMANAGE "))
1209 ;; Fix use of __DATE__ and __TIME__
1210 (substitute* "src/main.c"
1211 (("Compiled on %s %s") "Compiled")
1212 (("__DATE__, __TIME__, ") ""))
1213 #t))
1214 (patches (list (search-patch "fossil-test-fixes.patch")))))
1215 (build-system gnu-build-system)
1216 (native-inputs
1217 `(("tcl" ,tcl) ;for configuration only
1218 ("which" ,which) ;for tests only
1219 ("ed" ,ed))) ;ditto
1220 (inputs
1221 `(("openssl" ,openssl)
1222 ("zlib" ,zlib)
1223 ("sqlite" ,sqlite)))
1224 (arguments
1225 `(#:configure-flags (list "--with-openssl=auto"
1226 "--disable-internal-sqlite")
1227 #:test-target "test"
1228 #:phases (modify-phases %standard-phases
1229 (replace 'configure
1230 (lambda* (#:key outputs (configure-flags '())
1231 #:allow-other-keys)
1232 ;; The 'configure' script is not an autoconf script and
1233 ;; chokes on unrecognized options.
1234 (zero? (apply system*
1235 "./configure"
1236 (string-append "--prefix="
1237 (assoc-ref outputs "out"))
1238 configure-flags))))
1239 (add-before 'check 'test-setup
1240 (lambda _
1241 (setenv "USER" "guix")
1242 (setenv "TZ" "UTC")
1243 ;; Fixing the th1 test would require many backports, so
1244 ;; just disable for now.
1245 (delete-file "test/th1.test")
1246 #t)))))
1247 (home-page "https://fossil-scm.org")
1248 (synopsis "Software configuration management system")
1249 (description
1250 "Fossil is a distributed source control management system which supports
1251access and administration over HTTP CGI or via a built-in HTTP server. It has
1252a built-in wiki, built-in file browsing, built-in tickets system, etc.")
1253 (license (list public-domain ;src/miniz.c, src/shell.c
1254 bsd-2))))