CONTRIBUTING.org

f89140d141a2e5f88ef64660dfc516ebd0af5b48
gitbay/CONTRIBUTING.org rendered · source · history · blame · raw

67 lines · 2577 bytes

 1#+title: contributing to gitbay
 2
 3Development happens on [[https://gitbay.org/krz/gitbay][gitbay.org]] — gitbay is built with gitbay. GitHub
 4is not used.
 5
 6* Getting an account
 7
 8The instance is currently invite-based. Ask for an invite (hello@gitbay.org)
 9and register with the SSH key you will push with:
10
11#+begin_src sh
12ssh git@gitbay.org register --username you --invite <code>
13#+end_src
14
15* The workflow
16
171. 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
232. 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.
263. **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.
304. 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
355. 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
40Read =docs/roadmap.org= for direction. The invariants that reviews will
41hold 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
55Plain, direct prose in code comments, commit messages, and docs — no
56hype, no filler. Commit messages state facts of the change. Match the
57surrounding code; keep diffs surgical.
58
59* Issues
60
61File 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
660BSD. By contributing you agree your work is released under it. No CLA,
67no copyright assignment; sign-off lines are welcome but not required.