Skip to main content

lethe README

lethe is a Python module for git-based snapshotting.

lethe is intended as a mechanism for creating commits outside the standard git branching/tagging workflows. It is meant to enable additional use-cases without disrupting the standard workflows. Use cases include:

  • Short-lived:
    • On-disk undo log
    • Syncing work-in-progress between computers before it's ready
  • Long-lived:
    • lab notebook: Recording the code / configuration state that resulted in a given output
    • incremental backup: Space-efficient time-based backups of a codebase

Usage

Creating a commit from the command line

$ cd path/to/repo
$ lethe
122d058e375274a186c407f28602c3b14a2cab95

This effectively snapshots the current state of the repository (as would be seen by git add --all) and creates a new commit (122d058e375274a186c407f28602c3b14a2cab95) which points to it. The current branch and index are not changed.

Flags:

  • -p my_parent_ref is used to provide "parent" refs which become the parents of the created commit. If a parent ref is a symbolic ref, both the provided ref and the ref it points to are used as parents. If not present, defaults to -p HEAD.
  • -t ref/lethe/my_target_ref is used to provide "target" refs which will be created/updated to point to the created commit. If not present, defaults to adding an entry of the form -t refs/lethe/my_branch for each parent ref of the form refs/heads/my_branch, and -t refs/lethe/my/refpath for non-head refs of the form refs/my/refpath. All provided parent refs and any dereferenced parent refs are used to generate default target refs. If any of the target refs already exist, the commits they point to become parents of the created commit.
  • -m "my message" sets the commit message for the snapshot. By default, "snapshot " is used.
  • -r path/to/repo can be provided to specify a repository outside of the current working directory.
$ cd path/to/repo
$ git branch
* master
$ lethe

is equivalent to

lethe -r path/to/repo -p HEAD

or

lethe -r path/to/repo -p HEAD -p refs/heads/master -t refs/lethe/HEAD -t refs/lethe/master

Creating a commit programmatically

import lethe
REPO = '/path/to/repo'

commit_sha = lethe.snap(cwd=REPO)
tree_sha = lethe.get_tree(commit_sha, cwd=REPO)

print('Created new commit with hash ' + commit_sha + ' aka refs/lethe/HEAD')
print('Code (tree) state is ' + tree_sha)

Installation

Requirements:

  • python 3 (written and tested with 3.6)
  • git (accessible on the system PATH)

Install with pip:

pip3 install lethe

Metadata

Release files for lethe 0.13

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

Source distribution (sdist)

Source distribution for lethe 0.13
File Size Uploaded
lethe-0.13.tar.gz 30.8 kB Details

Built distribution (wheel)

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

Total release size: 75.7 kB

Release files / lethe-0.13.tar.gz

Download URL lethe-0.13.tar.gz
Size 30.8 kB
Tags Source
SHA-256 checksum
How to use checksums
bbe39ada2992580cfdf1c26578be0d9cfabc4b35299e78522adf908bbbdbf921
BLAKE2b-256 checksum
How to use checksums
50dbbb34b15b85fcdc071c2c5a5cf31151e75d177c1f55362d8427ec8480722f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.6

Release files / lethe-0.13-py3-none-any.whl

Download URL lethe-0.13-py3-none-any.whl
Size 44.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d75b1a1a701e5d15ebb7c72ce6de623336bcbeb71f50124b2602e3a6baa1b4f5
BLAKE2b-256 checksum
How to use checksums
833d7deac2667b0dab1633fd0d8e1da3e64cf944837a910dd18c89bf4a6161ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.6

Release history Release notifications | RSS feed

This release

0.13 This release

2 release files

0.12

2 release files

0.11

2 release files

0.9

2 release files

0.8

2 release files

0.7

2 release files

0.6

2 release files

0.5

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