aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/version-control.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/version-control.scm')
-rw-r--r--gnu/packages/version-control.scm184
1 files changed, 163 insertions, 21 deletions
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 0b52f0c2e5..4f9ed54d56 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,13 +23,18 @@
(define-module (gnu packages version-control)
#:use-module ((guix licenses)
- #:select (asl2.0 gpl1+ gpl2 gpl2+ gpl3+ x11-style))
+ #:select (asl2.0 bsd-2
+ gpl1+ gpl2 gpl2+ gpl3+ lgpl2.1
+ x11-style))
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
+ #:use-module (guix build-system trivial)
#:use-module (guix build utils)
#:use-module (gnu packages apr)
+ #:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages cook)
#:use-module (gnu packages curl)
@@ -204,6 +210,130 @@ everything from small to very large projects with speed and efficiency.")
(license gpl2)
(home-page "http://git-scm.com/")))
+(define-public shflags
+ (package
+ (name "shflags")
+ (version "1.0.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://shflags.googlecode.com/files/"
+ "shflags-" version ".tgz"))
+ (sha256
+ (base32
+ "08laxhf1hifh3w4j0hri5ppcklaqz0mnkmbaz8j0wxih29vi8slm"))))
+ (build-system trivial-build-system)
+ (native-inputs `(("tar" ,tar)
+ ("gzip" ,gzip)))
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder (begin
+ (use-modules (guix build utils))
+ (let* ((source (assoc-ref %build-inputs "source"))
+ (tar (assoc-ref %build-inputs "tar"))
+ (gzip (assoc-ref %build-inputs "gzip"))
+ (output (assoc-ref %outputs "out"))
+ (srcdir (string-append output "/src")))
+ (begin
+ (setenv "PATH" (string-append gzip "/bin"))
+ (system* (string-append tar "/bin/tar") "xzf"
+ source)
+ (chdir ,(string-append name "-" version))
+ (mkdir-p srcdir)
+ (copy-file "src/shflags"
+ (string-append srcdir "/shflags"))
+ #t)))))
+ (home-page "https://code.google.com/p/shflags/")
+ (synopsis "Command-line flags library for shell scripts")
+ (description
+ "Shell Flags (shFlags) is a library written to greatly simplify the
+handling of command-line flags in Bourne based Unix shell scripts (bash, dash,
+ksh, sh, zsh). Most shell scripts use getopt for flags processing, but the
+different versions of getopt on various OSes make writing portable shell
+scripts difficult. shFlags instead provides an API that doesn't change across
+shell and OS versions so the script writer can be confident that the script
+will work.")
+ (license lgpl2.1)))
+
+(define-public git-flow
+ (package
+ (name "git-flow")
+ ;; This version has not be officially released yet, so we build it
+ ;; directly from the git repository.
+ (version "0.4.2-pre")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/nvie/gitflow/")
+ (commit "15aab26")))
+ (sha256
+ (base32
+ "01fs97q76fdfnvmrh2cyjhywcs3pykf1dg58sy0frflnsdzs6prx"))))
+ (build-system gnu-build-system)
+ (inputs `(("shflags" ,shflags)))
+ (arguments
+ '(#:tests? #f ; no tests
+ #:make-flags (list (string-append "prefix="
+ (assoc-ref %outputs "out")))
+ #:phases (alist-cons-after
+ 'unpack 'reset-shFlags-link
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; The link points to a file in the shFlags submodule.
+ ;; Redirect it to point to our system shFlags.
+ (let ((shflags (assoc-ref inputs "shflags")))
+ (begin
+ (delete-file "gitflow-shFlags")
+ (symlink (string-append shflags "/src/shflags")
+ "gitflow-shFlags"))))
+ (alist-delete
+ 'configure
+ (alist-delete 'build %standard-phases)))))
+ (home-page "http://nvie.com/posts/a-successful-git-branching-model/")
+ (synopsis "Git extensions for Vincent Driessen's branching model")
+ (description
+ "Vincent Driessen's branching model is a git branching and release
+management strategy that helps developers keep track of features, hotfixes,
+and releases in bigger software projects. The git-flow library of git
+subcommands helps automate some parts of the flow to make working with it a
+lot easier.")
+ (license bsd-2)))
+
+(define-public git-test-sequence
+ (let ((commit "48e5a2f"))
+ (package
+ (name "git-test-sequence")
+ (version (string-append "20140312." commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ ;; There are many other scripts in this directory; we
+ ;; are interested in just one for this package.
+ (url "https://github.com/dustin/bindir")
+ (commit commit)))
+ (sha256
+ (base32
+ "1dcq0y16yznbv4k9h8gg90kv1gkn8r8dbvl4m2rpfd7q5nqhn617"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder (begin
+ (use-modules (guix build utils))
+ (let* ((source (assoc-ref %build-inputs "source"))
+ (output (assoc-ref %outputs "out"))
+ (bindir (string-append output "/bin"))
+ (script "git-test-sequence"))
+ (begin
+ (mkdir-p bindir)
+ (copy-file (string-append source "/" script)
+ (string-append bindir "/" script))
+ #t)))))
+ (home-page "http://dustin.sallings.org/2010/03/28/git-test-sequence.html")
+ (synopsis "Run a command over a sequence of commits")
+ (description
+ "git-test-sequence is similar to an automated git bisect except it’s
+linear. It will test every change between two points in the DAG. It will
+also walk each side of a merge and test those changes individually.")
+ (license (x11-style "file://LICENSE")))))
+
(define-public mercurial
(package
(name "mercurial")
@@ -297,33 +427,45 @@ property manipulation.")
(version "1.7.18")
(source (origin
(method url-fetch)
- (uri (string-append "http://archive.apache.org/dist/subversion/subversion-"
- version ".tar.bz2"))
+ (uri (string-append "http://archive.apache.org/dist/subversion/"
+ "subversion-" version ".tar.bz2"))
(sha256
(base32
"06nrqnn3qq1hhskkcdbm0ilk2xv6ay2gyf2c7qvxp6xncb782wzn"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-after
- 'install 'instal-perl-bindings
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Follow the instructions from
- ;; 'subversion/bindings/swig/INSTALL'.
- (let ((out (assoc-ref outputs "out")))
- (and (zero? (system* "make" "swig-pl-lib"))
- ;; FIXME: Test failures.
- ;; (zero? (system* "make" "check-swig-pl"))
- (zero? (system* "make" "install-swig-pl-lib"))
+ 'configure 'patch-libtool-wrapper-ls
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; This substitution allows tests svnauthz_tests and
+ ;; svnlook_tests to pass. These tests execute svnauthz and
+ ;; svnlook through their libtool wrapper scripts from svn
+ ;; hooks, whose empty environments cause "ls: command not
+ ;; found" errors. It would be nice if this fix ultimately
+ ;; made its way into libtool.
+ (let ((coreutils (assoc-ref inputs "coreutils")))
+ (substitute* "libtool"
+ (("\\\\`ls") (string-append "\\`" coreutils "/bin/ls")))))
+ (alist-cons-after
+ 'install 'instal-perl-bindings
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Follow the instructions from
+ ;; 'subversion/bindings/swig/INSTALL'.
+ (let ((out (assoc-ref outputs "out")))
+ (and (zero? (system* "make" "swig-pl-lib"))
+ ;; FIXME: Test failures.
+ ;; (zero? (system* "make" "check-swig-pl"))
+ (zero? (system* "make" "install-swig-pl-lib"))
- ;; Set the right installation prefix.
- (with-directory-excursion
- "subversion/bindings/swig/perl/native"
- (and (zero?
- (system* "perl" "Makefile.PL"
- (string-append "PREFIX=" out)))
- (zero?
- (system* "make" "install")))))))
- %standard-phases)))
+ ;; Set the right installation prefix.
+ (with-directory-excursion
+ "subversion/bindings/swig/perl/native"
+ (and (zero?
+ (system* "perl" "Makefile.PL"
+ (string-append "PREFIX=" out)))
+ (zero?
+ (system* "make" "install")))))))
+ %standard-phases))))
(native-inputs
`(("pkg-config" ,pkg-config)
;; For the Perl bindings.