melcurial

Many non-engineers have contributions for codebases (static sites, docs, design tweaks, image swaps, etc.) and the learning curve on git is steep. mel is a simplification of a common git flow that makes versioned collaboration more approachable for those non-engineer contributors.

Mission: enable non-engineers to contribute!

Install

macOS/Linux (no sudo). On macOS installs to /opt/homebrew/bin or /usr/local/bin when writable; otherwise to ~/.local/bin.

curl -fsSL https://raw.githubusercontent.com/davefowler/melcurial/main/install.sh | bash

Usage

Use these commands in your project folder. Plain language, safe defaults, and helpful prompts.

Basic commands:
  mel save "message"  # saves your changes and gets the latest from others
  mel status          # shows what changes you've made since saving
  mel publish         # save and publish your work to main
  mel reset           # ditch your changes and start over from main
  mel upgrade         # update mel to the latest version

Troubleshooting:
  If you get "uncommitted changes" errors, run 'mel clear' to stash them first.

mel is also a great tool for engineers who want a smooth, quick workflow. Toggle to advanced mode with mel mode advanced.

Advanced commands:
  mel b <branch name> # create or switch to branch if existing
  mel save "message"  # save your changes and get the latest from others
  mel update          # rebase on the latest from main
  mel status          # shows what changes you've made since saving
  mel diff            # show staged/unstaged diff stats
  mel open            # open remote repo page in your browser
  mel help            # show this help
  mel pr              # go to the page to make a new PR
  mel clear           # stash your uncommitted changes (worktree + untracked)
  mel reset           # restart your branch from the latest main (force-push)
  mel upgrade         # update mel to the latest version
  mel mode <mode>     # switch between "basic" and "advanced" help text
  mel --version|-v    # show CLI version and executable path
  mel <name>          # run configured or package script; supports `--` for extra args

Troubleshooting:
  If you get "uncommitted changes" errors, run 'mel clear' to stash them first.

See Config for scripts, hooks, update strategy, and non‑interactive mode.

How it works

mel is just a wrapper around git. It keeps each person working in their own branch, and automatically pulling in changes from the main branch. If at any point someone gets stuck you can revert to directly using git. We have full documentation explaining each abstracted command.

Team setup

mel can be tailored to your team's specifics through a .mel/config_template.json file. You can add custom scripts, change merge behavior, auto import scripts from packages and more. For a full description checkout the configuration documentation.

Contribute

Right now we need users and feedback! If you have requests, ideas, or contributions, please file an issue or PR on GitHub.