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