Metadata-Version: 2.3
Name: git-buckets
Version: 0.2.1
Summary: Git over S3: clone, fetch and push repositories backed by an S3 bucket.
Author: Full Duplex Media
Author-email: Full Duplex Media <contact@fullduplex.media>
License: Apache 2.0
Requires-Dist: boto3
Requires-Dist: click
Requires-Dist: fduplex-git-remote-s3
Requires-Dist: keyring
Requires-Dist: packaging
Requires-Python: >=3.14
Description-Content-Type: text/markdown

# git-buckets

The end-user CLI for git-buckets deployments: git repos and Python package registries backed by S3, sitting
behind a private deployment you don't operate.

## Install

```sh
uv tool install git-buckets
```

Gives you `gb`, a `keyring` backend for private package indexes, and a `keyring` CLI.

## Private package indexes

`uv sync` / `pip install` can reach a private index with no login step: the keyring backend turns your ambient
AWS profile into a short-lived token, in-process only, never written to disk.

```sh
export GB_KEYRING_HOSTS=git.example.cloud   # comma-separated allowlist, required
export GB_KEYRING_PROFILE=my-profile        # optional: AWS profile to mint with, else AWS_PROFILE / default chain
```

```toml
[tool.uv]
keyring-provider = "subprocess"

[[tool.uv.index]]
name = "tools"
url = "https://gb@git.example.cloud/packages/tools/pypi/"
explicit = true

[tool.uv.sources]
my-package = { index = "tools" }
```

The `gb@` in the URL is load-bearing: uv only does keyring discovery when the index URL carries a username.

Print a token by hand:

```sh
keyring get https://git.example.cloud/packages/tools/pypi/ gb
```

## Publishing

```sh
gb publish
```

Publishes built distributions (`dist/*` by default) to the package index of the repo behind your project's
`origin` remote. See `gb publish --help` for `--bucket`, `--repo`, `--profile`, and `--dry-run`.

## Troubleshooting

Set `GB_KEYRING_DEBUG=1` to have the backend print one line to stderr explaining why a lookup declined (wrong
username, host not allowlisted, mint failure).

---

`git-buckets-keyring` is deprecated; its backend is merged into this package.
