documentation

GitFork Docs.

Reference for gitfork.app.

Initial clone.

git clone https://x:demo@gitfork.app/demo/a3f91c.git
Cloning into 'a3f91c'...
warning: You appear to have cloned an empty repository.

HTTP Basic on every request — the username slot is ignored, the password is what matters. The first password presented for a namespace claims it; every later request to any repo under demo must present the same password. The first credential claims the namespace.

demo is the namespace, a3f91c is the repo. Both accept 1–256 chars from A–Z a–z 0–9 . _ -. Namespaces are case-insensitive; repo case is preserved. Any fresh slug materializes on first contact.

Clone from existing.

git clone "https://x:demo@gitfork.app/demo/b7e2d4.git?depth=1&from=github.com/tj/commander.js"
Cloning into 'commander.js'...
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 24 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (24/24), 412.84 KiB | 1.28 MiB/s, done.

?from=<url> seeds the fork from an upstream on first clone. Scheme defaults to https://. ?depth=<N> (1..10000) shallow-imports the last N commits — pair with ?from= for large upstreams. Both parameters apply only at first contact and are ignored afterward.

Expiration and cleanup.

git clone "https://x:demo@gitfork.app/demo/c4d9e2.git?ttl_absolute=5m&ttl_activity=1m"
Cloning into 'c4d9e2'...
warning: You appear to have cloned an empty repository.

?ttl_absolute=<duration> is a hard ceiling measured from created_at. ?ttl_activity=<duration> is an idle timeout that resets on every Git operation. Whichever deadline arrives first evicts the repo; activity cannot extend past the absolute ceiling. Durations accept suffixes s m h d w, bare integer = seconds, max 10 years. Both are first-contact only.

git fetch
fatal: unable to access 'https://gitfork.app/demo/c4d9e2.git/': The requested URL returned error: 410

An expired repo returns 410 Gone with X-GitFork-Expired-Reason: absolute_ttl or activity_ttl. A repo with no TTL persists until deleted.

Git.

cd a3f91c
echo "hello" > README.md
git add -A && git commit -m "init"
[main (root-commit) 8f2a0c1] init
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
git push origin main
To https://gitfork.app/demo/a3f91c.git
 * [new branch]      main -> main

Everything else is plain Git. All other commands work as expected.