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から(予定)
# ソースからビルド
使用方法
基本コマンド
# プロジェクトを初期化(最初に実行)
# 新しいブランチでworktreeを作成
# 既存ブランチからworktreeを作成
# worktree一覧を表示
# worktreeに移動(パスを出力)
# メインworktreeに移動
# worktreeを削除
# ブランチも一緒に削除
# シェル補完を生成
初期化
プロジェクトでgit-gardenerを使い始める前に、初期化が必要です:
このコマンドは以下を実行します:
.gardener/ディレクトリを作成.gitignoreに.gardener/エントリを追加- デフォルトの
.gardener.yml設定ファイルを生成
既に初期化済みの場合、--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を使用してタスクを実行:
# 利用可能なタスクを表示
# ビルド
# テスト実行
# フォーマット + リント + テスト
# 特定のテストを実行
# デモ実行(機能確認)
TDD(テスト駆動開発)
このプロジェクトはt-wada流TDDで開発されています:
# 🔴 Red: 失敗するテストを書く
# 🟢 Green: テストを通す最小実装
# 🔵 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
貢献
- このリポジトリをフォーク
- フィーチャーブランチを作成 (
git-gardener add feature/new-feature -b) - テストを書いて実装
- テストが通ることを確認 (
just check) - プルリクエストを作成
ライセンス
MIT License