git-monitor auto-commits all changes to a Git working tree, within a special
branch named "refs/snapshots/refs/heads/<branch>". It has no impact on the
Git repository otherwise, and will not effect your real branches.
It has the following features:
- It is designed to be extremely resource efficient, both in CPU cost and
memory. I wanted something I could run several instances of on my laptop,
without paying much of a battery cost.
This efficiency is achieved by using gitlib with the libgit2 backend. The
current state of the working tree is maintained as a Git object in memory,
and is updated in place before being written back out to disk. Thus, the
amount of computation done remains minimal, as we do not need to rebuild
the Git tree at each iteration (as "git-commit" would do).
- Whenever git-monitor is exited and restarted, the previous snapshot
"branch" is discarded. These are only intended to be viable during and
- By having such a branch, you can easily browse through the diffs of your
changes throughout the day.
By default, every action taken is printed to the console where git-monitor is
run, but it can also be run in silent mode, for example if you choose to
background it for the rest of the day.