diff options
Diffstat (limited to 'gnu/packages/version-control.scm')
-rw-r--r-- | gnu/packages/version-control.scm | 193 |
1 files changed, 166 insertions, 27 deletions
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 8f67a945a1..c2ec490383 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -47,6 +47,7 @@ ;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2022 Dhruvin Gandhi <contact@dhruvin.dev> ;;; Copyright © 2015, 2022 David Thompson <davet@gnu.org> +;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -125,6 +126,7 @@ #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #:use-module (gnu packages rsync) + #:use-module (gnu packages ruby) #:use-module (gnu packages sqlite) #:use-module (gnu packages texinfo) #:use-module (gnu packages admin) @@ -2938,10 +2940,90 @@ the smallest possible conflicts and to allow a merge to be saved, tested, interrupted, published, and collaborated on while in progress.") (license license:gpl2+))) +(define-public go-github-com-git-lfs-pktline + (let ((commit "06e9096e28253ba5c7825cbba43f469e4efd10f0") + (revision "0")) + (package + (name "go-github-com-git-lfs-pktline") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/git-lfs/pktline") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "02sn3v8vrl7qjnagbnrbrjnyjvzq8cwkxmc922zyc9b2hg187kpz")))) + (build-system go-build-system) + (arguments `(#:import-path "github.com/git-lfs/pktline")) + (propagated-inputs (list go-github-com-stretchr-testify + go-github-com-pmezard-go-difflib + go-github-com-davecgh-go-spew)) + (home-page "https://github.com/git-lfs/pktline") + (synopsis "Git pkt-line Go toolkit") + (description "This package is a Go language toolkit for reading and +writing files using the Git pkt-line format used in various Git operations.") +(license license:expat)))) + +(define-public go-github-com-git-lfs-wildmatch-v2 + (package + (name "go-github-com-git-lfs-wildmatch-v2") + (version "2.0.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/git-lfs/wildmatch") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0yg6d77d5l6v7cd8vr00y68z9aqb8qs4lidv0hkqh4fvz0ggvpln")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/git-lfs/wildmatch/v2")) + (home-page "https://github.com/git-lfs/wildmatch") + (synopsis "Go implementation of Git's wildmatch") + (description + "This package is an implementation of Git's wildmatch.c-style pattern +matching.") + (license license:expat))) + +(define-public go-github-com-git-lfs-gitobj-v2 + (package + (name "go-github-com-git-lfs-gitobj-v2") + (version "2.1.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/git-lfs/gitobj") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1sd7y4xbx00js1g2az4nq8g5lvsm4d7nqr3v4kxy8fxrfzdm63j9")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/git-lfs/gitobj/v2")) + (propagated-inputs (list go-github-com-stretchr-testify + go-github-com-pmezard-go-difflib + go-github-com-davecgh-go-spew)) + (home-page "https://github.com/git-lfs/gitobj") + (synopsis "Read and write git objects") + (description + "This package reads and writes loose and packed (objects found in git +packfiles) Git objects. It uses the pack package to search pack index files +and locate the corresponding delta-base chain in the appropriate pack file. +If gitobj can't find a loose object with the appropriate SHA-1, it will search +the repository's packfile(s) instead. If it finds an object in a packfile, it +will reconstruct the object along its delta-base chain and return it.") + (license license:expat))) + (define-public git-lfs (package (name "git-lfs") - (version "2.13.3") + (version "3.3.0") (source (origin (method git-fetch) (uri (git-reference @@ -2950,35 +3032,60 @@ interrupted, published, and collaborated on while in progress.") (file-name (git-file-name name version)) (sha256 (base32 - "0r7dmqhkhz91d3n7qfpny483x8f1n88yya22j2fvx75rgg33z2sg")))) + "1g268pplld04b9myhlrwc4fd8r1hvfyya5ja8wr558rar3pgsp5g")))) (build-system go-build-system) (arguments - `(#:import-path "github.com/git-lfs/git-lfs" - #:install-source? #f - #:phases - (modify-phases %standard-phases - (add-before 'build 'man-gen - ;; Without this, the binary generated in 'build - ;; phase won't have any embedded usage-text. - (lambda _ - (with-directory-excursion "src/github.com/git-lfs/git-lfs" - (invoke "make" "mangen")))) - (add-after 'build 'build-man-pages - (lambda _ - (with-directory-excursion "src/github.com/git-lfs/git-lfs" - (invoke "make" "man")) - #t)) - (add-after 'install 'install-man-pages - (lambda* (#:key outputs #:allow-other-keys) - (with-directory-excursion "src/github.com/git-lfs/git-lfs/man" - (let ((out (assoc-ref outputs "out"))) - (for-each - (lambda (manpage) - (install-file manpage (string-append out "/share/man/man1"))) - (find-files "." "^git-lfs.*\\.1$")))) - #t))))) + (list + #:import-path "github.com/git-lfs/git-lfs" + #:install-source? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-embed-x-net + (lambda _ + (delete-file-recursively "src/golang.org/x/net/publicsuffix/data") + (copy-recursively + #$(file-append (this-package-input "go-golang-org-x-net") + "/src/golang.org/x/net/publicsuffix/data") + "src/golang.org/x/net/publicsuffix/data"))) + (add-before 'build 'man-gen + ;; Without this, the binary generated in 'build + ;; phase won't have any embedded usage-text. + (lambda _ + (with-directory-excursion "src/github.com/git-lfs/git-lfs" + (invoke "make" "mangen")))) + (add-after 'build 'build-man-pages + (lambda _ + (with-directory-excursion "src/github.com/git-lfs/git-lfs" + (invoke "make" "man")))) + (add-after 'install 'install-man-pages + (lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion "src/github.com/git-lfs/git-lfs/man" + (for-each + (lambda (manpage) + (install-file manpage + (string-append #$output "/share/man/man1"))) + (find-files "." "^git-lfs.*\\.1$")))))))) ;; make `ronn` available during build for man page generation - (native-inputs (list ronn-ng)) + (native-inputs (list ronn-ng git-minimal ruby-asciidoctor)) + (propagated-inputs + (list go-github-com-xeipuuv-gojsonschema + go-github-com-xeipuuv-gojsonreference + go-github-com-xeipuuv-gojsonpointer + go-golang-org-x-net + go-golang.org-x-sync-semaphore + go-github-com-ssgelm-cookiejarparser + go-github-com-rubyist-tracerx + go-github-com-olekukonko-ts + go-github-com-leonelquinteros-gotext + go-github-com-git-lfs-wildmatch-v2 + go-github-com-git-lfs-pktline + go-github-com-git-lfs-go-netrc + go-github-com-git-lfs-gitobj-v2 + go-github-com-dpotapov-go-spnego + go-github-com-avast-retry-go + go-github-com-mattn-go-isatty + go-github-com-pkg-errors + go-github-com-spf13-cobra)) (home-page "https://git-lfs.github.com/") (synopsis "Git extension for versioning large files") (description @@ -2987,6 +3094,38 @@ videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server.") (license license:expat))) +(define-public lfs-s3 + (package + (name "lfs-s3") + (version "0.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~ngraves/lfs-s3") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0nkxivb356f1zjlj34px601zy86w4398db9s2ivd178jp4v69raw")))) + (build-system go-build-system) + (arguments + (list + #:import-path "git.sr.ht/~ngraves/lfs-s3")) + (inputs (list git-lfs)) + (propagated-inputs + (list go-github-com-aws-aws-sdk-go-v2 + go-github-com-aws-aws-sdk-go-v2-config + go-github-com-aws-aws-sdk-go-v2-feature-s3-manager + go-github-com-aws-aws-sdk-go-v2-service-s3 + go-github-com-spf13-cobra)) + (home-page "https://git.sr.ht/~ngraves/lfs-s3/") + (synopsis "Git extension for versioning large files in S3") + (description + "This package provides a custom transfer agent for Git LFS, allowing +plain S3 bucket usage as remote storage for media files. This package uses a +standalone agent instead of a server.") + (license license:expat))) + (define-public git-open (package (name "git-open") |