diff options
Diffstat (limited to 'gnu/packages/version-control.scm')
-rw-r--r-- | gnu/packages/version-control.scm | 237 |
1 files changed, 194 insertions, 43 deletions
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 29de995665..5eaaf2681e 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -31,6 +31,8 @@ ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org> +;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> +;;; Copyright © 2021 Greg Hogan <code@greghogan.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -55,6 +57,7 @@ #:use-module (guix git-download) #:use-module (guix hg-download) #:use-module (guix build-system cmake) + #:use-module (guix build-system copy) #:use-module (guix build-system gnu) #:use-module (guix build-system go) #:use-module (guix build-system perl) @@ -161,14 +164,14 @@ as well as the classic centralized workflow.") (define-public git (package (name "git") - (version "2.29.2") + (version "2.30.0") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/software/scm/git/git-" version ".tar.xz")) (sha256 (base32 - "1h87yv117ypnc0yi86941089c14n91gixk8b6shj2y35prp47z7j")))) + "06ad6dylgla34k9am7d5z8y3rryc8ln3ibq5z0d74rcm20hm0wsm")))) (build-system gnu-build-system) (native-inputs `(("native-perl" ,perl) @@ -185,7 +188,7 @@ as well as the classic centralized workflow.") version ".tar.xz")) (sha256 (base32 - "14npkg9rnp2yclsx5p622qpm6byzfy5k5wb209vkmm5r60m4mm72")))) + "0xngjg60rwzrb9x32d1qbdd8szkzwcyha5qni7ilkldxsl2q8avv")))) ;; For subtree documentation. ("asciidoc" ,asciidoc-py3) ("docbook-xsl" ,docbook-xsl) @@ -666,7 +669,7 @@ to GitHub contributions calendar.") (define-public libgit2 (package (name "libgit2") - (version "1.0.1") + (version "1.1.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/libgit2/libgit2/" @@ -674,7 +677,7 @@ to GitHub contributions calendar.") "/libgit2-" version ".tar.gz")) (sha256 (base32 - "0nlg35pxhh548nn7aa3y1m81mf81nkbzz86i2psps4f474n497v8")) + "1fjdglkh04qv3b4alg621pxa689i0wlf8m7nf2755zawjr2zhwxd")) (patches (search-patches "libgit2-mtime-0.patch")) (snippet '(begin (delete-file-recursively "deps") #t)) @@ -1212,7 +1215,7 @@ lot easier.") (define-public stgit (package (name "stgit") - (version "0.21") + (version "0.23") (source (origin (method git-fetch) @@ -1221,7 +1224,7 @@ lot easier.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "00pmz93znl418lsjwy4mr0chp8i2w27h1xjysa05f62smsv91yyc")))) + (base32 "0bgxgsd6nj6gkk74c56vrjsyr7j19jrj6cx2ma6f7b20wriznhd5")))) (build-system python-build-system) (native-inputs `(("perl" ,perl))) @@ -1251,7 +1254,7 @@ lot easier.") "PERL_PATH=perl" (string-append "SHELL_PATH=" (which "bash")) "test")))))) - (home-page "http://procode.org/stgit/") + (home-page "https://stacked-git.github.io/") (synopsis "Stacked Git") (description "StGit is a command-line application that provides functionality similar @@ -2278,7 +2281,7 @@ Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.") (define-public grokmirror (package (name "grokmirror") - (version "2.0.0") + (version "2.0.5") (source (origin (method git-fetch) @@ -2288,7 +2291,7 @@ Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.") (commit (string-append "v" version)))) (file-name (string-append name "-" version "-checkout")) (sha256 - (base32 "1cs43vf87x8x5k5ncgiwiclc92a1dvxpg2z6lh6psaiip808gylp")))) + (base32 "006ar3kc6fw1sq300ar9np4a63qzzsdama6cv30wh65v5mqw1mnv")))) (build-system python-build-system) (arguments `(#:tests? #f ; no test suite @@ -2303,7 +2306,8 @@ Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.") (find-files "." "\\.1$"))) #t))))) (propagated-inputs - `(("python-requests" ,python-requests))) + `(("python-packaging" ,python-packaging) + ("python-requests" ,python-requests))) (home-page "https://git.kernel.org/pub/scm/utils/grokmirror/grokmirror.git") (synopsis "Framework to smartly mirror git repositories") @@ -2315,31 +2319,19 @@ based on a manifest file published by servers.") (define-public b4 (package (name "b4") - (version "0.5.2") + (version "0.6.2") (source (origin - (method git-fetch) - (uri (git-reference - (url "https://git.kernel.org/pub/scm/utils/b4/b4.git") - (commit (string-append "v" version)))) - (file-name (string-append name "-" version "-checkout")) + (method url-fetch) + (uri (pypi-uri "b4" version)) (sha256 - (base32 "1w11fiyspyncz2m7njrjfylgzch4azi7560ngd8i733wvjjhg3mj")))) + (base32 "1j904dy9cwxl85k2ngc498q5cdnqwsmw3jibjr1m55w8aqdck68z")))) (build-system python-build-system) - (arguments - `(#:tests? #f ; No tests. - #:phases - (modify-phases %standard-phases - (add-after 'install 'install-manpages - (lambda* (#:key outputs #:allow-other-keys) - (let ((man (string-append (assoc-ref outputs "out") - "/man/man5/"))) - (mkdir-p man) - (for-each (lambda (file) (install-file file man)) - (find-files "man" "\\.[1-8]$"))) - #t))))) + (arguments '(#:tests? #f)) ; No tests. (inputs - `(("python-requests" ,python-requests))) + `(("python-dkimpy" ,python-dkimpy) + ("python-dnspython" ,python-dnspython) + ("python-requests" ,python-requests))) (home-page "https://git.kernel.org/pub/scm/utils/b4/b4.git") (synopsis "Tool for working with patches in public-inbox archives") (description @@ -2732,20 +2724,20 @@ file contents on a remote server.") (file-name (git-file-name name version)) (sha256 (base32 "11n46bngvca5wbdbfcxzjhjbfdbad7sgf7h9gf956cb1q8swsdm0")))) - (build-system trivial-build-system) - (propagated-inputs + (build-system copy-build-system) + (inputs `(("xdg-utils" ,xdg-utils))) (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((source (assoc-ref %build-inputs "source")) - (out (assoc-ref %outputs "out"))) - (mkdir-p (string-append out "/bin")) - (copy-file (string-append source "/git-open") - (string-append out "/bin/git-open")) - #t)))) + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'wrap-program + (lambda* (#:key outputs inputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (xdg-utils (assoc-ref inputs "xdg-utils"))) + (wrap-program (string-append out "/bin/git-open") + `("PATH" ":" prefix (,(string-append xdg-utils "/bin")))))))) + #:install-plan + '(("git-open" "bin/git-open")))) (home-page "https://github.com/paulirish/git-open") (synopsis "Open a Git repository's homepage from the command-line") (description @@ -2810,6 +2802,53 @@ for historians.") (home-page "https://www.gnu.org/software/gnu-arch/") (license license:gpl2))) ;version 2 only +(define-public diff-so-fancy + (package + (name "diff-so-fancy") + (version "1.3.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/so-fancy/diff-so-fancy") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0aavxahzha2mms4vdwysk79pa6wzswpfwgsq2hwaxnaf66maahfl")))) + (inputs + `(("perl" ,perl) + ("ncurses" ,ncurses))) + (build-system copy-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-lib-path + (lambda* (#:key outputs #:allow-other-keys) + (let ((lib (string-append (assoc-ref outputs "out") "/lib"))) + (substitute* "diff-so-fancy" + (("use lib.*$") + (string-append "use lib '" lib "';\n"))) + #t))) + (add-after 'install 'symlink-executable + (lambda* (#:key outputs inputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (ncurses (assoc-ref inputs "ncurses")) + (perl (assoc-ref inputs "perl"))) + (wrap-program (string-append out "/bin/diff-so-fancy") + `("PATH" ":" prefix (,(string-append ncurses "/bin") + ,(string-append perl "/bin")))) + #t)))) + #:install-plan + '(("lib" "lib") + ("diff-so-fancy" "bin/")))) + (home-page "https://github.com/so-fancy/diff-so-fancy") + (synopsis "Makes diffs more human friendly and readable") + (description + "@code{diff-so-fancy} strives to make your diffs human readable instead +of machine readable. This helps improve code quality and helps you spot +defects faster.") + (license license:expat))) + (define-public go-github-go-git (package (name "go-github-go-git") @@ -2863,3 +2902,115 @@ for historians.") (synopsis "Git implementation library") (description "This package provides a Git implementation library.") (license license:asl2.0))) + +(define-public gita + (let ((commit "62eb3d69874f75bdd6f95743e57315bc59890f70") + (revision "1")) + (package + (name "gita") + (version (git-version "0.10.10" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nosarthur/gita") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jn5wnmjbdrrgz9fif7s81pv3g92q0wjcqy5qxl77kjy7iv0kpfp")))) + (build-system python-build-system) + (native-inputs + `(("git" ,git) ;for tests + ("python-pytest" ,python-pytest))) + (propagated-inputs + `(("python-pyyaml" ,python-pyyaml))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "tests/test_main.py" + (("'gita\\\\n'") "'source\\n'") + (("'gita'") "'source'")) + (invoke (string-append (assoc-ref inputs "git") "/bin/git") + "init") + (add-installed-pythonpath inputs outputs) + (invoke (string-append (assoc-ref inputs "python-pytest") + "/bin/pytest") + "-vv" "tests"))) + (add-after 'install 'install-shell-completions + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash-completion (string-append out "/etc/bash_completion.d")) + (zsh-completion (string-append out "/etc/zsh/site-functions"))) + (mkdir-p bash-completion) + (copy-file ".gita-completion.bash" + (string-append bash-completion "/gita")) + (mkdir-p zsh-completion) + (copy-file ".gita-completion.zsh" + (string-append zsh-completion "/_gita")))))))) + (home-page "https://github.com/nosarthur/gita") + (synopsis "Command-line tool to manage multiple Git repos") + (description "This package provides a command-line tool to manage +multiple Git repos. + +This tool does two things: +@itemize +@item display the status of multiple Git repos such as branch, modification, +commit message side by side +@item (batch) delegate Git commands/aliases from any working directory +@end itemize + +If several repos are related, it helps to see their status together.") + (license license:expat)))) + +(define-public ghq + (package + (name "ghq") + (version "1.1.5") + (home-page "https://github.com/x-motemen/ghq") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "098fik155viylq07az7crzbgswcvhpx0hr68xpvyx0rpri792jbq")))) + (build-system go-build-system) + (arguments + '(#:install-source? #f + #:import-path "github.com/x-motemen/ghq" + #:phases + (modify-phases %standard-phases + (add-after 'install 'install-completions + (lambda* (#:key outputs import-path #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash-completion (string-append out "/etc/bash_completion.d")) + (zsh-completion (string-append out "/share/zsh/site-functions"))) + (with-directory-excursion (string-append "src/" import-path) + (mkdir-p bash-completion) + (copy-file "misc/bash/_ghq" + (string-append bash-completion "/ghq")) + (mkdir-p zsh-completion) + (copy-file "misc/zsh/_ghq" + (string-append zsh-completion "/_ghq")))) + #t))))) + (native-inputs + `(("git" ,git-minimal))) + (inputs + `(("github.com/songmu/gitconfig" ,go-github-com-songmu-gitconfig) + ("github.com/mattn/go-isatty" ,go-github-com-mattn-go-isatty) + ("github.com/motemen/go-colorine" ,go-github-com-motemen-go-colorine) + ("github.com/saracen/walker" ,go-github-com-saracen-walker) + ("github.com/urfave/cli/v2" ,go-github-com-urfave-cli-v2) + ("golang.org/x/net/html" ,go-golang-org-x-net-html) + ("golang.org/x/sync/errgroup" ,go-golang.org-x-sync-errgroup))) + (synopsis "Manage remote repository clones") + (description + "@code{ghq} provides a way to organize remote repository clones, like +@code{go get} does. When you clone a remote repository by @code{ghq get}, ghq +makes a directory under a specific root directory (by default @file{~/ghq}) +using the remote repository URL's host and path.") + (license license:expat))) |