A CLI-first git forge.

cli forge git self-hosted

https://gitbay.org

control: three reads the web has and no other surface does — log at a ref, archive download, browse-all #49

closed cmc opened this on 2026-08-28 03:35

cmc 2026-08-28 03:35

Three capabilities exist only in the browser, each for the same reason: the handler reads git or the store directly instead of dispatching a command. Grouping them because the cause and the fix are the same shape.

capability web route why it is web-only
commit log at a ref /{owner}/{repo}/log/{ref} repo log takes --limit and --path only; it always reads the default branch
download an archive /{owner}/{repo}/archive/{file} no command produces a tarball
browse all public repositories /explore repo search requires a query, so there is no listing without one

Proposed shapes:

  • repo log <owner/name> [--ref <r>] — the flag repo tree, repo cat and repo blame already take, defaulting to the default branch as now. Smallest of the three, and the most obviously missing: browsing a ref then asking for its history is an ordinary move.
  • repo archive <owner/name> [--ref <r>] [--format tar.gz|zip] — writes the archive to stdout, as release asset get does. Note the name collides with the existing repo archive (the read-only flag); repo download or repo tarball avoids that, or the flag pair could become repo settings archived on|off and free the name.
  • repo list --all or explore [--limit n] [--cursor c] — the public listing, paginated like the other lists.

The archive naming collision is worth deciding before anything is written; I have no strong preference between the options.

Found auditing iOS parity against the web's routes. With #48 (wiki) these are the last four rows where the web can do something no other surface can.

closed by commit ec82c4bca9 by cmc: control: repo log --ref, repo download, explore

2026-08-28 03:48