snapshot 2019-08-04 03:21:54.261393
This commit is contained in:
commit
d26021e9fc
11 changed files with 1083 additions and 0 deletions
102
lethe.egg-info/PKG-INFO
Normal file
102
lethe.egg-info/PKG-INFO
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
Metadata-Version: 2.1
|
||||
Name: lethe
|
||||
Version: 0.6
|
||||
Summary: Git-based snapshotting
|
||||
Home-page: https://mpxd.net/code/jan/lethe
|
||||
Author: Jan Petykiewicz
|
||||
Author-email: anewusername@gmail.com
|
||||
License: UNKNOWN
|
||||
Description: # 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
|
||||
```bash
|
||||
$ 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 <current datetime>" is used.
|
||||
- ```-r path/to/repo``` can be provided to specify a repository outside of the current working directory.
|
||||
|
||||
```bash
|
||||
$ cd path/to/repo
|
||||
$ git branch
|
||||
* master
|
||||
$ lethe
|
||||
```
|
||||
is equivalent to
|
||||
```bash
|
||||
lethe -r path/to/repo -p HEAD
|
||||
```
|
||||
or
|
||||
```bash
|
||||
lethe -r path/to/repo -p HEAD -p refs/heads/master -t refs/lethe/HEAD -t refs/lethe/master
|
||||
```
|
||||
|
||||
### Creating a commit programmatically
|
||||
```python
|
||||
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:
|
||||
```bash
|
||||
pip install lethe
|
||||
```
|
||||
|
||||
Keywords: git,snapshot,commit,refs,backup,undo,log,lab notebook,traceability
|
||||
Platform: UNKNOWN
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Development Status :: 4 - Beta
|
||||
Classifier: Environment :: Other Environment
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Intended Audience :: Science/Research
|
||||
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
||||
Classifier: Topic :: Software Development :: Version Control :: Git
|
||||
Classifier: Topic :: Utilities
|
||||
Description-Content-Type: text/markdown
|
||||
Loading…
Add table
Add a link
Reference in a new issue