diff options
Diffstat (limited to 'pkgs/applications/version-management/git-and-tools')
26 files changed, 1068 insertions, 6 deletions
diff --git a/pkgs/applications/version-management/git-and-tools/delta/default.nix b/pkgs/applications/version-management/git-and-tools/delta/default.nix index 0bd1e2a51217f..1bdd028d8101b 100644 --- a/pkgs/applications/version-management/git-and-tools/delta/default.nix +++ b/pkgs/applications/version-management/git-and-tools/delta/default.nix @@ -11,16 +11,16 @@ rustPlatform.buildRustPackage rec { pname = "delta"; - version = "0.14.0"; + version = "0.15.1"; src = fetchFromGitHub { owner = "dandavison"; repo = pname; rev = version; - sha256 = "sha256-hB8qpVXsAVJvtrdTnbPYcL9K4gL2nkZLo6vunjOP/7o="; + sha256 = "sha256-rPtLvO6raBY6BfrP0erBaXD86W1JL8g4XC4VbkR4Pww="; }; - cargoSha256 = "sha256-19ZGWM8vPbIEYaCxrAZ2HWgSqbeLu3hEb8eLL4a7fAI="; + cargoSha256 = "sha256-raT8a8K05ZpiGuZdM1hNikGxqY6w0g8G1DohfybXD9s="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/applications/version-management/git-and-tools/git-aggregator/default.nix b/pkgs/applications/version-management/git-and-tools/git-aggregator/default.nix new file mode 100644 index 0000000000000..9b2465366f672 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-aggregator/default.nix @@ -0,0 +1,43 @@ +{ lib, git, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "git-aggregator"; + version = "2.1.0"; + + src = python3Packages.fetchPypi { + inherit pname version; + sha256 = "sha256-79xNPzYP1j71sU5wZM5e2xTqQExqQEdxXPxbk4T/Scw="; + }; + + nativeBuildInputs = with python3Packages; [ + setuptools-scm + ]; + + propagatedBuildInputs = with python3Packages; [ + argcomplete + colorama + git + kaptan + requests + ]; + + checkInputs = [ + git + ]; + + preCheck = '' + export HOME="$(mktemp -d)" + git config --global user.name John + git config --global user.email john@localhost + git config --global init.defaultBranch master + git config --global pull.rebase false + ''; + + meta = with lib; { + description = "Manage the aggregation of git branches from different remotes to build a consolidated one"; + homepage = "https://github.com/acsone/git-aggregator"; + license = licenses.agpl3Plus; + maintainers = with maintainers; [ lourkeur ]; + mainProgram = "gitaggregate"; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-backup/default.nix b/pkgs/applications/version-management/git-and-tools/git-backup/default.nix new file mode 100644 index 0000000000000..8c45fdef3f7d7 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-backup/default.nix @@ -0,0 +1,26 @@ +{ lib, stdenv, fetchFromGitHub, rustPlatform, pkg-config, openssl, Security }: + +rustPlatform.buildRustPackage rec { + pname = "git-backup"; + version = "0.2.0"; + + src = fetchFromGitHub { + owner = "jsdw"; + repo = pname; + rev = "v${version}"; + sha256 = "0h31j8clvk4gkw4mgva9p0ypf26zhf7f0y564fdmzyw6rsz9wzcj"; + }; + + cargoSha256 = "0lb53sk7rikmj365gvcvn1hq70d6dmhp0aj2dyipb2qasypqz5l3"; + + nativeBuildInputs = [ pkg-config ]; + + buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security ]; + + meta = with lib; { + homepage = "https://github.com/jsdw/git-backup"; + description = "A tool to help you backup your git repositories from services like GitHub"; + license = licenses.mit; + maintainers = [ maintainers.marsam ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-crecord/default.nix b/pkgs/applications/version-management/git-and-tools/git-crecord/default.nix new file mode 100644 index 0000000000000..1ad75e75b7bfd --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-crecord/default.nix @@ -0,0 +1,25 @@ +{ lib, fetchFromGitHub, python3 }: + +python3.pkgs.buildPythonApplication rec { + pname = "git-crecord"; + version = "20220324.0"; + + src = fetchFromGitHub { + owner = "andrewshadura"; + repo = "git-crecord"; + rev = version; + sha256 = "sha256-LWO9vteTIe54zTDWyRotLKIIi5SaGD0c9s7B5aBHm0s="; + }; + + propagatedBuildInputs = with python3.pkgs; [ docutils ]; + + # has no tests + doCheck = false; + + meta = with lib; { + homepage = "https://github.com/andrewshadura/git-crecord"; + description = "Git subcommand to interactively select changes to commit or stage"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ onny ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-fire/default.nix b/pkgs/applications/version-management/git-and-tools/git-fire/default.nix new file mode 100644 index 0000000000000..bc7e9f4840b71 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-fire/default.nix @@ -0,0 +1,31 @@ +{ lib, stdenv, fetchFromGitHub }: + +stdenv.mkDerivation { + pname = "git-fire"; + version = "unstable-2017-08-27"; + + src = fetchFromGitHub { + owner = "qw3rtman"; + repo = "git-fire"; + rev = "d72b68ed356f726c77c60294f9220275f16c9931"; + sha256 = "1hdwkhyjjx31y0lpjkhbb4f5y9f7g70fnd4c2246cmk2rbsvj5b2"; + }; + + installPhase = '' + install -D -m755 $src/git-fire $out/bin/git-fire + ''; + + meta = with lib; { + description = '' + Push ALL changes in a git repository + ''; + longDescription = '' + In the event of an emergency (fire, etc.), automatically commit all changes/files in a repository, pushing to all known remotes all commits and stashes. + ''; + homepage = "https://github.com/qw3rtman/git-fire"; + license = licenses.mit; + platforms = platforms.all; + maintainers = with maintainers; [ swflint ]; + mainProgram = "git-fire"; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-ftp/default.nix b/pkgs/applications/version-management/git-and-tools/git-ftp/default.nix new file mode 100644 index 0000000000000..57b5e3c463724 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-ftp/default.nix @@ -0,0 +1,99 @@ +{ lib +, resholve +, fetchFromGitHub +, fetchpatch +, bash +, coreutils +, git +, gnugrep +, gawk +, curl +, hostname +, gnused +, findutils +, lftp +, pandoc +, man +}: + +resholve.mkDerivation rec { + pname = "git-ftp"; + version = "1.6.0"; + src = fetchFromGitHub { + owner = "git-ftp"; + repo = "git-ftp"; + rev = version; + sha256 = "1hxkqf7jbrx24q18yxpnd3dxzh4xk6asymwkylp1x7zg6mcci87d"; + }; + + dontBuild = true; + + # fix bug/typo; PRed upstream @ + # https://github.com/git-ftp/git-ftp/pull/628 + patches = [ + (fetchpatch { + name = "fix-function-invocation-typo.patch"; + url = "https://github.com/git-ftp/git-ftp/commit/cddf7cbba80e710758f6aac0ec0d77552ea8cd75.patch"; + sha256 = "sha256-2B0QaMJi78Bg3bA1jp41aiyql1/LCryoaDs7+xmS1HY="; + }) + ]; + + installPhase = '' + make install-all prefix=$out + ''; + + nativeBuildInputs = [ pandoc man ]; + + solutions = { + git-ftp = { + scripts = [ "bin/git-ftp" ]; + interpreter = "${bash}/bin/bash"; + inputs = [ + coreutils + git + gnugrep + gawk + curl + hostname + gnused + findutils + lftp + ]; + fake = { + # don't resolve impure system macOS security + # caution: will still be fragile if PATH is bad + # TODO: fixable once we figure out how to handle + # this entire class of problem... + "external" = [ "security" ]; + }; + keep = { + # looks like run-time user/env/git-config controlled + "$GIT_PAGER" = true; + "$hook" = true; # presumably git hooks given context + }; + execer = [ + # TODO: rm when binlore/resholve handle git; manually + # checked and see no obvious subexec for now + "cannot:${git}/bin/git" + /* + Mild uncertainty here. There *are* commandlikes in + the arguments (especially wait & cd), but I think they are + fine as-is, because I'm reading them as: + 1. ftp commands + 2. running on the remote anyways + + See https://github.com/git-ftp/git-ftp/blob/057f7d8e9f00ffc5a8c6ceaa4be30af2939df41a/git-ftp#L1214-L1221 + */ + "cannot:${lftp}/bin/lftp" + ]; + }; + }; + + meta = with lib; { + description = "Git powered FTP client written as shell script"; + homepage = "https://git-ftp.github.io/"; + license = licenses.gpl3; + maintainers = with maintainers; [ tweber ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-hound/default.nix b/pkgs/applications/version-management/git-and-tools/git-hound/default.nix new file mode 100644 index 0000000000000..463d550cbcabb --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-hound/default.nix @@ -0,0 +1,31 @@ +{ buildGoModule +, fetchFromGitHub +, lib +}: + +buildGoModule rec { + pname = "git-hound"; + version = "1.4"; + + src = fetchFromGitHub { + owner = "tillson"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-HD5OK8HjnLDbyC/TmVI2HfBRIUCyyHTbA3JvKoeXV5E="; + }; + + vendorSha256 = null; #vendorSha256 = ""; + + meta = with lib; { + description = "Reconnaissance tool for GitHub code search"; + longDescription = '' + GitHound pinpoints exposed API keys and other sensitive information + across all of GitHub using pattern matching, commit history searching, + and a unique result scoring system. + ''; + homepage = "https://github.com/tillson/git-hound"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ fab ]; + broken = true; # vendor isn't reproducible with go > 1.17: nix-build -A $name.go-modules --check + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-lfs/default.nix b/pkgs/applications/version-management/git-and-tools/git-lfs/default.nix new file mode 100644 index 0000000000000..bbb7d29422aa7 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-lfs/default.nix @@ -0,0 +1,55 @@ +{ lib, buildGoModule, fetchFromGitHub, asciidoctor, installShellFiles, git, testers, git-lfs }: + +buildGoModule rec { + pname = "git-lfs"; + version = "3.3.0"; + + src = fetchFromGitHub { + owner = "git-lfs"; + repo = "git-lfs"; + rev = "v${version}"; + hash = "sha256-r1z97sgqo1IyR0oW5b3bMGTUHGE8U+hrWgQ0Su9FRrw="; + }; + + vendorHash = "sha256-did6qAUawmQ/juLzJWIXGzmErj9tBKgM7HROTezX+tw="; + + nativeBuildInputs = [ asciidoctor installShellFiles ]; + + ldflags = [ + "-s" + "-w" + "-X github.com/git-lfs/git-lfs/v${lib.versions.major version}/config.Vendor=${version}" + ]; + + subPackages = [ "." ]; + + preBuild = '' + GOARCH= go generate ./commands + ''; + + postBuild = '' + make man + ''; + + checkInputs = [ git ]; + + preCheck = '' + unset subPackages + ''; + + postInstall = '' + installManPage man/man*/* + ''; + + passthru.tests.version = testers.testVersion { + package = git-lfs; + }; + + meta = with lib; { + description = "Git extension for versioning large files"; + homepage = "https://git-lfs.github.com/"; + changelog = "https://github.com/git-lfs/git-lfs/raw/v${version}/CHANGELOG.md"; + license = licenses.mit; + maintainers = with maintainers; [ twey marsam ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-privacy/default.nix b/pkgs/applications/version-management/git-and-tools/git-privacy/default.nix new file mode 100644 index 0000000000000..c17654174382a --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-privacy/default.nix @@ -0,0 +1,49 @@ +{ lib +, fetchFromGitHub +, git +, python3 +}: + +python3.pkgs.buildPythonApplication rec { + pname = "git-privacy"; + version = "2.1.0"; + format = "setuptools"; + + disabled = python3.pythonOlder "3.6"; + + src = fetchFromGitHub { + owner = "EMPRI-DEVOPS"; + repo = pname; + rev = "v${version}"; + sha256 = "0hfy43fip1l81672xfwqrz1jryzkjy7h9f2lyikxgibibil0p444"; + }; + + propagatedBuildInputs = with python3.pkgs; [ + click + git-filter-repo + GitPython + pynacl + setuptools + ]; + + checkInputs = with python3.pkgs; [ + git + pytestCheckHook + ]; + + disabledTests = [ + # Tests want to interact with a git repo + "TestGitPrivacy" + ]; + + pythonImportsCheck = [ + "gitprivacy" + ]; + + meta = with lib; { + description = "Tool to redact Git author and committer dates"; + homepage = "https://github.com/EMPRI-DEVOPS/git-privacy"; + license = with licenses; [ bsd2 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-quick-stats/default.nix b/pkgs/applications/version-management/git-and-tools/git-quick-stats/default.nix new file mode 100644 index 0000000000000..336c24819baf0 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-quick-stats/default.nix @@ -0,0 +1,51 @@ +{ lib, stdenv +, fetchFromGitHub +, makeWrapper +, coreutils +, gawk +, git +, gnugrep +, ncurses +, util-linux +}: + +stdenv.mkDerivation rec { + pname = "git-quick-stats"; + version = "2.4.0"; + + src = fetchFromGitHub { + repo = "git-quick-stats"; + owner = "arzzen"; + rev = version; + sha256 = "sha256-QmHb5MWZpbZjc93XgdPFabgzT7S522ZN27p6tdL46Y0="; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installFlags = [ + "PREFIX=${builtins.placeholder "out"}" + ]; + + postInstall = + let + path = lib.makeBinPath [ + coreutils + gawk + git + gnugrep + ncurses + util-linux + ]; + in + '' + wrapProgram $out/bin/git-quick-stats --suffix PATH : ${path} + ''; + + meta = with lib; { + homepage = "https://github.com/arzzen/git-quick-stats"; + description = "A simple and efficient way to access various statistics in git repository"; + platforms = platforms.all; + maintainers = [ maintainers.kmein ]; + license = licenses.mit; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-repo-updater/default.nix b/pkgs/applications/version-management/git-and-tools/git-repo-updater/default.nix new file mode 100644 index 0000000000000..d78972aa07bdf --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-repo-updater/default.nix @@ -0,0 +1,25 @@ +{ lib, buildPythonApplication, fetchPypi +, colorama, GitPython }: + +buildPythonApplication rec { + pname = "gitup"; + version = "0.5.1"; + + src = fetchPypi { + inherit pname version; + sha256 = "1pa612rcc94nc461zs9sag9p46sycc214622b06gdn35rmwp0y2g"; + }; + + propagatedBuildInputs = [ colorama GitPython ]; + + # no tests + doCheck = false; + + meta = with lib; { + description = "Easily update multiple Git repositories at once"; + homepage = "https://github.com/earwig/git-repo-updater"; + license = licenses.mit; + maintainers = [ maintainers.bdesham ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-repo/default.nix b/pkgs/applications/version-management/git-and-tools/git-repo/default.nix new file mode 100644 index 0000000000000..e47ea6b12dbef --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-repo/default.nix @@ -0,0 +1,62 @@ +{ lib, stdenv, fetchFromGitHub, makeWrapper, nix-update-script +, python3, git, gnupg, less, openssh +}: + +stdenv.mkDerivation rec { + pname = "git-repo"; + version = "2.30"; + + src = fetchFromGitHub { + owner = "android"; + repo = "tools_repo"; + rev = "v${version}"; + sha256 = "sha256-Ck+Q7sHhMqUWu6WeA3DhY+svMxH2sU0WvmyvZ5qsW+E="; + }; + + # Fix 'NameError: name 'ssl' is not defined' + patches = [ ./import-ssl-module.patch ]; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ python3 ]; + + postPatch = '' + substituteInPlace repo --replace \ + 'urllib.request.urlopen(url)' \ + 'urllib.request.urlopen(url, context=ssl.create_default_context())' + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp repo $out/bin/repo + + runHook postInstall + ''; + + # Important runtime dependencies + postFixup = '' + wrapProgram $out/bin/repo --prefix PATH ":" \ + "${lib.makeBinPath [ git gnupg less openssh ]}" + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "gitRepo"; + }; + }; + + meta = with lib; { + description = "Android's repo management tool"; + longDescription = '' + Repo is a Python script based on Git that helps manage many Git + repositories, does the uploads to revision control systems, and automates + parts of the development workflow. Repo is not meant to replace Git, only + to make it easier to work with Git. + ''; + homepage = "https://android.googlesource.com/tools/repo"; + license = licenses.asl20; + maintainers = with maintainers; [ otavio ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-repo/import-ssl-module.patch b/pkgs/applications/version-management/git-and-tools/git-repo/import-ssl-module.patch new file mode 100644 index 0000000000000..efc3d2b1f8a5e --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-repo/import-ssl-module.patch @@ -0,0 +1,28 @@ +Fix runtime error due missing import + +Traceback (most recent call last): + File "/nix/store/4qqhr7g9ri3n7v6ik9ahlpvyp18wcn4p-git-repo-2.15.3/bin/.repo-wrapped", line 1339, in <module> + main(sys.argv[1:]) + File "/nix/store/4qqhr7g9ri3n7v6ik9ahlpvyp18wcn4p-git-repo-2.15.3/bin/.repo-wrapped", line 1304, in main + _Init(args, gitc_init=(cmd == 'gitc-init')) + File "/nix/store/4qqhr7g9ri3n7v6ik9ahlpvyp18wcn4p-git-repo-2.15.3/bin/.repo-wrapped", line 607, in _Init + _Clone(url, dst, opt.clone_bundle, opt.quiet, opt.verbose) + File "/nix/store/4qqhr7g9ri3n7v6ik9ahlpvyp18wcn4p-git-repo-2.15.3/bin/.repo-wrapped", line 912, in _Clone + if clone_bundle and _DownloadBundle(url, cwd, quiet, verbose): + File "/nix/store/4qqhr7g9ri3n7v6ik9ahlpvyp18wcn4p-git-repo-2.15.3/bin/.repo-wrapped", line 860, in _DownloadBundle + r = urllib.request.urlopen(url, context=ssl.create_default_context()) +NameError: name 'ssl' is not defined +builder for '/nix/store/4hvds8fv8xmzlm86yg9cf1lj6hrya7sg-amdvlk-src.drv' failed with exit code 1 + +diff --git a/repo b/repo +index 8b05def..f394b3e 100755 +--- a/repo ++++ b/repo +@@ -236,6 +236,7 @@ import optparse + import re + import shutil + import stat ++import ssl + + if sys.version_info[0] == 3: + import urllib.request diff --git a/pkgs/applications/version-management/git-and-tools/git-review/default.nix b/pkgs/applications/version-management/git-and-tools/git-review/default.nix new file mode 100644 index 0000000000000..2650f330c0a99 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-review/default.nix @@ -0,0 +1,52 @@ +{ lib +, fetchFromGitea +, buildPythonApplication +, pbr +, requests +, setuptools +, gitUpdater +}: + +buildPythonApplication rec { + pname = "git-review"; + version = "2.3.1"; + + # Manually set version because prb wants to get it from the git + # upstream repository (and we are installing from tarball instead) + PBR_VERSION = version; + + src = fetchFromGitea { + domain = "opendev.org"; + owner = "opendev"; + repo = pname; + rev = version; + sha256 = "sha256-C8M4b/paHJB9geizc1eIhXsTuLeeS4dDisCfCQF1RuU="; + }; + + outputs = [ "out" "man" ]; + + nativeBuildInputs = [ + pbr + ]; + + propagatedBuildInputs = [ + requests + setuptools # implicit dependency, used to get package version through pkg_resources + ]; + + # Don't run tests because they pull in external dependencies + # (a specific build of gerrit + maven plugins), and I haven't figured + # out how to work around this yet. + doCheck = false; + + pythonImportsCheck = [ "git_review" ]; + + passthru.updateScript = gitUpdater { }; + + meta = with lib; { + description = "Tool to submit code to Gerrit"; + homepage = "https://opendev.org/opendev/git-review"; + license = licenses.asl20; + maintainers = with maintainers; [ kira-bruneau ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-series/default.nix b/pkgs/applications/version-management/git-and-tools/git-series/default.nix new file mode 100644 index 0000000000000..31d1c635512c4 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-series/default.nix @@ -0,0 +1,40 @@ +{ lib, rustPlatform, fetchFromGitHub +, pkg-config, openssl, zlib, curl, libgit2, libssh2 +}: + +rustPlatform.buildRustPackage rec { + pname = "git-series"; + version = "unstable-2019-10-15"; + + src = fetchFromGitHub { + owner = "git-series"; + repo = "git-series"; + rev = "c570a015e15214be46a7fd06ba08526622738e20"; + sha256 = "1i0m2b7ma6xvkg95k57gaj1wpc1rfvka6h8jr5hglxmqqbz6cb6w"; + }; + + cargoSha256 = "1hmx14z3098c98achgii0jkcm4474iw762rmib77amcsxj73zzdh"; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ openssl zlib curl libgit2 libssh2 ]; + + LIBGIT2_SYS_USE_PKG_CONFIG = true; + LIBSSH2_SYS_USE_PKG_CONFIG = true; + + postInstall = '' + install -D "$src/git-series.1" "$out/man/man1/git-series.1" + ''; + + meta = with lib; { + description = "A tool to help with formatting git patches for review on mailing lists"; + longDescription = '' + git series tracks changes to a patch series over time. git + series also tracks a cover letter for the patch series, + formats the series for email, and prepares pull requests. + ''; + homepage = "https://github.com/git-series/git-series"; + + license = licenses.mit; + maintainers = with maintainers; [ edef vmandela ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-sizer/default.nix b/pkgs/applications/version-management/git-and-tools/git-sizer/default.nix new file mode 100644 index 0000000000000..ed7239b80cb33 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-sizer/default.nix @@ -0,0 +1,30 @@ +{ lib, buildGoModule, fetchFromGitHub, testers, git-sizer }: + +buildGoModule rec { + pname = "git-sizer"; + version = "1.5.0"; + + src = fetchFromGitHub { + owner = "github"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-On7QBTzKfnuuzwMQ8m1odxGqfIKL+EDg5V05Kxuhmqw="; + }; + + vendorSha256 = "sha256-oRlsD99XiI/0ZWibjyRcycmGab+vMbXrV5hIdIyUDYg="; + + ldflags = [ "-s" "-w" "-X main.BuildVersion=${version}" ]; + + doCheck = false; + + passthru.tests.vesion = testers.testVersion { + package = git-sizer; + }; + + meta = with lib; { + description = "Compute various size metrics for a Git repository"; + homepage = "https://github.com/github/git-sizer"; + license = licenses.mit; + maintainers = with maintainers; [ matthewbauer ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-town/default.nix b/pkgs/applications/version-management/git-and-tools/git-town/default.nix new file mode 100644 index 0000000000000..abca61358d99b --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-town/default.nix @@ -0,0 +1,77 @@ +{ lib, buildGoModule, fetchFromGitHub, fetchpatch, installShellFiles, git, testers, git-town, makeWrapper }: + +buildGoModule rec { + pname = "git-town"; + version = "7.8.0"; + + src = fetchFromGitHub { + owner = "git-town"; + repo = "git-town"; + rev = "v${version}"; + sha256 = "sha256-g9ooMIMN8DN2FcWYkDC1hICCleQYdHf30PYMCit/NMI="; + }; + + patches = [ + # Fix "go vet" when building using Go 1.18. + (fetchpatch { + name = "fix-go-vet-in-go-1.18.patch"; + url = "https://github.com/git-town/git-town/commit/23eb0aca7b28c6a0afc21db553aa0e35d35891aa.patch"; + sha256 = "sha256-EyfhKVrQxRJNrYqaZI04dJogaXs1J+bbOIu7p8g2Clc="; + }) + ]; + + vendorSha256 = null; + + nativeBuildInputs = [ installShellFiles makeWrapper ]; + + buildInputs = [ git ]; + + ldflags = + let + modulePath = "github.com/git-town/git-town/v${lib.versions.major version}"; in + [ + "-s" + "-w" + "-X ${modulePath}/src/cmd.version=v${version}" + "-X ${modulePath}/src/cmd.buildDate=nix" + ]; + + checkInputs = [ git ]; + preCheck = + let + skippedTests = [ + "TestGodog" + "TestRunner_CreateChildFeatureBranch" + "TestShellRunner_RunStringWith_Dir" + "TestMockingShell_MockCommand" + "TestShellRunner_RunStringWith_Input" + ]; + in + '' + HOME=$(mktemp -d) + # Disable tests requiring local operations + buildFlagsArray+=("-run" "[^(${builtins.concatStringsSep "|" skippedTests})]") + ''; + + postInstall = '' + installShellCompletion --cmd git-town \ + --bash <($out/bin/git-town completion bash) \ + --fish <($out/bin/git-town completion fish) \ + --zsh <($out/bin/git-town completion zsh) + + wrapProgram $out/bin/git-town --prefix PATH : ${lib.makeBinPath [ git ]} + ''; + + passthru.tests.version = testers.testVersion { + package = git-town; + command = "git-town version"; + version = "v${version}"; + }; + + meta = with lib; { + description = "Generic, high-level git support for git-flow workflows"; + homepage = "https://www.git-town.com/"; + license = licenses.mit; + maintainers = with maintainers; [ allonsy blaggacao ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/git-up/default.nix b/pkgs/applications/version-management/git-and-tools/git-up/default.nix new file mode 100644 index 0000000000000..0a366827e40d5 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/git-up/default.nix @@ -0,0 +1,36 @@ +{ lib, pythonPackages, git }: + +pythonPackages.buildPythonApplication rec { + pname = "git-up"; + version = "1.6.1"; + + src = pythonPackages.fetchPypi { + inherit pname version; + sha256 = "0gs791yb0cndg9879vayvcj329jwhzpk6wrf9ri12l5hg8g490za"; + }; + + # git should be on path for tool to work correctly + propagatedBuildInputs = [ git ] ++ (with pythonPackages; [ click colorama docopt GitPython six termcolor ]); + + checkInputs = [ git pythonPackages.nose ]; # git needs to be on path + # 1. git fails to run as it cannot detect the email address, so we set it + # 2. $HOME is by default not a valid dir, so we have to set that too + # https://github.com/NixOS/nixpkgs/issues/12591 + preCheck = '' + export HOME=$TMPDIR + git config --global user.email "nobody@example.com" + git config --global user.name "Nobody" + ''; + + postInstall = '' + rm -r $out/${pythonPackages.python.sitePackages}/PyGitUp/tests + ''; + + meta = with lib; { + homepage = "https://github.com/msiemens/PyGitUp"; + description = "A git pull replacement that rebases all local branches when pulling"; + license = licenses.mit; + maintainers = with maintainers; [ peterhoeg ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/gitless/default.nix b/pkgs/applications/version-management/git-and-tools/gitless/default.nix new file mode 100644 index 0000000000000..31ab40d79478f --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/gitless/default.nix @@ -0,0 +1,41 @@ +{ lib +, fetchFromGitHub +, python3 +}: + +python3.pkgs.buildPythonApplication rec { + pname = "gitless"; + version = "0.8.8"; + format = "setuptools"; + + src = fetchFromGitHub { + owner = "gitless-vcs"; + repo = pname; + rev = "v${version}"; + hash = "sha256-xo5EWtP2aN8YzP8ro3bnxZwUGUp0PHD0g8hk+Y+gExE="; + }; + + nativeBuildInputs = [ python3.pkgs.pythonRelaxDepsHook ]; + + propagatedBuildInputs = with python3.pkgs; [ + sh + pygit2 + clint + ]; + + pythonRelaxDeps = [ "pygit2" ]; + + doCheck = false; + + pythonImportsCheck = [ + "gitless" + ]; + + meta = with lib; { + description = "Version control system built on top of Git"; + homepage = "https://gitless.com/"; + license = licenses.mit; + maintainers = with maintainers; [ cransom ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/gitlint/default.nix b/pkgs/applications/version-management/git-and-tools/gitlint/default.nix new file mode 100644 index 0000000000000..626739864c713 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/gitlint/default.nix @@ -0,0 +1,50 @@ +{ lib +, buildPythonApplication +, fetchFromGitHub +, gitMinimal +, python3 +}: + +python3.pkgs.buildPythonApplication rec { + pname = "gitlint"; + version = "0.18.0"; + + src = fetchFromGitHub { + owner = "jorisroovers"; + repo = "gitlint"; + rev = "v${version}"; + sha256 = "sha256-MmXzrooN+C9MUaAz4+IEGkGJWHbgvPMSLHgssM0wyN8="; + }; + + # Upstream splitted the project into gitlint and gitlint-core to + # simplify the dependency handling + sourceRoot = "source/gitlint-core"; + + propagatedBuildInputs = with python3.pkgs; [ + arrow + click + sh + ]; + + checkInputs = with python3.pkgs; [ + gitMinimal + pytestCheckHook + ]; + + postPatch = '' + # We don't need gitlint-core + substituteInPlace setup.py \ + --replace "'gitlint-core[trusted-deps]==' + version," "" + ''; + + pythonImportsCheck = [ + "gitlint" + ]; + + meta = with lib; { + description = "Linting for your git commit messages"; + homepage = "https://jorisroovers.com/gitlint/"; + license = licenses.mit; + maintainers = with maintainers; [ ethancedwards8 fab ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/gitls/default.nix b/pkgs/applications/version-management/git-and-tools/gitls/default.nix new file mode 100644 index 0000000000000..4cda10b380575 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/gitls/default.nix @@ -0,0 +1,34 @@ +{ lib +, buildGoModule +, gitls +, fetchFromGitHub +, testers +}: + +buildGoModule rec { + pname = "gitls"; + version = "1.0.4"; + + src = fetchFromGitHub { + owner = "hahwul"; + repo = pname; + rev = "v${version}"; + hash = "sha256-kLkH/nNidd1QNPKvo7fxZwMhTgd4AVB8Ofw0Wo0z6c0="; + }; + + vendorSha256 = null; + + passthru.tests.version = testers.testVersion { + package = gitls; + command = "gitls -version"; + version = "v${version}"; + }; + + meta = with lib; { + description = "Tools to enumerate git repository URL"; + homepage = "https://github.com/hahwul/gitls"; + changelog = "https://github.com/hahwul/gitls/releases/tag/v${version}"; + license = licenses.mit; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/gitoxide/default.nix b/pkgs/applications/version-management/git-and-tools/gitoxide/default.nix new file mode 100644 index 0000000000000..d2a51c94727a2 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/gitoxide/default.nix @@ -0,0 +1,41 @@ +{ lib +, rustPlatform +, fetchFromGitHub +, cmake +, pkg-config +, stdenv +, libiconv +, Security +, SystemConfiguration +, openssl +}: + +rustPlatform.buildRustPackage rec { + pname = "gitoxide"; + version = "0.19.0"; + + src = fetchFromGitHub { + owner = "Byron"; + repo = "gitoxide"; + rev = "v${version}"; + sha256 = "sha256-GGXujTn5Xb63vKIycj5o9+PCsMN1Kp3RCSg1wiM31qA="; + }; + + cargoSha256 = "sha256-MAZhrd9CtFOIAaUUbXplBo+eo6Zaws2LIRkPoX4HztE="; + + nativeBuildInputs = [ cmake pkg-config ]; + buildInputs = if stdenv.isDarwin + then [ libiconv Security SystemConfiguration ] + else [ openssl ]; + + # Needed to get openssl-sys to use pkg-config. + OPENSSL_NO_VENDOR = 1; + + meta = with lib; { + description = "A command-line application for interacting with git repositories"; + homepage = "https://github.com/Byron/gitoxide"; + changelog = "https://github.com/Byron/gitoxide/blob/v${version}/CHANGELOG.md"; + license = with licenses; [ mit /* or */ asl20 ]; + maintainers = with maintainers; [ syberant ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/gitsign/default.nix b/pkgs/applications/version-management/git-and-tools/gitsign/default.nix new file mode 100644 index 0000000000000..11a8394a63c49 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/gitsign/default.nix @@ -0,0 +1,32 @@ +{ lib, buildGoModule, fetchFromGitHub, stdenv, makeWrapper, gitMinimal }: + +buildGoModule rec { + pname = "gitsign"; + version = "0.4.1"; + + src = fetchFromGitHub { + owner = "sigstore"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-lSE4BLwtxicngvnDCcMa6F6c3+Okn9NKAOnT2FGi7kU="; + }; + vendorSha256 = "sha256-WrVunAxOXXGSbs9OyKydeg4N/s871mt2O3t2e5DxXQo="; + + nativeBuildInputs = [ makeWrapper ]; + + ldflags = [ "-s" "-w" "-buildid=" "-X github.com/sigstore/gitsign/pkg/version.gitVersion=${version}" ]; + + postInstall = '' + for f in $out/bin/*; do + wrapProgram $f --prefix PATH : ${lib.makeBinPath [ gitMinimal ]} + done + ''; + + meta = { + homepage = "https://github.com/sigstore/gitsign"; + changelog = "https://github.com/sigstore/gitsign/releases/tag/v${version}"; + description = "Keyless Git signing using Sigstore"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ lesuisse ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/gitstats/default.nix b/pkgs/applications/version-management/git-and-tools/gitstats/default.nix new file mode 100644 index 0000000000000..6cfcb0077427f --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/gitstats/default.nix @@ -0,0 +1,44 @@ +{ lib, stdenv, fetchFromGitHub, perl, python2, gnuplot, coreutils, gnugrep }: + +stdenv.mkDerivation rec { + pname = "gitstats"; + version = "2016-01-08"; + + # upstream does not make releases + src = fetchFromGitHub { + owner = "hoxu"; + repo = "gitstats"; + rev = "55c5c285558c410bb35ebf421245d320ab9ee9fa"; + sha256 = "sha256-qUQB3aCRbPkbMoMf39kPQ0vil8RjXL8RqjdTryfkzK0="; + }; + + nativeBuildInputs = [ perl ]; + + buildInputs = [ python2 ]; + + strictDeps = true; + + postPatch = '' + sed -e "s|gnuplot_cmd = .*|gnuplot_cmd = '${gnuplot}/bin/gnuplot'|" \ + -e "s|\<wc\>|${coreutils}/bin/wc|g" \ + -e "s|\<grep\>|${gnugrep}/bin/grep|g" \ + -i gitstats + ''; + + buildPhase = '' + make man VERSION="${version}" + ''; + + installPhase = '' + make install PREFIX="$out" VERSION="${version}" + install -Dm644 doc/gitstats.1 "$out"/share/man/man1/gitstats.1 + ''; + + meta = with lib; { + homepage = "http://gitstats.sourceforge.net/"; + description = "Git history statistics generator"; + license = licenses.gpl2Plus; + platforms = platforms.all; + maintainers = [ maintainers.bjornfor ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/josh/default.nix b/pkgs/applications/version-management/git-and-tools/josh/default.nix new file mode 100644 index 0000000000000..acf2b24c0794e --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/josh/default.nix @@ -0,0 +1,60 @@ +{ lib +, stdenv +, fetchFromGitHub +, rustPlatform +, libgit2 +, openssl +, pkg-config +, makeWrapper +, git +, darwin +}: + +rustPlatform.buildRustPackage rec { + pname = "josh"; + version = "22.06.22"; + + src = fetchFromGitHub { + owner = "esrlabs"; + repo = "josh"; + rev = "r" + version; + sha256 = "0511qv9zyjvv4zfz6zyi69ssbkrwa24n0ah5w9mb4gzd547as8pq"; + }; + + cargoSha256 = "0zfjjyyz4pxar1mfkkj9aij4dnwqy3asdrmay1iy6ijjn1qd97n4"; + + nativeBuildInputs = [ + pkg-config + makeWrapper + ]; + + buildInputs = [ + libgit2 + openssl + ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ + darwin.Security + ]; + + cargoBuildFlags = [ + "-p" "josh" + "-p" "josh-proxy" + # TODO: josh-ui + ]; + + postInstall = '' + wrapProgram "$out/bin/josh-proxy" --prefix PATH : "${git}/bin" + ''; + + meta = { + description = "Just One Single History"; + homepage = "https://josh-project.github.io/josh/"; + downloadPage = "https://github.com/josh-project/josh"; + changelog = "https://github.com/josh-project/josh/releases/tag/${version}"; + license = lib.licenses.mit; + maintainers = [ + lib.maintainers.sternenseemann + lib.maintainers.tazjin + ]; + platforms = lib.platforms.all; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/lefthook/default.nix b/pkgs/applications/version-management/git-and-tools/lefthook/default.nix index 6b019e50887cf..e73d4de6dc41c 100644 --- a/pkgs/applications/version-management/git-and-tools/lefthook/default.nix +++ b/pkgs/applications/version-management/git-and-tools/lefthook/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "lefthook"; - version = "1.2.2"; + version = "1.2.3"; src = fetchFromGitHub { rev = "v${version}"; owner = "evilmartians"; repo = "lefthook"; - sha256 = "sha256-66exuMb0dUQWRhcDUU7mAJ06yD/acKX96KIQwMEU6xM="; + sha256 = "sha256-tns/JUOYlgG+oiFACnXlCwHBF4enctV4GPlpEZCM/nM="; }; - vendorSha256 = "sha256-NTZz0EDIjGdh8dD9jxbNVdWb7NFJsdtnMp7H6Ni0EbQ="; + vendorSha256 = "sha256-sBcgt2YsV9RQhSjPN6N54tRk7nNvcOVhPEsEP+0Dtco="; nativeBuildInputs = [ installShellFiles ]; |