git@cosmocr.at/gitweb.git @ HEAD · summary refs log
HEAD / web / index.html /
web/index.html · 1.8 KiB · raw
view: Source ☐ force
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!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/&lt;user@domain&gt;/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>