From f4f6fcf261ddf1bf525b46e95b7c6a3f8ccea1fe Mon Sep 17 00:00:00 2001 From: ryo246912 <73044070+ryo246912@users.noreply.github.com> Date: Sat, 2 May 2026 04:31:54 +0000 Subject: [PATCH] feat: add gitswitch tool and documentation - Added `github:target-ops/gitswitch` to `dot_config/mise/config.toml`. - Created usage guide in `not_config/memo/gitswitch.md`. - Added config sample in `dot_config/gitswitch/config.json.sample`. --- dot_config/gitswitch/config.json.sample | 15 +++++ dot_config/mise/config.toml | 1 + not_config/memo/gitswitch.md | 74 +++++++++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 dot_config/gitswitch/config.json.sample create mode 100644 not_config/memo/gitswitch.md diff --git a/dot_config/gitswitch/config.json.sample b/dot_config/gitswitch/config.json.sample new file mode 100644 index 000000000..9e0c87060 --- /dev/null +++ b/dot_config/gitswitch/config.json.sample @@ -0,0 +1,15 @@ +{ + "identities": [ + { + "id": "personal", + "name": "Your Name", + "email": "personal@example.com" + }, + { + "id": "work", + "name": "Your Name", + "email": "work@example.com" + } + ], + "bindings": [] +} diff --git a/dot_config/mise/config.toml b/dot_config/mise/config.toml index 0b944e167..27217fe61 100644 --- a/dot_config/mise/config.toml +++ b/dot_config/mise/config.toml @@ -63,6 +63,7 @@ cosign = "2.6.2" "github:philschmid/mcp-cli" = "0.3.0" "github:ryo246912/github-markdown-toc.go" = "2.0.1" "github:ryo246912/lazychezmoi" = "0.0.1" +"github:target-ops/gitswitch" = "1.1.2" "github:trasta298/keifu" = "0.3.0" "go:github.com/air-verse/air" = "1.65.1" "go:github.com/atotto/clipboard/cmd/gocopy" = "0.1.4" diff --git a/not_config/memo/gitswitch.md b/not_config/memo/gitswitch.md new file mode 100644 index 000000000..4e975cc92 --- /dev/null +++ b/not_config/memo/gitswitch.md @@ -0,0 +1,74 @@ +# gitswitch 導入・利用ガイド + +[gitswitch](https://github.com/target-ops/gitswitch) は、ディレクトリごとに Git のユーザー情報を自動で切り替えるツールです。 + +## 導入方法 + +このリポジトリでは `mise` を介して `gitswitch` を導入しています。 + +1. **ツールのインストール** + + ```bash + mise install + ``` + +2. **初期化** + 既存の設定から ID を自動検出します。 + ```bash + gitswitch init + ``` + +## 基本的な使い方 + +### アイデンティティの紐付け + +特定のディレクトリ配下で特定のユーザー情報を使うように設定します。 + +```bash +# ~/work 配下で 'work' アイデンティティを使用 +gitswitch use work ~/work + +# ~/personal 配下で 'personal' アイデンティティを使用 +gitswitch use personal ~/personal +``` + +### コミットガードの有効化 + +誤ったユーザー情報でのコミットを防止するために、グローバルなプリコミットフックをインストールします。 + +```bash +gitswitch guard install +``` + +### 状態の確認 + +現在のアイデンティティや各レイヤー(git, ssh, gh, signing)の設定が一致しているか確認します。 + +```bash +gitswitch doctor +``` + +## chezmoi との統合に関する注意点 + +`gitswitch use` を実行すると、`~/.gitconfig` に `includeIf` ブロックが追加されます。 + +```gitconfig +# >>> gitswitch:work +[includeIf "gitdir:~/work/"] + path = ~/.config/gitswitch/identities/work.gitconfig +# <<< gitswitch:work +``` + +このリポジトリは `~/.gitconfig` を `dot_config/git/config.tmpl` から管理しています。`gitswitch` によって `~/.gitconfig` に直接加えられた変更は、次に `chezmoi apply` を実行した際に上書きされて消えてしまいます。 + +### 変更を永続化する方法 + +`gitswitch` による設定を永続化したい場合は、`~/.gitconfig` に追加された内容を `dot_config/git/config.tmpl` に手動で転記してください。 + +1. `~/.gitconfig` の内容を確認 +2. `dot_config/git/config.tmpl` の末尾などに該当の `includeIf` セクションを追記 +3. `chezmoi apply` を実行して反映を確認 + +## 設定のバックアップ + +`dot_config/gitswitch/config.json.sample` を参考に、個人の設定を `~/.config/gitswitch/config.json` に配置することができます。