commitly/README.md
2026-01-05 02:42:15 -05:00

62 lines
2.0 KiB
Markdown

# commitly
A CLI tool for making commits to many subrepos after a distributed change.
## Overview
`commitly` is a Babashka/Clojure CLI tool designed for monorepo workflows where multiple independent git repositories coexist. When you make changes that span multiple subrepos (e.g., updating documentation, shared configuration, or architecture changes), `commitly` automates the process of committing those changes across all affected repositories.
## Features
- Automatically detects which subrepos have uncommitted changes
- Creates commits with a single message across all modified subrepos
- Push changes to remote repositories after committing
- View status of all modified repositories
- Reports commit status for each subrepo
- Written in Babashka for fast startup and easy distribution
## Usage
```bash
# Show status of all modified subrepos
./commitly status
# Commit changes across all modified subrepos
./commitly "Your commit message here"
# Commit and push changes
./commitly -p "Your commit message here"
# Push only (without committing)
./commitly -p
```
## Requirements
- [Babashka](https://babashka.org/) installed and available on PATH
## Installation
```bash
# Make the script executable
chmod +x commitly
# Optionally, symlink to a directory in your PATH
ln -s $(pwd)/commitly /usr/local/bin/commitly
```
## How It Works
1. Scans parent directory for git repositories
2. Checks each repository for uncommitted changes (staged or unstaged)
3. Depending on the command:
- `status`: Shows git status for all modified repositories
- `<message>`: Commits changes in each modified repository with the provided message
- `-p <message>`: Commits and pushes changes to remote
- `-p` (no message): Pushes all repositories without committing
4. Reports success/failure for each repository
## Use Case
Perfect for monorepos containing multiple independent services (each with their own `.git` directory) where cross-cutting changes need to be committed atomically with consistent commit messages.