Subject: [PATCH] gnu: Add git-subtree.
From: Ricardo Wurmus <[email-masked]>
To: <[email-masked]>
Cc: Ricardo Wurmus <[email-masked]>
Date: Thu, 4 Jan 2018 13:26:35 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/version-control.scm (git-subtree): New variable.
---
 gnu/packages/version-control.scm | 28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index cbf5ce7d8..d4c8acb51 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2014, 2016 Eric Bavier <[email-masked]>
 ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <[email-masked]>
 ;;; Copyright © 2015 Kyle Meyer <[email-masked]>
-;;; Copyright © 2015, 2017 Ricardo Wurmus <[email-masked]>
+;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <[email-masked]>
 ;;; Copyright © 2016, 2017 Leo Famulari <[email-masked]>
 ;;; Copyright © 2016, 2017 ng0 <[email-masked]>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <[email-masked]>
@@ -50,6 +50,7 @@
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages cook)
@@ -375,6 +376,31 @@ everything from small to very large projects with speed and efficiency.")
    (license license:gpl2)
    (home-page "https://git-scm.com/")))
 
+(define-public git-subtree
+  (package (inherit git)
+    (name "git-subtree")
+    (outputs '("out"))
+    (arguments
+     `(#:make-flags
+       (list (string-append "prefix=" (assoc-ref %outputs "out"))
+             (string-append "SHELL_PATH="
+                            (assoc-ref %build-inputs "bash")
+                            "/bin/sh"))
+       ;; Don't run tests because this assumes that we've built git in a
+       ;; parent directory.
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _ (chdir "contrib/subtree"))))))
+    (native-inputs
+     `(("bash" ,bash)))
+    (inputs '())
+    (synopsis "Merge git subtrees and split repository into subtrees")
+    (description "This package provides the @code{subtree} subcommand for git.
+Subtrees allow subprojects to be included within a subdirectory of the main
+project, optionally including the subproject's entire history.")))
+
 (define-public libgit2
   (package
     (name "libgit2")
-- 
2.15.1