Commit c1f63e67df
Verified · cmc
CONTRIBUTING.org added +67
| @@ -0,0 +1,67 @@ | ||
| 1 | #+title: contributing to gitbay | |
| 2 | ||
| 3 | Development happens on [[https://gitbay.org/krz/gitbay][gitbay.org]] — gitbay is built with gitbay. GitHub | |
| 4 | is not used. | |
| 5 | ||
| 6 | * Getting an account | |
| 7 | ||
| 8 | The instance is currently invite-based. Ask for an invite (hello@gitbay.org) | |
| 9 | and register with the SSH key you will push with: | |
| 10 | ||
| 11 | #+begin_src sh | |
| 12 | ssh git@gitbay.org register --username you --invite <code> | |
| 13 | #+end_src | |
| 14 | ||
| 15 | * The workflow | |
| 16 | ||
| 17 | 1. Fork and branch: | |
| 18 | #+begin_src sh | |
| 19 | gitbay repo fork krz/gitbay # or: ssh git@gitbay.org repo fork krz/gitbay | |
| 20 | gitbay repo clone you/gitbay && cd gitbay | |
| 21 | git checkout -b my-change | |
| 22 | #+end_src | |
| 23 | 2. Make the change. =go build ./...= and =go test ./...= must be green — | |
| 24 | the e2e suite drives real =git=, =ssh=, =sshd=, and =gpg= binaries and | |
| 25 | takes about two minutes. | |
| 26 | 3. **Sign your commits.** =main= requires verified signatures: register | |
| 27 | your signing key (=gitbay auth pgp add= for OpenPGP, or sign with a | |
| 28 | registered SSH key) and make sure your author email is verified on | |
| 29 | your account. Unsigned work cannot merge. | |
| 30 | 4. Push and open a merge request: | |
| 31 | #+begin_src sh | |
| 32 | git push origin my-change | |
| 33 | gitbay mr create krz/gitbay --source you/gitbay:my-change --target main --title "..." | |
| 34 | #+end_src | |
| 35 | 5. Merges are fast-forward only on =main=; if it moves under you, rebase | |
| 36 | and re-push (your reviews go stale on force-push — that is by design). | |
| 37 | ||
| 38 | * What holds the design together | |
| 39 | ||
| 40 | Read =docs/roadmap.org= for direction. The invariants that reviews will | |
| 41 | hold you to: | |
| 42 | ||
| 43 | every control command must work from bare OpenSSH; the registry test | |
| 44 | enforces reachability, and the CLI stays a thin passthrough | |
| 45 | one source of truth: SSH and the JSON API front the same handlers | |
| 46 | the forge never executes repository content, and there is no server | |
| 47 | signing key — server-created commits are honestly unsigned | |
| 48 | private repositories are indistinguishable from nonexistent ones on | |
| 49 | every surface | |
| 50 | all git access goes through the =git= binary; no go-git | |
| 51 | features land with e2e coverage against real binaries, not mocks | |
| 52 | ||
| 53 | * Style | |
| 54 | ||
| 55 | Plain, direct prose in code comments, commit messages, and docs — no | |
| 56 | hype, no filler. Commit messages state facts of the change. Match the | |
| 57 | surrounding code; keep diffs surgical. | |
| 58 | ||
| 59 | * Issues | |
| 60 | ||
| 61 | File at [[https://gitbay.org/krz/gitbay/issues][the tracker]] (=gitbay issue create= from a clone). Check | |
| 62 | =docs/roadmap.org= first — it maps the filed issues to phases. | |
| 63 | ||
| 64 | * License | |
| 65 | ||
| 66 | 0BSD. By contributing you agree your work is released under it. No CLA, | |
| 67 | no copyright assignment; sign-off lines are welcome but not required. | |