Ctrl-Z for the filesystem
Project description
endjoy
Ctrl-Z for the filesystem
What is endjoy?
Endjoy is a command line program that allows you to restore all the files in a directory to the state they were in some time ago. Therefore, it allows you to revert modifications, deletions and creations of the files in the watched directory.
With this you can just try out any changes without fear, as you can always revert them with a single command.
Install
sudo pip install endjoy
Usage
ej start # Start recursively monitoring the working directory
# Modify/create/delete some files or directories...
ej revert 5m # Revert changes done in the last five minutes
ej revert 1h # Revert changes done in the last hour
ej checkpoint NAME # Checkpoint the current state of the directory
ej checkpoint # List all the stored checkpoints
# Modify some more files
ej revert NAME # Revert the directory to how it was when the checkpoint NAME was created
ej suicide # Stop monitoring the directory and delete all temporary files created
What makes endjoy different from git?
tl;dr: endjoy is git stash on steroids
The most important difference between git and endjoy is that the latter runs in the background whereas git doesn't, this means that:
- Doesn't require setting explicit checkpoints as with
git commit
- Runs asynchronously, so you don't have to wait for
git
to finish - Doesn't require any action till you need to use it to restore a previous state
If you need complex functionality, like merging different commits/checkpoints or moving forward and backwards between them, git is a better choice, as endjoy is much simpler and doesn't implement that
Why is it called endjoy?
Development
Install from source (requires poetry):
# Optional
virtualenv --python=python3 venv
. venv/bin/activate
# Required
poetry install
# Run
ej
# Run tests
pytest
How does it work?
On start
it spawns a process, that will act as the server, with two threads:
- One thread subscribes to be notified of changes on all the directories especified via inotify and stores all the changes along with a timestamp in shared memory
- Another thread creates a named pipe and listens on it, when endjoy is called again with another command this thread performs whatever command was issued using the data that has been gathered by the first thread (inotify one)
Authors
@luis136 and @corollari
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file endjoy-1.0.0.tar.gz
.
File metadata
- Download URL: endjoy-1.0.0.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.16 CPython/3.7.1 Linux/4.15.0-1028-gcp
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 61811fc1e12fc74788861b79737b88a8e11913aaad39573dc88976817102bbae |
|
MD5 | 1b1e52c2f41a82d5160847b4e7a00b45 |
|
BLAKE2b-256 | f12f9b3f89c0d7bb52d6c91ad79f5a68ade1b643d01329eb54e21fc40fdf68a6 |
File details
Details for the file endjoy-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: endjoy-1.0.0-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.16 CPython/3.7.1 Linux/4.15.0-1028-gcp
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0b33f139638f950c99170f0888f080eab25c5f446c3783a2cdd429d342c13a0 |
|
MD5 | 0b9bc637a1a1176cbb6aa7b3189d0e36 |
|
BLAKE2b-256 | 6ff01bd1f1b3424abf5cd1f8e9b10e669d4686cf48b588a6f15b211f617feda1 |