Skip to content

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

g1t.sh
58 linesCodeBlameRaw

Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.

The sidebar asks billing whether it is on, not for the account, so no page waits on the card processor1import { Link } from "react-router";
2
Code button: the SSH tab shows the address it will have, disabled, with why it is not on yet3import { cloneUrl, sshUrl, useAddresses } from "../lib/addresses";
The sidebar asks billing whether it is on, not for the account, so no page waits on the card processor4import { AgentSetup } from "./agent-setup";
Merge branch 'mirroring' into artifacts-mode5import { MirrorCloneNote, useRepoMirror } from "./mirror";
The sidebar asks billing whether it is on, not for the account, so no page waits on the card processor6import { CopyLine } from "./ui";
7import { Tabs, TabsContent, TabsList, TabsTrigger } from "./ui/tabs";
8
9/** The ways to get a repository onto a machine or in front of an agent. */
10export function CloneBox({ path }: { path: string }) {
Merge branch 'worktree-agent-aaf03bdceac799c89'11 const addresses = useAddresses();
Merge branch 'mirroring' into artifacts-mode12 // A mirror takes no pushes until someone takes over: it says where to push.
13 const { repo, admin } = useRepoMirror();
14 const mirror = repo && `${repo.namespace}/${repo.name}` === path ? repo.mirror : null;
15 const readOnly = mirror != null && mirror.state !== "takeover";
The sidebar asks billing whether it is on, not for the account, so no page waits on the card processor16 return (
17 <Tabs defaultValue="https">
18 <TabsList>
19 <TabsTrigger value="https">HTTPS</TabsTrigger>
20 <TabsTrigger value="ssh">SSH</TabsTrigger>
21 <TabsTrigger value="agent">Agent</TabsTrigger>
22 </TabsList>
23 <TabsContent value="https">
Merge branch 'worktree-agent-aaf03bdceac799c89'24 <CopyLine text={cloneUrl(addresses, path)} />
Merge branch 'mirroring' into artifacts-mode25 <MirrorCloneNote mirror={mirror} base={`/${path}`} admin={admin} />
26 {!readOnly && (
27 <p className="mt-2 text-xs text-muted">
28 To push, use your username and an{" "}
29 <Link to="/settings/tokens" className="text-fg underline underline-offset-4">
30 access token
31 </Link>{" "}
32 as the password.
33 </p>
34 )}
The sidebar asks billing whether it is on, not for the account, so no page waits on the card processor35 </TabsContent>
36 <TabsContent value="ssh">
Code button: the SSH tab shows the address it will have, disabled, with why it is not on yet37 <CopyLine text={sshUrl(addresses, path)} disabled />
38 <p className="mt-2 text-xs text-muted">
39 Not on yet: git over SSH is waiting on inbound TCP on Cloudflare, which g1t has applied for. Use HTTPS for
40 now; it clones, fetches and pushes the same. Keys you add under{" "}
41 <Link to="/settings/keys" className="text-fg underline underline-offset-4">
42 SSH keys
43 </Link>{" "}
44 will work as soon as SSH is on.
The sidebar asks billing whether it is on, not for the account, so no page waits on the card processor45 </p>
46 </TabsContent>
47 <TabsContent value="agent">
48 <AgentSetup />
49 <p className="mt-2 text-xs text-muted">
50 Then ask it to work on an issue in <span className="font-mono text-fg">{path}</span>.{" "}
51 <Link to="https://docs.g1t.sh/guides/bring-your-own-agent/" className="text-fg underline underline-offset-4">
52 More
53 </Link>
54 </p>
55 </TabsContent>
56 </Tabs>
57 );
58}

This file's history is long; its oldest lines are credited to the oldest commit read.