| Crates.io | workbloom |
| lib.rs | workbloom |
| version | 0.4.0 |
| created_at | 2025-06-28 04:58:43.222938+00 |
| updated_at | 2025-09-02 04:20:16.721353+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 | 121,645 |
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 cleanupTo automatically change to the worktree directory after setup, add this function to your .bashrc or .zshrc:
workbloom-setup() {
local output=$(workbloom setup "$@")
echo "$output"
# Extract the worktree path and change to it
local worktree_path=$(echo "$output" | grep "📍 Worktree location:" | sed 's/.*: //')
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 output=$(wb s "$@")
echo "$output"
# Extract the worktree path and change to it
local worktree_path=$(echo "$output" | grep "📍 Worktree location:" | sed '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 start a new shell in the worktree directory (default)
workbloom setup feature/my-new-feature
# Or using short alias: wb s feature/my-new-feature
# Setup without starting a shell
workbloom setup feature/my-new-feature --no-shell
# Or using short alias: wb s feature/my-new-feature --no-shell
This will:
# 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