Elegant Git is an assistant who carefully automates routine work with Git.
Please visit https://elegant-git.extsoft.pro/ to get started with user documentation or click on the picture 👇👇👇 to see a demo.
- Everyone contributing is governed by the Code of Conduct - please read it
- After, please get familiar with project rules described in CONTRIBUTING.md.
- Make a contribution
🎉🎉🎉 That's all! 🎉🎉🎉
The information below guides you on different aspects of the development process. If you have something which should be quickly available, please propose changes here.
Table of contents
The structure of directories:
.
├── .config/elegant-git/hooks/ <- the repo's own Elegant Git hooks
├── .config/mise/ <- tool versions and project tasks
├── cmd/ <- Go CLI entrypoint
├── docs/ <- user documentation (Jekyll + just-the-docs)
├── internal/ <- Go packages (CLI commands, git, memory, …)
└── install.sh <- the installer published with every release
git elegant … runs the Go binary built from cmd/git-elegant, which is part of the
github.com/extsoft/elegant-git module. Commands live under internal/cli/ as an object-first
Cobra tree (for example work start, repo clone).
- Install mise
- Run
mise run initonce after clone - Use
mise run buildto producedist/git-elegant
- Format and lint:
mise run fix(CI runsmise run check) - Go tests:
mise run test
Edit Markdown files in docs/. The site is organized as Home, Installation, Getting
started, the guide pages, Reference, and About. Installation, Reference, and About nest via
parent front matter of
Just the Docs. Preview locally with
mise run docs-preview (serves at http://localhost:4000; override with DOCS_PORT). The site
deploys to GitHub Pages on pushes to main.
Releases are cut locally by a maintainer with gh installed. Versions
follow CalVer — vYYYY.M.D for a stable release and vYYYY.M.D.hhmm-prerelease for a preview.
mise run release:artifacts <version>cross-compiles the binaries, archives them withLICENSEandREADME.md, writes a.sha256next to every archive, and copiesinstall.shintodist/<version>/mise run release:githubasks for the release type, builds the tag, generates notes from the commits since the last stable tag, and publishes everything withgh release create
