# j3

Host your git or jj repo in s3.

```
# install once globally with
cargo install j3

# push existing git repo via
git remote add origin j3://<S3 KEY ID>:<S3 SECRET KEY>@<S3 ENDPOINT>/<BUCKET NAME>[/optional/path/within/bucket]
# then git push, pull, fetch should work as expected
```

In addition to pushing and pulling code, if you navigate in your web browser to the index.html page within the bucket's new destination, you should be able to browse the contents of the default branch.

Currently pushes at fetches are pretty slow and inefficient; every version of every file is pushed as a separate s3 object, this can incur nontrivial s3 costs if your repo has many tiny, changing files.
Ideally in the future we would do many uploads in parallel, improve pushes by using a more binary-search like process to determine what is missing on the server, and use packfiles to reduce the number of tiny objects.
