···11# pds-git-remote
2233-A git remote helper that stores repositories on an [AT Protocol](https://atproto.com) Personal Data Server (PDS). Push, clone, and fetch git repos using `pds://` URLs — your code lives alongside your Bluesky data.
33+This is not the most efficient way to do git,
44+and is not meant as a replacement for [tangled](https://tangled.org/),
55+or for anything really.
66+77+However it seems to work, and it can be used by anyone with a PDS or a bluesky account,
88+without installing anything additionally on their server.
99+1010+Tangled currently requires the use of a [knot server](https://tangled.org/tangled.org/core/blob/8dd9e59b99e83e757bcadf11a4bda31fc78e6732/docs/knot-hosting.md)
1111+as well as the use of ssh keys for git access
1212+(although from talking with the developers, there is some discussion of
1313+changing things in the future to allow authentication without ssh keys).
1414+1515+pds-git-remote is a git remote helper that stores repositories on an [AT Protocol](https://atproto.com) Personal Data Server (PDS) directly.
1616+```bash
1717+# log in to your PDS
1818+git-remote-pds auth login --pds-url https://your-pds.example.com --handle alice.example.com
1919+2020+# push an existing repo
2121+cd my-project
2222+git remote add pds pds://alice.example.com/my-project
2323+git push pds main
2424+2525+# clone it elsewhere
2626+git clone pds://alice.example.com/my-project
2727+```
428529Repositories are stored as chains of incremental [git bundles](https://git-scm.com/docs/git-bundle) uploaded as PDS blobs, tracked by a mutable state record.
63077-## Quick start
3131+## wip
3232+3333+- I have done basic tests to confirm that it works,
3434+- the design and code could be reviewed
3535+- haven't done any benchmarking
3636+3737+This was actually created as a subtask for a mostly unrelated project (more soon).
3838+3939+## git-ssb <3
4040+4141+primary inspiration was git-ssb. another tool that may
4242+not have been the most efficient way to do git,
4343+but I really loved for multiple reasons ([link](https://scuttlebot.io/apis/community/git-ssb.html))
4444+4545+4646+## quickstart
847948```bash
1049# build
···2564git clone pds://alice.example.com/my-project
2665```
27662828-## How it works
6767+## how it works
29683069Git invokes `git-remote-pds` automatically when it sees a `pds://` URL. The remote helper speaks git's [remote helper protocol](https://git-scm.com/docs/gitremote-helpers) over stdin/stdout.
3170···93132# unit and integration tests (no PDS required)
94133cargo test
951349696-# e2e tests (requires a running PDS — see below)
135135+# e2e tests (used via scripts with docker, see below)
97136cargo test --features e2e
98137```
99138