git-gardener 0.1.1

A Git worktree management tool
Documentation
# git-gardener

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

## 概要

**git-gardener**は、Git worktreeの管理を簡単にするRust製のCLIツールです。[wtp](https://github.com/satococoa/wtp)にインスパイアされ、直感的で使いやすいインターフェースを提供します。

## 特徴

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

## インストール

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

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

## 使用方法

### 基本コマンド

```bash
# プロジェクトを初期化(最初に実行)
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を使い始める前に、初期化が必要です:

```bash
git-gardener init
```

このコマンドは以下を実行します:
- `.gardener/` ディレクトリを作成
- `.gitignore``.gardener/` エントリを追加
- デフォルトの `.gardener.yml` 設定ファイルを生成

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

```bash
git-gardener init --force
```

### 設定ファイル

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

```yaml
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]https://github.com/casey/just(推奨)

### タスク実行

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

```bash
# 利用可能なタスクを表示
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で開発されています:

```bash
# 🔴 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