| Crates.io | workbloom |
| lib.rs | workbloom |
| version | 0.8.1 |
| created_at | 2025-06-28 04:58:43.222938+00 |
| updated_at | 2026-01-04 02:33:01.90345+00 |
| description | A Git worktree management tool with automatic file copying |
| homepage | https://github.com/chaspy/workbloom |
| repository | https://github.com/chaspy/workbloom |
| max_upload_size | |
| id | 1729513 |
| size | 147,843 |
A Git worktree management tool written in Rust that automates worktree setup and file copying.
cargo install workbloom
cargo install --git https://github.com/chaspy/workbloom.git
git clone https://github.com/chaspy/workbloom.git
cd workbloom
cargo install --path .
Add this alias to your .bashrc or .zshrc for shorter commands:
alias wb='workbloom'
With this alias and the built-in short aliases, you can use:
wb s feature/my-feature instead of workbloom setup feature/my-featurewb c instead of workbloom cleanupBy default, workbloom setup prints only the worktree path to stdout (logs go to stderr).
The CLI cannot change the parent shell's working directory, so use command substitution (or a shell function) to cd.
Use --print-path if you want to force path-only output explicitly.
cd "$(workbloom setup feature/my-feature)"
To automatically change to the worktree directory after setup, add this function to your .bashrc or .zshrc:
workbloom-setup() {
local worktree_path
worktree_path="$(workbloom setup "$@")"
if [ -n "$worktree_path" ] && [ -d "$worktree_path" ]; then
cd "$worktree_path"
echo "📂 Changed to worktree directory: $(pwd)"
fi
}
# Or with the alias:
wb-setup() {
local worktree_path
worktree_path="$(wb s "$@")"
if [ -n "$worktree_path" ] && [ -d "$worktree_path" ]; then
cd "$worktree_path"
echo "📂 Changed to worktree directory: $(pwd)"
fi
}
# Then use: workbloom-setup feature/my-feature
# Or: wb-setup feature/my-feature
# Setup and print the worktree path (default)
workbloom setup feature/my-new-feature
# Or using short alias: wb s feature/my-new-feature
# Setup and start a new shell in the worktree directory
workbloom setup feature/my-new-feature --shell
# Or using short alias: wb s feature/my-new-feature --shell
# Legacy: setup without starting a shell, with human-friendly output
workbloom setup feature/my-new-feature --no-shell
# Or using short alias: wb s feature/my-new-feature --no-shell
This will:
--shell is used--shell, Workbloom starts or reattaches to a tmux session whose name includes the repository and worktree (e.g. wb-workbloom-a1b2c3d4-worktree-feature-my-branch), so different repositories never collide.--no-tmux alongside --shell if you prefer a plain shell instead of tmux.cleanup also terminates the matching tmux sessions (scoped per repository) when it removes their worktree directories, including sessions created by older Workbloom versions that used the legacy naming scheme.# Remove merged worktrees (default)
workbloom cleanup
# Or using short alias: wb c
# Force removal of merged worktrees (skip remote branch checks)
workbloom cleanup --merged --force
# Or using short alias: wb c --merged --force
# Remove worktrees matching a pattern
workbloom cleanup --pattern "feature/old-"
# Or using short alias: wb c --pattern "feature/old-"
# Interactive cleanup
workbloom cleanup --interactive
# Or using short alias: wb c --interactive
# Show merge status of all worktrees
workbloom cleanup --status
# Or using short alias: wb c --status
--force: Skips remote branch checks and removes all merged worktrees (use with caution)
--pattern: Removes worktrees matching the specified pattern--interactive: Prompts for confirmation before removing each worktree--status: Shows the merge status of all branches without removing anythingBy default, Workbloom copies the following files to new worktrees:
.envrc.env.claude/settings.json.claude/settings.local.jsonYou can specify additional files and directories to copy by creating a .workbloom file in your repository root:
# .workbloom - List of files and directories to copy to git worktrees
# One file or directory per line
# Lines starting with # are comments
# Directories should end with /
# Example:
service-account.json
config/database.yml
.secret/credentials.json
certificates/
See .workbloom.example for a complete example.
# Run tests
cargo test
# Build debug version
cargo build
# Build release version
cargo build --release
# Run with debug output
RUST_LOG=debug cargo run -- setup test-branch
古いClaudeのPRレビューコメントが蓄積することを防ぐため、自動的に最小化する機能を提供します。
GitHub Actionsが以下の場合に自動実行されます:
cd scripts
npm install
# PR #123の古いClaudeコメントを最小化
node claude-comment-manager.js 123
# 詳細な使用方法
node claude-comment-manager.js --help
詳細については scripts/README.md を参照してください。
MIT