Commit c1f63e67df
Verified · cmc
Layout: unified · split
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. | ||