Skip to content
/ etz Public

Etz (Hebrew for "tree") is a powerful toolset that simplifies managing multiple git worktrees across different repositories. Perfect for teams working with microservices, monorepos, or any multi-repository workflow.

License

Notifications You must be signed in to change notification settings

etz-dev/etz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Etz

Manage git worktrees across multiple related repositories

License: MIT TypeScript

The Problem: You work on features that span multiple repositories (iOS, Android, backend, shared libs). Git worktrees let you work on multiple branches simultaneously, but managing them across repos is tedious - creating the same worktree in each repo, tracking status, cleaning up.

The Solution: Etz treats multiple repositories as a single logical unit. Create worktrees across all repos with one command, see unified status, and clean up everything at once.

Quick Example

# Create worktree "auth-feature" across iOS, Android, and backend repos
etz new auth-feature

# See status across all repos
etz list

# Done? Clean up everything
etz delete auth-feature

What it does

Coordinates worktree operations across multiple independent repositories. Git has git worktree for single repos and git submodule foreach for submodules, but nothing for managing worktrees across independent repos that happen to be related.

Features

  • Create/delete worktrees across multiple repos at once
  • View git status across all repos in a unified list
  • CLI for scripting and automation
  • Desktop app for visual interface
  • Different branch names per repo if needed
  • No submodules or git meta-repo required

Installation

CLI: Not yet published to npm. For now, see Development Setup to build from source.

Desktop App: Download from releases (macOS, Windows, Linux).

Getting Started

1. Install

# CLI (once published to npm)
npm install -g @etz/cli

# Or for development - see Development Setup below

2. Configure

Create ~/.etzconfig.yaml pointing to your repos:

base_branch: main
worktrees_dir: ~/Developer/worktrees
repos:
  - name: ios
    base_path: ~/repos/myapp-ios
  - name: android
    base_path: ~/repos/myapp-android
  - name: backend
    base_path: ~/repos/myapp-api

3. Use it

# Create worktree across all repos
etz new my-feature

# List worktrees and their status
etz list

# Delete when done
etz delete my-feature

Run etz --help for all commands.

How it works

Etz wraps git worktree commands and coordinates them across multiple repos:

  • Reads repo definitions from .etzconfig.yaml
  • Runs worktree operations in parallel with progress indicators
  • Tracks which worktrees belong together across repos (via shared "label")
  • Provides helpers: etz open for launching editors, etz doctor for validation, interactive prompts, etc.

It doesn't reimplement git worktree logic - it coordinates the operations across repos and manages the bookkeeping.

Common Commands

etz new <branch>              # Create worktree across all repos
etz new <branch> -r ios       # Create only in specific repo
etz new -i                    # Interactive mode (prompts for options)
etz list                      # Show all worktrees with status
etz delete <branch>           # Remove worktree from all repos
etz open <branch> <repo>      # Open in editor (VS Code, Cursor, etc.)
etz doctor                    # Check configuration health

See CLI Documentation for complete command reference.

Documentation

Architecture

  • @etz/core - Core library (TypeScript)
  • @etz/cli - Command-line tool
  • @etz/desktop - Electron app

Development Setup

# Clone the repository
git clone https://github.com/etz-dev/etz.git
cd etz

# Install dependencies
npm install

# Build all packages
npm run build

# Run the CLI in development
npm run cli -- list

# Run the desktop app in development
npm run dev:desktop

Quick Commands

# Build everything
npm run build

# Build specific package
npm run build:core
npm run build:cli
npm run build:desktop

# Development mode (watch)
npm run dev:core
npm run dev:cli
npm run dev:desktop

# Run tests
npm test

Roadmap

Current focus (v1.0):

  • Core worktree operations (create, list, delete)
  • Multi-repo configuration
  • CLI and desktop app

Potential future additions:

  • Plugin system for custom commands
  • Team configuration sharing
  • CI/CD integration helpers

Open to feedback on what would be most valuable - see Discussions.

Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

License

MIT - see LICENSE for details.

About

Etz (Hebrew for "tree") is a powerful toolset that simplifies managing multiple git worktrees across different repositories. Perfect for teams working with microservices, monorepos, or any multi-repository workflow.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published