Skip to main content

GitKat CLI (Rust binary)

Project description

⫷⫸

𝔾𝚒𝚝𝕂𝚊𝚝 ⫷⫸

CI GitHub

𝔾𝚒𝚝𝕂𝚊𝚝 ⫷⫸ (GitKat) is a Rust toolkit for managing Git repositories in bulk. It ships a single CLI, gk, that mirrors the legacy shell scripts while adding a packaged, testable workflow.

Install

# crates.io
cargo install gitkat

# Homebrew (tap this repo)
brew install Aureuma/gitkat/gitkat

# npm
npm install -g @aureuma/gitkat

# pip (Python wrapper downloads the Rust binary)
python -m pip install gitkat

# local builds
cargo build --release
./target/release/gk --help

The pip/npm wrappers download the Rust binary from GitHub Releases on first run. Set GITKAT_RELEASE_BASE to override the download base URL.

Quick start

gk check "Example Name"
gk report .
gk push
gk rewrite -m olddomain.com:newdomain.com --ignore-case --preserve-case
gk github-emails --token YOUR_GITHUB_TOKEN

Commands

  • gk check <name>: search author and committer names across repos in the current directory.
  • gk report [path]: list unique author emails for each repo under a path.
  • gk push: force-push the current branch of each repo in the current directory.
  • gk rewrite: rewrite identity metadata and/or blob contents using a Rust gitoxide (gix) rewriter.
  • gk github-emails --token <token>: find contribution emails across GitHub repos you can access.
  • gk verify-rewrite: compare rewrite output against git-filter-repo across real repositories.

Rewrite notes

gk rewrite preserves the existing behavior of rewrite.sh, including case-aware blob mapping and commit metadata rewrites. The rewrite engine is implemented directly in Rust using gitoxide (gix).

Examples:

# Identity rewrite
gk rewrite -n "New Name" -e "new@example.test" -o "old@example.test"

# Blob rewrite with preserved casing and case-insensitive matching
gk rewrite -m foo:bar --ignore-case --preserve-case

# Regex blob rewrite
gk rewrite -m "token_[0-9]+:REDACTED" --regex

# Exclude files from blob rewrites
gk rewrite -m token:REDACTED -x "data/*.csv" -x "vendor/*"

# Rename file paths using the same mappings
gk rewrite -m oldname:newname --rename-files

# Delete a file or glob across history
gk rewrite --delete-path "path/to/file.txt"
gk rewrite --delete-path "assets/**/*.png"

Delete paths accept glob patterns and log each removed file in the colored rewrite output.

Development

cargo test --workspace
cargo run -p gitkat -- --help
gk verify-rewrite --ci --with-blob
mdbook build

gk verify-rewrite compares against git-filter-repo, so install it if you want equivalence checks.

License

MIT License. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gitkat-0.5.2.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gitkat-0.5.2-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file gitkat-0.5.2.tar.gz.

File metadata

  • Download URL: gitkat-0.5.2.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gitkat-0.5.2.tar.gz
Algorithm Hash digest
SHA256 73338dff1a3a20330e042345fb3f547e416befbe7fc7d83979420a3401b0e8a8
MD5 438f7f9384eee658b9822643f75e4209
BLAKE2b-256 3c87ebfe0901ead25663a7a919a507221e519e3f3ef7e7576c8b5c2c5a47bd71

See more details on using hashes here.

Provenance

The following attestation bundles were made for gitkat-0.5.2.tar.gz:

Publisher: release.yml on Aureuma/GitKat

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gitkat-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: gitkat-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 5.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gitkat-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 86a13900f4c0b98b24628123e8c499161eb0c1c51363f0e11bcb65518f1ea6e3
MD5 46729042cbb9dcd6340b12a653414451
BLAKE2b-256 331d6f35c60ce918343cd7afd23b3f0eab9eea41fd6cce4c37ae90bbf3686212

See more details on using hashes here.

Provenance

The following attestation bundles were made for gitkat-0.5.2-py3-none-any.whl:

Publisher: release.yml on Aureuma/GitKat

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page