Skip to content

Releases: JSpatim/git-valet

v0.2.2

14 Mar 23:47
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Fix clippy doc_markdown lint: add backticks to env var names in doc comment.

v0.2.1

14 Mar 23:43
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Bug fix

Fix: clear inherited git env vars in sgit() to prevent index corruption

When git-valet runs inside a git hook (pre-commit, pre-push), git sets env vars like GIT_INDEX_FILE pointing to the main repo's index. The sgit() function spawns git subprocesses with --git-dir/--work-tree for the valet bare repo, but inherited env vars override these flags, causing valet operations to read/write the main repo's index instead of the valet's.

This corrupts the main repo index with blob references that only exist in the valet's object database, making subsequent commits fail with:

error: invalid object 100644 <sha> for '<file>'
error: Error building trees

Fix: env_remove the following vars before spawning valet git commands:

  • GIT_INDEX_FILE
  • GIT_DIR
  • GIT_WORK_TREE
  • GIT_OBJECT_DIRECTORY
  • GIT_ALTERNATE_OBJECT_DIRECTORIES

Upgrade

cargo install git-valet

If you hit the corruption bug, repair with:

rm ~/.git-valets/<project-id>/repo.git/index
git valet sync

v0.2.0

14 Mar 20:57
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

What's new

Comprehensive code quality, security, and cross-platform improvements.

Features

  • Shell completionsgit valet completions bash/zsh/fish/powershell
  • NO_COLOR support — respects the no-color.org standard
  • Path traversal protection — rejects .., absolute paths, and normalizes \ to /

Improvements

  • Rust edition 2024, MSRV 1.85
  • Clippy pedantic lints enabled, unsafe_code forbidden
  • All .unwrap() removed from production code
  • Replaced sha2+hex with blake3 (faster, smaller)
  • Added dunce for safe Windows path handling (no \?\ UNC paths)
  • Extracted lib.rs for better testability
  • Release profile: LTO, strip, single codegen unit (smaller binary)
  • Git command exit codes now properly checked everywhere
  • CRLF-safe hook shebang handling

CI

  • Fixed branch triggers (main -> master)
  • Added cargo fmt --check and MSRV verification job
  • Multi-platform: Linux, macOS, Windows

Tests

  • 40 tests (was 28): unit, integration, and CLI end-to-end
  • Added assert_cmd + predicates for CLI testing

Install

cargo install git-valet

Full changelog: v0.1.0...v0.2.0

v0.1.0 — Initial release

13 Mar 18:24

Choose a tag to compare

Pre-release

First public release of git-valet (formerly git-aside).

git-valet transparently versions private files (.env, secrets, notes, AI prompts) in a separate private repo, synced via git hooks with zero workflow change.

Features

  • git valet init — Initialize a valet repo for your project
  • git valet sync — Manual sync (add + commit + push)
  • git valet status — Show valet repo status
  • Transparent hooks: pre-commit, pre-push, post-merge, post-checkout
  • Per-project config stored in ~/.git-valets/

Install

cargo install --git https://github.com/JSpatim/git-valet