gnu: Add git-tools.
* gnu/packages/version-control.scm (git-tools): New variable. Change-Id: I0ac65c24f787714fe0ef234fce639c6ec561600d Signed-off-by: 宋文武 <iyzsong@member.fsf.org>
This commit is contained in:
		
							parent
							
								
									5647942d63
								
							
						
					
					
						commit
						dae712644d
					
				
					 1 changed files with 47 additions and 0 deletions
				
			
		| 
						 | 
					@ -52,6 +52,7 @@
 | 
				
			||||||
;;; Copyright © 2023 Steve George <steve@futurile.net>
 | 
					;;; Copyright © 2023 Steve George <steve@futurile.net>
 | 
				
			||||||
;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
 | 
					;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
 | 
				
			||||||
;;; Copyright © 2024 Hilton Chain <hako@ultrarare.space>
 | 
					;;; Copyright © 2024 Hilton Chain <hako@ultrarare.space>
 | 
				
			||||||
 | 
					;;; Copyright © 2024 Suhail Singh <suhail@bayesians.ca>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -830,6 +831,52 @@ on @command{git}, and use any regular Git hosting service.")
 | 
				
			||||||
to GitHub contributions calendar.")
 | 
					to GitHub contributions calendar.")
 | 
				
			||||||
    (license license:expat)))
 | 
					    (license license:expat)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public git-tools
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "git-tools")
 | 
				
			||||||
 | 
					    (version "2022.12")
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					     (origin
 | 
				
			||||||
 | 
					       (method git-fetch)
 | 
				
			||||||
 | 
					       (uri (git-reference
 | 
				
			||||||
 | 
					             (url "https://github.com/MestreLion/git-tools")
 | 
				
			||||||
 | 
					             (commit (string-append "v" version))))
 | 
				
			||||||
 | 
					       (file-name (git-file-name name version))
 | 
				
			||||||
 | 
					       (sha256
 | 
				
			||||||
 | 
					        (base32 "0s8x74ggcr6nqzplr0jfzp3cavq0nmdm35hqywzs2bbq75i1mijd"))))
 | 
				
			||||||
 | 
					    (build-system copy-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:install-plan '(("git-branches-rename" "bin/git-branches-rename")
 | 
				
			||||||
 | 
					                        ("git-clone-subset" "bin/git-clone-subset")
 | 
				
			||||||
 | 
					                        ("git-find-uncommitted-repos"
 | 
				
			||||||
 | 
					                         "bin/git-find-uncommitted-repos")
 | 
				
			||||||
 | 
					                        ("git-rebase-theirs" "bin/git-rebase-theirs")
 | 
				
			||||||
 | 
					                        ("git-restore-mtime" "bin/git-restore-mtime")
 | 
				
			||||||
 | 
					                        ("git-strip-merge" "bin/git-strip-merge")
 | 
				
			||||||
 | 
					                        ("./man1/" "share/man/man1"
 | 
				
			||||||
 | 
					                         #:include-regexp (".*\\.1$")))))
 | 
				
			||||||
 | 
					    (inputs (list bash-minimal git-minimal python-minimal))
 | 
				
			||||||
 | 
					    (home-page "https://github.com/MestreLion/git-tools")
 | 
				
			||||||
 | 
					    (synopsis "Assorted git-related scripts and tools")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "@code{git-tools} is a collection of bash and python scripts.
 | 
				
			||||||
 | 
					Specifically, it includes the following tools:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@itemize
 | 
				
			||||||
 | 
					@item @code{git-branches-rename}: Batch rename branches with a matching prefix
 | 
				
			||||||
 | 
					to another prefix
 | 
				
			||||||
 | 
					@item @code{git-clone-subset}: Clone a subset of a git repository
 | 
				
			||||||
 | 
					@item @code{git-find-uncommitted-repos}: Recursively list repositories in the
 | 
				
			||||||
 | 
					given directory(ies) that have uncommitted changes
 | 
				
			||||||
 | 
					@item @code{git-rebase-theirs}: Resolve rebase conflicts and failed
 | 
				
			||||||
 | 
					cherry-picks by favoring \"theirs\" version
 | 
				
			||||||
 | 
					@item @code{git-restore-mtime}: Restore modification time of files based on
 | 
				
			||||||
 | 
					the date of the most recent commit that modified them
 | 
				
			||||||
 | 
					@item @code{git-strip-merge}: A git-merge wrapper that deletes files on a
 | 
				
			||||||
 | 
					\"foreign\" branch before merging
 | 
				
			||||||
 | 
					@end itemize")
 | 
				
			||||||
 | 
					    (license license:gpl3+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public xdiff
 | 
					(define-public xdiff
 | 
				
			||||||
  (let ((revision "0")
 | 
					  (let ((revision "0")
 | 
				
			||||||
        (commit "a137bc7ee6c76618ed1737c257548eaa10ac0089"))
 | 
					        (commit "a137bc7ee6c76618ed1737c257548eaa10ac0089"))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue