Skip to main content

SVN-style changelists for Git

Project description

git-cl

A pre-staging layer for organising changes in Git

Tutorial Paper DOI Tests GitHub stars

git-cl is a command-line tool that brings changelist support to Git, inspired by Subversion. It adds a pre-staging review layer that lets you organise modified files into named groups before staging or committing. Changelists can be stashed selectively and promoted to dedicated branches — enabling a late-binding branching workflow where the branch decision follows the code, not the other way around.

Why git-cl?

  • Pre-staging review: group changed files by intent before staging
  • Organise multiple concerns on a single branch
  • Stage and commit changes by intent
  • Stash changelists and resume work later
  • Late-binding branching: promote a changelist to a dedicated branch
  • Local-only metadata (.git/cl.json)
  • Simple CLI: git cl <command>

Demo

git-cl demo: creating changelists, viewing status, and branching

Quick Start

# Install
mkdir -p ~/bin
wget https://raw.githubusercontent.com/BHFock/git-cl/main/git-cl -O ~/bin/git-cl
chmod +x ~/bin/git-cl

# Verify Installation
git cl --version
git cl help

# Use changelists inside a Git repository
git cl add fixup file1.py
git cl status
git cl commit fixup -m "Fix file1"

Make sure ~/bin is listed in your $PATH.

Common Commands

# Add files to a changelist
git cl add docs-fix README.md docs/index.md

# See changes grouped by changelist
git cl status

# Stage or commit changelists
git cl stage docs-fix
git cl commit docs-fix -m "Update documentation layout and intro"

# Keep the changelist after committing
git cl commit docs-fix -m "Fix bug" --keep

# Remove a file from its changelist
git cl remove README.md

# Delete a changelist
git cl delete docs-fix

# Late-binding branching: create a branch from a changelist (auto-stash/unstash)
git cl br docs-fix

Documentation

📘 Tutorial: Guide with examples and FAQ

📘 Design Notes: Technical architecture

📘 Tests: Test suite and shell walkthroughs

📘 Why git-cl?: History and motivation

📘 Paper: Design, workflow, and related work

Notes

  • Requires Python 3.9+ and Git
  • Local-only; designed for single-user workflows
  • Always inspect downloaded scripts before executing, see source
  • For security concerns, see SECURITY

License

BSD 3-Clause — see LICENSE | CONTRIBUTING

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

git_changelists-1.1.2.tar.gz (46.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

git_changelists-1.1.2-py3-none-any.whl (29.5 kB view details)

Uploaded Python 3

File details

Details for the file git_changelists-1.1.2.tar.gz.

File metadata

  • Download URL: git_changelists-1.1.2.tar.gz
  • Upload date:
  • Size: 46.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for git_changelists-1.1.2.tar.gz
Algorithm Hash digest
SHA256 4eefca06c62485ed393b3d50b9bd2597d70fabbf997ff28483af6c2ffe61f073
MD5 f3151482cea7cd7510b3ec5f926d3313
BLAKE2b-256 04223563b35d80a6221695e4b3422ba94da3ff578391bf859302daf3058902b9

See more details on using hashes here.

File details

Details for the file git_changelists-1.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for git_changelists-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5eb0aca2debc6897beadf0404ddbb9aa97de707dd1b08a673cd78a8f9550332b
MD5 74bd5abd747c96f077bbbc175b94a133
BLAKE2b-256 534f892e213415650a779c9ed6c9afce4ff7a3239ab802b966c0a42d16465b52

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page