Metadata-Version: 2.3
Name: gitatp
Version: 0.5.0
Summary: Git over ATProto
Project-URL: Repository, https://github.com/publicdomainrelay/gitatp.git
Project-URL: Issues, https://github.com/publicdomainrelay/gitatp/issues
Author-email: Public Domain <publicdomainrelay@protonmail.com>
License: Unlicense
Requires-Python: >=3.12
Requires-Dist: aiohttp-asgi>=0.5.2
Requires-Dist: atproto>=0.0.55
Requires-Dist: fastapi>=0.115.5
Requires-Dist: fastui>=0.7.0
Requires-Dist: keyring>=25.5.0
Requires-Dist: markdown2>=2.5.1
Requires-Dist: pydantic>=2.10.2
Requires-Dist: pygments>=2.18.0
Requires-Dist: python-magic>=0.4.27
Requires-Dist: snoop>=0.6.0
Description-Content-Type: text/markdown

# Git over ATProto

You must install [`deno`](https://docs.deno.com/runtime/getting_started/installation/) due to profile pinned post updating not being available in the Python ATProto client APIs yet.

```bash
python -m pip install gitatp

curl -fsSL https://deno.land/install.sh | sh

git config --global user.email $USER@example.com
git config --global user.atproto $USER.atproto-pds.fqdn.example.com
python -m keyring set $USER@example.com password.$USER.atproto-pds.fqdn.example.com

python -m gitatp --repos-directory $HOME/.local/$USER-gitatp-repos

rm -rf my-repo/ && git clone http://localhost:8080/$USER.atproto-pds.fqdn.example.com/my-repo.git && cd my-repo
echo 2222 >> README.md && git add README.md && git commit -sm README.md && git push
```

You can view repo files at: http://localhost:8080/$USER.atproto-pds.fqdn.example.com/my-repo/blob/HEAD/README.md

![Screenshot of web view of code](https://github.com/user-attachments/assets/b7387416-7981-4f2d-bf1c-f3ffe6095f05)

- Features
  - Push to ATProto threads of your own handle
    - **TODO** Enable federation, aka push to others repos via: https://github.com/publicdomainrelay/reference-implementation/issues/8
  - Pull from ATProto threads of any handle
- References
  - https://github.com/publicdomainrelay/reference-implementation/issues/15
  - https://github.com/publicdomainrelay/atprotobin

[![asciicast](https://asciinema.org/a/692702.svg)](https://asciinema.org/a/692702)
