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.

URL shape — /<namespace>/<repo>.git.

namespace
1–256 chars from A–Z a–z 0–9 . _ -. Case-insensitive. First credential to hit it seals it.
repo
Same charset as namespace. Case 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.

Both parameters apply only on first contact and are ignored afterward.

?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.

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.

Both are first-contact only. Whichever deadline arrives first evicts the repo; activity cannot extend past the absolute ceiling.

?ttl_absolute=<duration>
Hard ceiling measured from created_at.
?ttl_activity=<duration>
Idle timeout. Resets on every Git operation.
<duration>
Suffixes s m h d w. Bare integer = seconds. Max 10 years.
git fetch
fatal: unable to access 'https://gitfork.app/demo/c4d9e2.git/': The requested URL returned error: 410

An expired repo returns 410 Gone. A repo with no TTL persists until deleted.

X-GitFork-Expired-Reason
absolute_ttl or activity_ttl.

Plain 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.