| web/index.html |
| | <!doctype html> |
| | <html lang="en"> |
| | <head> |
| | <meta charset="utf-8"> |
| | <meta name="viewport" content="width=device-width, initial-scale=1"> |
| | <title>git.cosmocr.at</title> |
| | <link rel="stylesheet" href="/_assets/style.css"> |
| | </head> |
| | <body> |
| | <main class="markdown-body"> |
| | <h1>git.cosmocr.at</h1> |
| | <p>Browses git repositories stored in <a href="https://upspin.io">upspin</a>. The |
| | URL path is the upspin path to a bare repository:</p> |
| | <pre><code>https://git.cosmocr.at/<user@domain>/path/to/repo.git/</code></pre> |
| | <h2>Publishing a repository</h2> |
| | <p>Store a bare git repo in upspin (e.g. <code>git init --bare</code> then |
| | <code>git push --all</code> into a copy under your tree) and grant the browser |
| | read access in an upspin <code>Access</code> file in the repo directory:</p> |
| | <pre><code>read,list: git@cosmocr.at |
| | *: you@example.com</code></pre> |
| | <p>Then anyone with the link can browse the repository: summary and README, |
| | branches and tags, commit log and diffs, the file tree, and individual files.</p> |
| + | <h2>Cloning and pushing</h2> |
| + | <p>Browsing and cloning a public repository needs no credentials. Reaching a |
| + | private one, and pushing to any of them, needs a passkey login through the |
| + | <code>git-credential-cosmocr</code> helper. Setting it up is described under |
| + | <a href="/git@cosmocr.at/gitweb.git/blob/main/README.md?render=markdown#authenticating-clients">Authenticating |
| + | (clients)</a>, which also covers the personal access token alternative for CI.</p> |
| | <h2>Demo</h2> |
| | <p>A sample repository lives at |
| | <a href="/git@cosmocr.at/demo.git/">/git@cosmocr.at/demo.git/</a>.</p> |
| + | <h2>Source</h2> |
| + | <p>gitweb serves its own source at |
| + | <a href="/git@cosmocr.at/gitweb.git/">/git@cosmocr.at/gitweb.git/</a>. The |
| + | <a href="/git@cosmocr.at/gitweb.git/blob/main/docs/ARCHITECTURE.md?render=markdown">architecture |
| + | notes</a> describe how browsing, clone, push, and passkey auth fit together.</p> |
| | </main> |
| | </body> |
| | </html> |