Skip to main content

bolthole

Automatically backup changes to a directory to git.

Usage

bolthole
    [--ignore GLOB [--ignore ...]]          # autoignored: .git, .gitignore
    [--author AUTHOR] [--message TEXT]      # override your git config
    [--grace SECONDS] [--bundle SECONDS]    # allow for rapid edits to finish
    [--remote NAME [--remote ...]]          # push changes upstream
    [--verbose] [--show-git] [--timeless]
        [--watchdog-debug]                  # control verbosity
    [--dry-run]                             # test it first
    [--once]                                # no ongoing monitoring
    source_dir                              # what to monitor
    [dest_dir]                              # optionally copy to repo

Autocommit a directory

bolthole .

Assumes the directory is already git controlled, and will refuse to start if not. It will commit any outstanding changes. If --once was used, it will then stop, otherwise it will watch for changes until killed, committing them.

Autocommit to a different directory

bolthole project/ pristine-copy/

If pristine-copy doesn't exist, it will copy it and create a git repository there, or it will check that if directory is already git controlled and will refuse to start if not. It will commit any outstanding changes. If --once was used, it will then stop, otherwise it will watch for changes until killed, committing them.

Grace and bundling

The --grace SECONDS option will wait until the amount of time specified has passed before committing the file, and will restart the timer after each change. This way, if a file is being edited repeatedly in a short span of time, the result would be only one commit, not many.

The --bundle SECONDS option allows for multiple file changes to be bundled together in one commit rather than one commit per file, as long as they all happened at roughly the same time. The bundle time is how recently a file needs to have been changed in order to be excluded from the bundle.

For example, with a grace period of five minutes, and a bundle window of one minute:

  • at t = 0m00s — foo.txt is edited, and a timer for it is set for 300 seconds
  • at t = 0m30s — bar.txt is edited, and a timer for it is set for 300s (we now have foo.txt at 270s, bar.txt at 300s)
  • at t = 4m30s — baz.txt is edited, and a timer for it is set for 300s (we now have foo.txt at 30s, bar.txt at 60s, baz.txt at 300s)
  • at t = 5m00s — the foo.txt timer goes off (we now have foo.txt at 0s, bar.txt at 30s, baz.txt at 270s); the changes to foo.txt and bar.txt were both made earlier than the bundle window, and one commit is made with both changes
  • at t = 9m30s — baz.txt is committed

Installation

Bolthole is installed from pypi:

pip install bolthole

Metadata

Release files for bolthole 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bolthole 1.0.2
File Size Uploaded
bolthole-1.0.2.tar.gz 20.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bolthole 1.0.2
File Interpreter ABI Platform
bolthole-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 30.4 kB

Release files / bolthole-1.0.2.tar.gz

Download URL bolthole-1.0.2.tar.gz
Size 20.1 kB
Tags Source
SHA-256 checksum
How to use checksums
385dd951cd23284036303aee82fcf2de3d25abf67adae7a8262ebf924f827a01
BLAKE2b-256 checksum
How to use checksums
3112171be3136412c64e57041f963554f4b0f92a69bef7efd78a4877b51a386b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 20, 2026.

Transparency log

Release files / bolthole-1.0.2-py3-none-any.whl

Download URL bolthole-1.0.2-py3-none-any.whl
Size 10.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
056f574443a9fe46801604e1f8b7ef8f71336a84a9eaacc963745507e8ff84c9
BLAKE2b-256 checksum
How to use checksums
a485cc6cae4390a2a23d695a141dd84906a6b97df23d92f93038feec842b4fc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page