A pull-request based workflow for developing and submitting Clojure patches to Jira.
A good introduction is Developing Clojure patches with Pull Requests.
https://github.com/frenchy64/clojure/pulls
- one branch per directory via git worktree structure
- matrix build using GitHub Actions
- WIP: deploy to clojars
- scripts for local dev
- script to generate patches for Jira
If you want to contribute to Clojure, familiarize yourself with Clojure's development process.
This repo helps contributors develop, submit, screen, and test patches.
- Clone this repo and
cd
into this directory. - Create a new file called
github-user.edn
that contains exactly your GitHub user name. Seegithub-user.edn.sample
for an example for userfrenchy64
. - Fork Clojure to the same GitHub user as
github-user.edn
. For example, userfrenchy64
should fork to frenchy64/clojure. - Run
./clone.sh
to clone your Clojure fork to themaster
folder. Don't develop here! Make new branches (see next section).
- Create a new branch with
./new-branch.sh BRANCH
.- eg.,
./new-branch.sh CLJ-123456-my-patch && cd CLJ-123456-my-patch
- eg.,
- Develop patch in this branch. Push branch to your Clojure fork on GitHub and create a self-PR via
../open-pr.sh
. Develop until the feature is done and the build passes. - In the branch's worktree directory, format a patch via
../format-patch.sh
. Address any trailing whitespace errors. - To test the patch itself, use
./new-branch.sh TEST_BRANCH && cd TEST_BRANCH
to create a fresh branch and call../apply-patch.sh ../REAL_BRANCH/CLJ-123456.patch
. to apply it.
See CHANGELOG.md for version history of this repo. Backwards
compatibility is preserved when possible, usually it's fine to pull main
frequently
but occasionally a tag will be created to mark major "releases".