As a result of the previous commits that implement copy on write semantics, `commit` can now be used to create snapshots. Whenever an Object is committed, its tree is moved to the store and it is being reset, i.e. a new clean workdir is created and the old one discarded. The moved tree is then set as the base of the reset Object. On the next call to `write` the moved tree will be copied over and forms the basis of the Object again. Should nobody want to write to Object after the snapshot, i.e. the `commit`, no copy will be made. NB: snapshots/commits will act now act as synchronization points: if a object with the same treesum, i.e. the very same content already exists, the move (i.e. `store_tree`) will gracefully fail and the existing content will be set as the base for Object. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| __main__.py | ||
| api.py | ||
| buildroot.py | ||
| loop.py | ||
| objectstore.py | ||
| pipeline.py | ||
| remoteloop.py | ||
| sources.py | ||
| tmpfs.py | ||
| treesum.py | ||