git-gardener

Crates.iogit-gardener
lib.rsgit-gardener
version0.1.1
created_at2025-10-16 00:19:47.510993+00
updated_at2025-10-16 00:19:47.510993+00
descriptionA Git worktree management tool
homepage
repositoryhttps://github.com/mei28/git-gardener
max_upload_size
id1885156
size173,412
Mingzhe Yang (mei28)

documentation

README

git-gardener

シンプルなGit worktree管理ツール

概要

git-gardenerは、Git worktreeの管理を簡単にするRust製のCLIツールです。wtpにインスパイアされ、直感的で使いやすいインターフェースを提供します。

特徴

  • 簡単セットアップ: init コマンドでプロジェクトをすぐに開始
  • シンプルな操作: 6つの基本コマンドでworktreeを管理
  • 自動パス生成: .gardener/branch-name 形式で自動的にworktreeを配置
  • フック機能: worktree作成後の自動化処理(ファイルコピー、コマンド実行)
  • @記号での移動: git-gardener cd @ でメインworktreeに瞬時に移動
  • gitignore自動更新: 初期化時に.gardener/を自動で除外設定

インストール

# Cargoから(予定)
cargo install git-gardener

# ソースからビルド
git clone https://github.com/username/git-gardener
cd git-gardener
cargo build --release

使用方法

基本コマンド

# プロジェクトを初期化(最初に実行)
git-gardener init

# 新しいブランチでworktreeを作成
git-gardener add feature/new-feature -b

# 既存ブランチからworktreeを作成
git-gardener add existing-branch

# worktree一覧を表示
git-gardener list

# worktreeに移動(パスを出力)
git-gardener cd feature/new-feature

# メインworktreeに移動
git-gardener cd @

# worktreeを削除
git-gardener remove feature/new-feature

# ブランチも一緒に削除
git-gardener remove feature/new-feature --with-branch

# シェル補完を生成
git-gardener completion bash > ~/.bash_completion.d/git-gardener

初期化

プロジェクトでgit-gardenerを使い始める前に、初期化が必要です:

git-gardener init

このコマンドは以下を実行します:

  • .gardener/ ディレクトリを作成
  • .gitignore.gardener/ エントリを追加
  • デフォルトの .gardener.yml 設定ファイルを生成

既に初期化済みの場合、--force フラグで再初期化できます:

git-gardener init --force

設定ファイル

.gardener.yml ファイルでカスタム設定やフックを定義できます。

version: "1.0"
defaults:
  base_dir: ".gardener"

hooks:
  post_create:
    - type: copy
      from: ".env.example"
      to: ".env"
    
    - type: command
      command: "npm install"
      env:
        NODE_ENV: "development"

フック機能

copyフック

ファイルやディレクトリをworktreeに自動コピー

commandフック

worktree作成後に任意のコマンドを実行

環境変数も利用可能:

  • ${WORKTREE_PATH}: 作成されたworktreeのパス
  • ${BRANCH}: ブランチ名
  • ${REPO_ROOT}: リポジトリのルートパス

開発

必要なツール

  • Rust 1.75以降
  • Git
  • just(推奨)

タスク実行

justを使用してタスクを実行:

# 利用可能なタスクを表示
just

# ビルド
just build

# テスト実行
just test

# フォーマット + リント + テスト
just check

# 特定のテストを実行
just test-module "commands::add"

# デモ実行(機能確認)
just demo-init    # init コマンドのヘルプ
just demo-add     # テスト用worktreeを作成
just demo-list    # worktree一覧表示
just demo-clean   # テスト用データを削除

TDD(テスト駆動開発)

このプロジェクトはt-wada流TDDで開発されています:

# 🔴 Red: 失敗するテストを書く
just test-red "test_new_feature"

# 🟢 Green: テストを通す最小実装
just test-green "test_new_feature"

# 🔵 Refactor: リファクタリング
just test-refactor

プロジェクト構造

git-gardener/
├── src/
│   ├── commands/        # コマンド実装
│   │   ├── init.rs      # プロジェクト初期化
│   │   ├── add.rs       # worktree作成
│   │   ├── list.rs      # worktree一覧
│   │   ├── cd.rs        # worktree移動
│   │   ├── remove.rs    # worktree削除
│   │   └── completion.rs # シェル補完
│   ├── config.rs        # YAML設定ファイル処理
│   ├── git/             # Git操作
│   │   └── worktree.rs
│   ├── hooks.rs         # フック機能
│   └── error.rs         # エラー型定義
├── .gardener/           # worktreeディレクトリ(initで作成)
├── .gardener.yml        # 設定ファイル(initで作成)
├── justfile             # タスクランナー
└── README.md

貢献

  1. このリポジトリをフォーク
  2. フィーチャーブランチを作成 (git-gardener add feature/new-feature -b)
  3. テストを書いて実装
  4. テストが通ることを確認 (just check)
  5. プルリクエストを作成

ライセンス

MIT License

Commit count: 0

cargo fmt