2020-09-19  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/fuse.py:     fuse: caching; inodes for root/host/backup directories

2020-09-19  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/time.py:     util.time: use divmod()

2020-09-18  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/fuse.py, fruitbak/share.py:     fuse: hardlinks

2020-09-18  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/dentry.py, fruitbak/fuse.py,
	fruitbak/pool/agent.py, fruitbak/util/oo.py:     fuse: basic functionality

2020-09-17  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/fuse.py:     fuse: WIP

2020-09-17  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/fuse.py:     fuse: WIP

2020-09-16  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py:     fuse: WIP

2020-06-29  Wessel Dankers <wsl@fruit.je>

	* doc/api-docs.rst, doc/util/click.rst:     remove util.click from docs

2020-06-29  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, debian/control, doc/util/threadpool.rst,
	fruitbak/util/__init__.py, fruitbak/util/clack.py,
	fruitbak/util/click.py:     replace click with argparse

2020-06-21  Wessel Dankers <wsl@fruit.je>

	* doc/api-docs.rst, fruitbak/util/threadpool.py:     util.threadpool: docs (WIP)

2020-06-20  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/time.py:     util.time: dst bug

2020-06-20  Wessel Dankers <wsl@fruit.je>

	* doc/api-docs.rst, doc/util/env.rst, doc/util/time.rst,
	fruitbak/backup.py, fruitbak/util/time.py:     util.time: docs

2020-06-20  Wessel Dankers <wsl@fruit.je>

	* fruitbak/new/backup.py, fruitbak/util/env.py:     new.backup: fix faulty environment value

2020-06-20  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/env.py, fruitbak/util/weak.py:     util.env: fix convert_env()

2020-06-20  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/pool/__init__.py,
	fruitbak/pool/agent.py, fruitbak/pool/storage/lmdb.py,
	fruitbak/transfer/local.py, fruitbak/util/heapmap.py,
	fruitbak/util/locking.py, fruitbak/util/threadpool.py,
	fruitbak/util/time.py:     remove trailing whitespace

2020-06-20  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/env.py, fruitbak/util/fd.py:     util.env: docs

2020-06-20  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/oo.py:     util.oo: use functools.wraps; update docs

2019-10-17  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/fd.py:     util.fd: fix DirEntry.inode() docstring

2019-10-03  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py:     bin/fruitbak: remove debug code

2019-10-02  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/__init__.py:     fruitbak: simplify hashset generation

2019-10-02  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/storage/filesystem.py:     pool.storage.filesystem: strict default permissions

2019-10-02  Wessel Dankers <wsl@fruit.je>

	* fruitbak/share.py:     share: fix multiple remapped hardlink case (reprise)

2019-10-02  Wessel Dankers <wsl@fruit.je>

	* fruitbak/share.py:     share: fix multiple remapped hardlink case

2019-10-02  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py:     bin/fruitbak: backup the slowest hosts first

2019-09-30  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py:     bin/fruitbak: rename do_auto

2019-09-28  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/rsync.py:     transfer.rsync: rsync-fetch now sends nanosecond timestamps

2019-09-26  Wessel Dankers <wsl@fruit.je>

	* fruitbak/share.py:     share: sort out naming confusion over name/path

2019-09-26  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/storage/filesystem.py:     pool.storage.filesystem: use the right re

2019-09-25  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py, fruitbak/host.py:     make sure auto gets set if the host config was not found

2019-09-25  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py, fruitbak/host.py:     report status for top-level includes

2019-09-24  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py:     config: fix undefined variable

2019-09-24  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py, fruitbak/host.py:     include(..., missing_ok); properly fail for missing includes

2019-09-24  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/__init__.py:     fuse experiment

2019-09-23  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py:     fix do_auto bug

2019-09-22  Wessel Dankers <wsl@fruit.je>

	* fruitbak/backup.py, fruitbak/util/time.py:     util.time: make interval calculations more consistent

2019-09-22  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py:     cli: implement --full and --all optional arguments

2019-09-22  Wessel Dankers <wsl@fruit.je>

	* fruitbak/new/backup.py:     new.backup: use flock context manager

2019-09-22  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/local.py:     transfer.local: make onerror work like print_exception

2019-09-22  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/fd.py:     add a flock context manager

2019-09-22  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/strbytes.py:     fix Path detection

2019-09-22  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/filter/encryption.py,
	fruitbak/pool/storage/__init__.py, fruitbak/pool/storage/lmdb.py:     lazy imports for lmdb (not always available) and nacl (buggy)

2019-09-22  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/__init__.py, fruitbak/util/time.py:     util.time: interval calculations

2019-09-22  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/dentry.py, fruitbak/share.py,
	fruitbak/transfer/__init__.py, fruitbak/transfer/rsync.py,
	fruitbak/util/strbytes.py:     various bugfixes

2019-09-16  Wessel Dankers <wsl@fruit.je>

	* debian/control, fruitbak/pool/storage/__init__.py,
	fruitbak/pool/storage/lmdb.py:     make lmdb optional

2019-09-15  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py:     pool: fix docstring escapes

2019-09-15  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/rsync.py:     transfer.rsync: hide 'file has vanished' messages for now

2019-09-14  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/backup.py, fruitbak/new/backup.py,
	fruitbak/new/share.py, fruitbak/pool/storage/lmdb.py,
	fruitbak/transfer/local.py, fruitbak/util/__init__.py,
	fruitbak/util/threadpool.py, fruitbak/util/weakheapmap.py:     util: parse_interval

2019-09-13  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/storage/filesystem.py:     pool.storage.filesystem: skip invalid paths

2019-09-13  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py:     fruitbak: don't try to parallellize hashset generation

2019-09-13  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/backup.py, fruitbak/pool/agent.py,
	fruitbak/util/fd.py, fruitbak/util/locking.py, fruitbak/util/oo.py,
	fruitbak/util/weak.py:     avoid using __dict__ directly

2019-09-12  Wessel Dankers <wsl@fruit.je>

	* fruitbak/backup.py:     backup: add and use ‘age’ property (nanoseconds)

2019-09-12  Wessel Dankers <wsl@fruit.je>

	* fruitbak/backup.py:     backup: add convenience ‘full’ property

2019-09-12  Wessel Dankers <wsl@fruit.je>

	* fruitbak/backup.py:     backup: fix log_tier

2019-09-12  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/backup.py, fruitbak/host.py,
	fruitbak/util/locking.py:     Make iterators as lazy as possible; add locking to Host; enhance
	    unlocked decorator

2019-09-12  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/util/threadpool.py:     util.threadpool: fix bugs

2019-09-12  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/__init__.py:     improve error handling

2019-09-12  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/backup.py:     simplify generate_hashes; fix error handling

2019-09-11  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py:     fix error message

2019-09-11  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py:     work around python/click locale defaults; switch user

2019-09-11  Wessel Dankers <wsl@fruit.je>

	* debian/control:     debian: add lmdb dependency

2019-09-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/pool/handler.py,
	fruitbak/pool/storage/filesystem.py, fruitbak/pool/storage/lmdb.py,
	fruitbak/util/threadpool.py:     adapt ThreadPool to accept fire-and-forget jobs and decommission
	    ThreadPoolExecutor

2019-09-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/storage/__init__.py,
	fruitbak/pool/storage/filesystem.py, fruitbak/pool/storage/lmdb.py:     pool.storage.lmdb: LMDB support

2019-09-09  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/filter/encryption.py:     pool.filter.encryption: tidy up

2019-08-30  Wessel Dankers <wsl@fruit.je>

	* TODO:     todo: ideas for docs

2019-08-14  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/rsync.py:     transfer.rsync: fix double underscores

2019-08-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/new/share.py:     new.share: always return a Hashset from predecessor_hashes()

2019-08-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/rsync.py:     transfer.rsync: rename configurables to have an rsync_ prefix

2019-08-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/threadpool.py:     util.threadpool: make the destructor more robust

2019-08-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/locking.py:     util.locking: threading.Lock can't be subclassed so don't try

2019-08-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/handler.py:     pool.handler: fix % usage

2019-08-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/agent.py:     pool.agent: max_readaheads can now be configured (as
	    ‘pool_max_readaheads’)

2019-08-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py:     pool: max_queue_depth is now configured as
	    ‘pool_max_queue_depth’

2019-08-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py:     config: @configurable now accepts a name

2019-08-10  Wessel Dankers <wsl@fruit.je>

	* compile:     compile: run python in -O mode when packaged

2019-08-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/threadpool.py:     util.threadpool: refactor to (partially) reduce coupling between
	    classes

2019-08-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/locking.py:     util.locking: add NCondition class; simplify assertions in NLock

2019-07-30  Wessel Dankers <wsl@fruit.je>

	* fruitbak/dentry.py, fruitbak/share.py, fruitbak/transfer/local.py:     fix hardlink bug on incremental backups

2019-07-29  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py:     tar: fix major/minor attribute name

2019-07-29  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py:     config: fix configurable_command

2019-07-29  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py:     config: fix env bug

2019-07-28  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py:     handle click version incompatibility

2019-07-28  Wessel Dankers <wsl@fruit.je>

	* fruitbak/host.py:     host: read fallback config correctly

2019-07-28  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/config.py:     rework configurable_property; fix backup.expired

2019-07-28  Wessel Dankers <wsl@fruit.je>

	* fruitbak/backup.py, fruitbak/config.py:     introduce configurable_property; fix backup.expired

2019-07-28  Wessel Dankers <wsl@fruit.je>

	* fruitbak/backup.py:     backup: use configurable_function for expired()

2019-07-28  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py, fruitbak/new/backup.py,
	fruitbak/new/share.py, fruitbak/transfer/rsync.py:     make pre/post-commands accept strings as well as functions

2019-07-28  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/dentry.py:     show hardlinks properly

2019-07-27  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/rsync.py:     transfer.rsync: fix rsync_filter_escape_replace_re.sub
	    invocation

2019-07-26  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/__init__.py, fruitbak/transfer/rsync.py:     kickstart rsync transfers

2019-07-26  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py:     merge environments starting from os.environ

2019-07-26  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/__init__.py, fruitbak/util/env.py:     util.env: utility functions for dealing with process
	    environments

2019-07-25  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py:     config: use ChainMap for lightweight copies

2019-07-25  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py, fruitbak/new/backup.py,
	fruitbak/new/share.py, fruitbak/util/strbytes.py:     bugfixes and compatibility fixes

2019-07-25  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py:     config: pass the config object as a parameter when calling
	    delayed functions

2019-07-25  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, compile, configure.ac, fruitbak/new/__init__.py:     respect autoconf variables

2019-07-25  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/threadpool.py:     util.threadpool: todo

2019-07-24  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/threadpool.py:     util.threadpool: make job.done a property

2019-07-24  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/threadpool.py:     util.threadpool: don't cause wakeups when done

2019-07-24  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/util/__init__.py:     fruitbak.util: make threadpool available

2019-07-24  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/tabulate.py:     util.tabulate: use generic LookupError

2019-07-24  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/threadpool.py:     util.threadpool: get_task() returning None means we reached the
	    end

2019-07-24  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py:     finish fruitbak.pool docstrings

2019-07-24  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/threadpool.py:     fix queue consistency

2019-07-23  Wessel Dankers <wsl@fruit.je>

	* debian/control:     fix debian dependencies

2019-07-23  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/oo.py:     fix fallback usage example

2019-07-23  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/new/share.py, fruitbak/pool/agent.py:     fix use of async reserved word

2019-05-04  Wessel Dankers <wsl@fruit.je>

	* doc/api-docs.rst, doc/dentry.rst, doc/fruitbak.rst, doc/pool.rst,
	doc/util/click.rst, doc/util/fd.rst, doc/util/heapmap.rst,
	doc/util/locking.rst, doc/util/oo.rst, doc/util/strbytes.rst,
	doc/util/tabulate.rst, doc/util/weak.rst, doc/util/weakheapmap.rst,
	fruitbak/__init__.py, fruitbak/pool/__init__.py,
	fruitbak/pool/filter/encryption.py:     pool: partial docstrings

2019-04-27  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py:     pool: simplify exchange_chunk a little

2019-04-27  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py:     fruitbak.Fruitbak methods documented

2019-04-27  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py, fruitbak/pool/agent.py:     pool/agent: make use of the new heapmap functionality

2019-04-27  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py, fruitbak/util/weakheapmap.py:     util.(weak)heapmap: fix docs for peek*() methods

2019-04-27  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py, fruitbak/util/weakheapmap.py:     util.(weak)heapmap: use the appropriate abc parent classes

2019-04-27  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py, fruitbak/util/weakheapmap.py:     util.(weak)heapmap: get, add, remove, discard methods

2019-04-20  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/threadpool.py:     fruitbak.util.threadpool: alternative threadpool implementation

2019-04-19  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/__init__.py, fruitbak/config.py,
	fruitbak/new/share.py, fruitbak/util/locking.py,
	fruitbak/util/oo.py:     document fruitbak.fruitbak     fix lockingdescriptor to handle class access (for __doc__)     rename hashfunc to hash_func

2019-04-19  Wessel Dankers <wsl@fruit.je>

	* fruitbak/host.py:     read common.py file for host configs

2019-03-29  Wessel Dankers <wsl@fruit.je>

	* doc/api-docs.rst, fruitbak/__init__.py:     start documenting the fruitbak module

2019-03-28  Wessel Dankers <wsl@fruit.je>

	* Makefile.am, debian/fruitbak.install:     fix debian package

2019-03-23  Wessel Dankers <wsl@fruit.je>

	* configure.ac:     compile script still needs perl

2019-03-23  Wessel Dankers <wsl@fruit.je>

	* doc/api-docs.rst, doc/util/tabulate.rst,
	fruitbak/util/strbytes.py, fruitbak/util/tabulate.py:     document util.tabulate

2019-03-23  Wessel Dankers <wsl@fruit.je>

	* doc/api-docs.rst, doc/util/click.rst, doc/util/locking.rst,
	fruitbak/util/locking.py:     document util.locking

2019-03-23  Wessel Dankers <wsl@fruit.je>

	* doc/api-docs.rst, doc/util/weakheapmap.rst,
	fruitbak/util/heapmap.py, fruitbak/util/weakheapmap.py:     document util.weakheapmap

2019-03-23  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/rsync.py, fruitbak/util/heapmap.py,
	fruitbak/util/weakheapmap.py:     fix rsync, heapmap, weakheapmap bugs

2019-03-16  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py, fruitbak/util/weakheapmap.py,
	tests/fruitbak/util/heapmap_test.py,
	tests/fruitbak/util/weakheapmap_test.py:     util.(weak)heapmap: implement move_to_end()

2019-03-16  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py:     util.heapmap: factor out _fill_initial

2019-03-16  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/weakheapmap.py:     util.weakheapmap: rename _replace_all to _fill_initial

2019-03-16  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/weakheapmap.py:     util.weakheapmap: fix race condition

2019-03-16  Wessel Dankers <wsl@fruit.je>

	* tests/fruitbak/util/weakheapmap_test.py:     tests.util.weakheapmap_test: added

2019-03-16  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/weakheapmap.py:     util.weakheapmap: reduce memory usage by making WeakMapNode a
	    subclass of weakref.ref

2019-03-16  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py, fruitbak/util/weakheapmap.py:     util.(weak)heapmap: move comparison logic to _compare;
	    weakheapmap now only has one finalizer

2019-03-16  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py, fruitbak/util/weakheapmap.py:     util.(weak)heapmap: rename counter to serial

2019-03-16  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/weakheapmap.py:     util.weakheapmap: use hash(id) instead of hash(key)

2019-03-03  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py, fruitbak/util/weakheapmap.py:     add counters to weakheapmap

2019-03-03  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py:     heapmap: reorder logic to reduce number of comparison calls on
	    value

2019-03-03  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py:     make heapmap use only the < operator

2019-03-03  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py:     fix util.heapmap.setitem

2019-03-03  Wessel Dankers <wsl@fruit.je>

	* .gitignore, fruitbak/util/heapmap.py,
	fruitbak/util/weakheapmap.py, setup.py, tests/__init__.py,
	tests/fruitbak/__init__.py, tests/fruitbak/util/__init__.py,
	tests/fruitbak/util/heapmap_test.py:     make HeapMap stable and add a single unit test

2019-03-02  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/weakheapmap.py:     import stub in util.weakheapmap

2019-03-02  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py, fruitbak/util/weakheapmap.py:     create a proper base class for {Min,Max}[Weak]HeapMap

2019-03-02  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py:     more util.heapmap docs

2019-02-23  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py:     add note about inconsistent comparisons to util.heapmap

2019-02-23  Wessel Dankers <wsl@fruit.je>

	* doc/api-docs.rst, doc/conf.py, doc/util/heapmap.rst,
	doc/util/weak.rst, fruitbak/util/heapmap.py, fruitbak/util/weak.py,
	fruitbak/util/weakheapmap.py:     improve util.weak and util.heapmap docs; update copyright year

2019-02-21  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py, fruitbak/util/locking.py,
	fruitbak/util/weak.py, fruitbak/util/weakheapmap.py:     document util.weak and partially document util.heapmap

2018-12-06  Wessel Dankers <wsl@fruit.je>

	* doc/api-docs.rst, doc/index.rst, doc/util/oo.rst,
	fruitbak/util/__init__.py, fruitbak/util/oo.py:     document util.oo

2018-12-05  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/backup.py, fruitbak/dentry.py,
	fruitbak/host.py, fruitbak/new/backup.py, fruitbak/new/share.py,
	fruitbak/pool/__init__.py, fruitbak/pool/agent.py,
	fruitbak/pool/handler.py, fruitbak/pool/storage/filesystem.py,
	fruitbak/share.py, fruitbak/transfer/__init__.py,
	fruitbak/transfer/local.py, fruitbak/transfer/rsync.py,
	fruitbak/util/__init__.py, fruitbak/util/fd.py,
	fruitbak/util/{clarity.py => oo.py}:     rename Clarity to Initializer

2018-12-05  Wessel Dankers <wsl@fruit.je>

	* doc/api-docs.rst, doc/util/strbytes.rst, fruitbak/util/fd.py,
	fruitbak/util/strbytes.py:     document util.strbytes

2018-12-01  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv.pl, doc/api-docs.rst, doc/util/fd.rst,
	fruitbak/util/clarity.py, fruitbak/util/fd.py,
	fruitbak/util/strbytes.py:     pydocs for util.fd

2018-11-25  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/fd.py:     pydocs

2018-11-22  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/click.py, fruitbak/util/fd.py,
	fruitbak/util/strbytes.py:     pydocs

2018-11-18  Wessel Dankers <wsl@fruit.je>

	* doc/conf.py, doc/dentry.rst, fruitbak/dentry.py,
	fruitbak/util/clarity.py:     dentry doc

2018-11-16  Wessel Dankers <wsl@fruit.je>

	* doc/dentry.rst, fruitbak/dentry.py:     docstrings

2018-11-15  Wessel Dankers <wsl@fruit.je>

	* fruitbak/dentry.py:     docstrings

2018-11-13  Wessel Dankers <wsl@fruit.je>

	* TODO, doc/Makefile, doc/api-docs.rst, doc/conf.py,
	doc/dentry.rst, doc/index.rst, doc/static/.placeholder,
	doc/templates/.placeholder, fruitbak/backup.py, fruitbak/dentry.py,
	fruitbak/share.py:     rudimentary start of documentation

2018-11-13  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/strbytes.py:     strbytes more different

2018-11-12  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py, fruitbak/host.py, fruitbak/new/backup.py,
	fruitbak/new/share.py, fruitbak/util/strbytes.py:     implement backticks()

2018-11-11  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/config.py, fruitbak/new/backup.py,
	fruitbak/transfer/__init__.py, fruitbak/transfer/rsync.py:     one_filesystem for rsync transfer method

2018-11-11  Wessel Dankers <wsl@fruit.je>

	* TODO, fruitbak/__init__.py, fruitbak/backup.py,
	fruitbak/dentry.py, fruitbak/new/backup.py,
	fruitbak/pool/filter/encryption.py,
	fruitbak/pool/storage/filesystem.py, fruitbak/transfer/__init__.py,
	fruitbak/transfer/local.py, fruitbak/transfer/rsync.py,
	fruitbak/util/strbytes.py:     rsync transfer WIP

2018-11-09  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/__init__.py, fruitbak/transfer/rsync.py,
	fruitbak/util/__init__.py, fruitbak/util/strbytes.py:     str/bytes conversion utility functions, tweak filter generation

2018-11-09  Wessel Dankers <wsl@fruit.je>

	* fruitbak/new/backup.py, fruitbak/transfer/__init__.py,
	fruitbak/transfer/local.py, fruitbak/transfer/rsync.py:     rsync transfer method (WIP)

2018-11-07  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/handler.py, fruitbak/pool/storage/__init__.py,
	fruitbak/pool/storage/filesystem.py,
	fruitbak/transfer/rsync/connection.py,
	fruitbak/transfer/rsync/constants.py, fruitbak/transfer/rsyncp.py:     put Storage in fruitbak.pool.storage (and delete old rsync
	    stuff)

2018-10-30  Wessel Dankers <wsl@fruit.je>

	* Build.PL, configure.ac, debian/control, debian/rules,
	lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm:     remove perl bits

2018-10-25  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/rsync/connection.py,
	fruitbak/transfer/rsync/constants.py:     more rsync code

2018-10-23  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/rsync/connection.py:     RsyncConnection with poll

2018-10-23  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/rsync/connection.py:     RsyncConnection with threads

2018-10-11  Wessel Dankers <wsl@fruit.je>

	* TODO, fruitbak/config.py, fruitbak/new/backup.py,
	fruitbak/new/share.py, fruitbak/transfer/local.py:     excludes

2018-10-11  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.py, fruitbak/new/share.py,
	fruitbak/transfer/local.py:     plumbing for exclusions

2018-10-10  Wessel Dankers <wsl@fruit.je>

	* TODO, bin/fruitbak.py, fruitbak/pool/__init__.py,
	fruitbak/pool/filter/encryption.py,
	fruitbak/pool/storage/filesystem.py:     configurable crypto key

2018-10-10  Wessel Dankers <wsl@fruit.je>

	* TODO, fruitbak/pool/filter/__init__.py,
	fruitbak/pool/filter/encryption.py:     crypto basics

2018-10-09  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/filter/compression.py:     more compression algorithms

2018-10-09  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py, fruitbak/pool/filter/__init__.py,
	fruitbak/pool/filter/compression.py, fruitbak/pool/handler.py,
	fruitbak/pool/storage/__init__.py, fruitbak/pool/{ =>
	storage}/filesystem.py:     compression

2018-10-08  Wessel Dankers <wsl@fruit.je>

	* TODO:     exception todos

2018-10-04  Wessel Dankers <wsl@fruit.je>

	* TODO, fruitbak/transfer/rsyncp.py, fruitbak/util/click.py:     add missing files

2018-10-04  Wessel Dankers <wsl@fruit.je>

	* debian/changelog, debian/common.pl, debian/common.py,
	debian/control, debian/{dirs => fruitbak.dirs},
	debian/fruitbak.install, debian/{postinst => fruitbak.postinst},
	debian/global.pl, debian/global.py, debian/install, debian/links,
	debian/rules, setup.py:     improve packaging

2018-09-30  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/filesystem.py, fruitbak/transfer/local.py:     factor out base64 special characters for filesystem pool

2018-10-03  Wessel Dankers <wsl@fruit.je>

	* Makefile.am, bin/{fruitbak => fruitbak.py}, compile,
	configure.ac, debian/compat, debian/control, debian/rules,
	lib/Fruitbak/Transfer/Rsync.pm, lib/Fruitbak/Transfer/Rsync/IO.pm,
	sbin/mount.fruitbak.pl, setup.py:     start on debian packaging

2018-09-30  Wessel Dankers <wsl@fruit.je>

	* fruitbak/backup.py:     use dentry_encode where possible

2018-09-30  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/filesystem.py:     different way to generate temporary filenames

2018-09-29  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/backup.py, fruitbak/new/backup.py,
	fruitbak/share.py, fruitbak/util/clarity.py,
	fruitbak/util/locking.py:     locking for fruitbak, backup, share

2018-09-29  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/host.py,
	fruitbak/new/backup.py, fruitbak/new/share.py,
	fruitbak/pool/agent.py, fruitbak/pool/filesystem.py,
	fruitbak/transfer/local.py, fruitbak/util/__init__.py,
	fruitbak/util/locking.py:     locking for Fruitbak using a proxy class

2018-09-27  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/filesystem.py:     fix benign race condition

2018-09-27  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/backup.py,
	fruitbak/config.py, fruitbak/host.py, fruitbak/new/backup.py,
	fruitbak/new/share.py, fruitbak/pool/filesystem.py,
	fruitbak/share.py, fruitbak/transfer/local.py:     backup --all, pre-empt storing of known chunks

2018-09-26  Wessel Dankers <wsl@fruit.je>

	* fruitbak/backup.py, fruitbak/new/backup.py,
	fruitbak/new/share.py, fruitbak/pool/filesystem.py,
	fruitbak/share.py, fruitbak/transfer/local.py:     true incremental backups

2018-09-26  Wessel Dankers <wsl@fruit.je>

	* fruitbak/backup.py:     fix share init error differently

2018-09-26  Wessel Dankers <wsl@fruit.je>

	* fruitbak/backup.py:     fix share init error

2018-09-26  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/clarity.py:     use builtin method type under a different name

2018-09-25  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/clarity.py:     use builtin method type

2018-09-25  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/pool/__init__.py,
	fruitbak/pool/filesystem.py, fruitbak/pool/handler.py,
	fruitbak/util/__init__.py, fruitbak/util/clarity.py,
	fruitbak/util/{sysopen.py => fd.py}:     rename sysopen class to fd and use the default __new__

2018-09-24  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/backup.py, fruitbak/config.py,
	fruitbak/host.py, fruitbak/new/backup.py, fruitbak/new/share.py,
	fruitbak/pool/filesystem.py, fruitbak/share.py,
	fruitbak/transfer/local.py, fruitbak/util/sysopen.py:     move os functions to sysopen

2018-09-24  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/sysopen.py:     one more sysopen method

2018-09-24  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/backup.py,
	fruitbak/host.py, fruitbak/pool/agent.py,
	fruitbak/pool/filesystem.py:     collect garbage, expire backups

2018-09-24  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/sysopen.py:     add some file functions from os to sysopen as methods

2018-09-23  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/backup.py,
	fruitbak/dentry.py, fruitbak/transfer/local.py:     remove hash/digest naming confusion

2018-09-23  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/new/backup.py,
	fruitbak/new/share.py:     store hashes while making the backup

2018-09-23  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/backup.py,
	fruitbak/share.py:     collect hashes

2018-09-23  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/sysopen.py:     s/close_on_exec/inheritable/g

2018-09-23  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/filesystem.py, fruitbak/util/sysopen.py:     simplify write() code

2018-09-23  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/backup.py, fruitbak/config.py,
	fruitbak/dentry.py, fruitbak/host.py, fruitbak/new/backup.py,
	fruitbak/new/share.py, fruitbak/pool/__init__.py,
	fruitbak/pool/agent.py, fruitbak/pool/filesystem.py,
	fruitbak/pool/handler.py, fruitbak/share.py,
	fruitbak/transfer/local.py, fruitbak/util/__init__.py,
	fruitbak/util/sysopen.py:     make fruitbak.util easier to use

2018-09-23  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/pool/filesystem.py,
	fruitbak/transfer/local.py, fruitbak/util/sysopen.py:     tempfile alternative that supports dir_fd

2018-09-21  Wessel Dankers <wsl@fruit.je>

	* fruitbak/transfer/local.py:     remove prefix path from locally backupped file names

2018-09-21  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/backup.py, fruitbak/config.py,
	fruitbak/host.py, fruitbak/new/backup.py, fruitbak/new/share.py,
	fruitbak/pool/__init__.py, fruitbak/pool/filesystem.py,
	fruitbak/share.py, fruitbak/transfer/local.py,
	fruitbak/util/sysopen.py:     complete dir_fd approach

2018-09-18  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/backup.py, fruitbak/config.py,
	fruitbak/host.py, fruitbak/new/backup.py, fruitbak/new/share.py,
	fruitbak/pool/filesystem.py, fruitbak/share.py,
	fruitbak/transfer/local.py, fruitbak/util/sysopen.py:     fix local backups, start changing everything to dir_fd

2018-09-17  Wessel Dankers <wsl@fruit.je>

	* fruitbak/dentry.py, fruitbak/share.py:     fix dentry

2018-09-17  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/config.py, fruitbak/dentry.py,
	fruitbak/host.py, fruitbak/new/backup.py, fruitbak/new/share.py,
	fruitbak/transfer/local.py, fruitbak/util/sysopen.py:     more code for creating backups

2018-09-16  Wessel Dankers <wsl@fruit.je>

	* fruitbak/new/backup.py, fruitbak/transfer/local.py:     transfer

2018-09-15  Wessel Dankers <wsl@fruit.je>

	* fruitbak/share.py:     remove dentry parsing from share.py

2018-09-15  Wessel Dankers <wsl@fruit.je>

	* fruitbak/dentry.py, fruitbak/new/backup.py,
	fruitbak/new/share.py, fruitbak/share.py, fruitbak/util/clarity.py:     move dentry layout to dentry.py

2018-09-15  Wessel Dankers <wsl@fruit.je>

	* fruitbak/config.py, fruitbak/host.py, fruitbak/new/backup.py,
	fruitbak/new/share.py, fruitbak/pool/filesystem.py,
	fruitbak/util/sysopen.py:     more backup creation structure

2018-09-14  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/locking.py:     use callable instead of isinstance(function)

2018-09-14  Wessel Dankers <wsl@fruit.je>

	* READAHEAD:     readahead idea

2018-09-14  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/backup.py, fruitbak/config.py,
	fruitbak/host.py, fruitbak/new/backup.py, fruitbak/share.py,
	fruitbak/util/clarity.py:     NewBackup

2018-09-13  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/config.py, fruitbak/dentry.py,
	fruitbak/{host/__init__.py => host.py}:     a crappy draft of execve environment management

2018-09-12  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/host/__init__.py,
	fruitbak/util/tabulate.py:     rework host iteration

2018-09-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/dentry.py, fruitbak/pool/agent.py:     separate DentryDigests class for enumerating digests

2018-09-10  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/dentry.py, fruitbak/util/tabulate.py:     detailed listings

2018-09-08  Wessel Dankers <wsl@fruit.je>

	* fruitbak/dentry.py:     dentry.open()

2018-09-07  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/backup.py, fruitbak/pool/agent.py:     locate_path

2018-09-06  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/backup.py, fruitbak/config.py,
	fruitbak/host/__init__.py, fruitbak/pool/__init__.py,
	fruitbak/pool/agent.py, fruitbak/pool/filesystem.py,
	fruitbak/share.py, fruitbak/util/locking.py,
	fruitbak/util/tabulate.py:     lock purity, more informative listings

2018-09-04  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py, fruitbak/pool/agent.py,
	fruitbak/pool/filesystem.py, fruitbak/pool/handler.py,
	fruitbak/util/heapmap.py, fruitbak/util/locking.py,
	fruitbak/util/weakheapmap.py:     has_chunk, locking, naming

2018-09-04  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py, fruitbak/pool/filesystem.py:     split off LinuxFilesystem

2018-09-04  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py, fruitbak/pool/agent.py,
	fruitbak/pool/filesystem.py:     assert locking

2018-09-04  Wessel Dankers <wsl@fruit.je>

	* READAHEAD, bin/fruitbak, fruitbak/pool/__init__.py,
	fruitbak/pool/agent.py, fruitbak/pool/filesystem.py:     parallel pool listings

2018-09-03  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/filesystem.py:     handle readonly filesystems, add has_chunk

2018-09-02  Wessel Dankers <wsl@fruit.je>

	* fruitbak/backup.py, fruitbak/share.py:     do not automatically create share or backup directories

2018-09-02  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/pool/__init__.py,
	fruitbak/pool/filesystem.py, fruitbak/pool/handler.py:     generic pool submit method

2018-09-01  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/filesystem.py:     fix linux specific stuff

2018-09-01  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/pool/filesystem.py:     fancy file creation

2018-08-31  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py:     use assert for assertions

2018-08-31  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py:     reduce heapmap churn

2018-08-31  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/dentry.py, fruitbak/pool/__init__.py:     tar format support

2018-08-30  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/share.py:     listings with hardlinks in the proper order

2018-08-30  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/config.py, fruitbak/share.py:     meer tar

2018-08-28  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/dentry.py, fruitbak/share.py:     multi-file readahead, not generic

2018-08-26  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py:     fruitbak cat

2018-08-26  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py:     fix readahead accounting

2018-08-25  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/pool/__init__.py,
	fruitbak/util/heapmap.py, fruitbak/util/weakheapmap.py:     fix heapmap bug

2018-08-25  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/pool/__init__.py,
	fruitbak/util/heapmap.py, fruitbak/util/weakheapmap.py:     it compiles

2018-08-25  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py:     separate readahead object

2018-08-25  Wessel Dankers <wsl@fruit.je>

	* READAHEAD, bin/fruitbak, fruitbak/pool/__init__.py,
	fruitbak/util/weakheapmap.py:     separate readahead object

2018-08-25  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py:     minheapmap by default

2018-08-22  Wessel Dankers <wsl@fruit.je>

	* READAHEAD, fruitbak/config.py, fruitbak/pool/filesystem.py:     idee voor readahead

2018-08-19  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/config.py,
	fruitbak/dentry.py, fruitbak/pool/filesystem.py, fruitbak/share.py:     improve configuration loading

2018-08-18  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/dentry.py, fruitbak/pool/__init__.py,
	fruitbak/pool/filesystem.py, fruitbak/share.py:     basics of pool operations now seem to work

2018-08-14  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/cli.py, fruitbak/pool/__init__.py,
	fruitbak/pool/filesystem.py:     make direct operations obey queue depth limit

2018-08-13  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/pool/__init__.py,
	fruitbak/pool/filesystem.py, fruitbak/util/heapmap.py:     asynchronous writes

2018-08-06  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/pool/__init__.py,
	fruitbak/pool/filesystem.py, fruitbak/util/__init__.py:     slightly working pool

2018-08-03  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/host/__init__.py:     basic cli functionality using python-click

2018-08-02  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/backup.py,
	fruitbak/host/__init__.py, fruitbak/share.py:     use WeakValueDictionary to ensure unique host/backup/share
	    objects; use __iter__ and __getitem__ for listing and getting

2018-07-26  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/backup.py,
	fruitbak/dentry.py, fruitbak/host/__init__.py, fruitbak/share.py:     meeste weer non-weak

2018-07-25  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/dentry.py, fruitbak/share.py:     parse dentries

2018-02-16  Wessel Dankers <wsl@fruit.je>

	* fruitbak/backup.py, fruitbak/dentry.py, fruitbak/share.py:     parsing dentries

2018-02-15  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/config.py:     use configuration files

2018-02-14  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/fruitbak.py,
	fruitbak/{host.py => host/__init__.py}:     use __init__.py

2018-02-14  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/backup.py, fruitbak/fruitbak.py,
	fruitbak/host.py, fruitbak/share.py:     fix hierarchy

2018-02-14  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/fruitbak.py, fruitbak/host.py,
	fruitbak/share.py, fruitbak/util/weak.py:     fix weakproperty, make hostdir/sharedir less dumb

2018-02-14  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/__init__.py, fruitbak/fruitbak.py,
	fruitbak/host.py, fruitbak/pool/__init__.py, fruitbak/share.py,
	fruitbak/util/weak.py:     some basic classes for accessing backups

2017-07-06  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/__init__.py:     half-finished plumbing

2017-07-01  Wessel Dankers <wsl@fruit.je>

	* fruitbak/cli.py, fruitbak/pool/__init__.py,
	fruitbak/pool/filesystem.py:     gets, puts, deletes

2017-06-28  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/cli.py, fruitbak/pool/__init__.py,
	fruitbak/pool/filesystem.py:     more pieces of the puzzle

2017-06-19  Wessel Dankers <wsl@fruit.je>

	* fruitbak/cli.py, fruitbak/pool.py, fruitbak/pool/__init__.py,
	fruitbak/util/heapmap.py:     pools and agents

2017-06-14  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool.py:     weakrefs as keys

2017-06-13  Wessel Dankers <wsl@fruit.je>

	* READAHEAD, fruitbak/pool.py:     pools and agents

2017-06-12  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, fruitbak/cli.py, fruitbak/pool/filesystem.py,
	fruitbak/pool/handler.py:     threading sandbox

2017-06-11  Wessel Dankers <wsl@fruit.je>

	* READAHEAD:     plan for readahead

2016-11-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py:     heapmap fix

2016-11-10  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/heapmap.py:     fix heapmap bug

2016-10-26  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/clarity.py:     fix clarity.py

2016-10-11  Wessel Dankers <wsl@fruit.je>

	* fruitbak/util/__init__.py, fruitbak/util/clarity.py,
	fruitbak/util/heapmap.py, fruitbak/util/locking.py,
	fruitbak/util/weak.py:     utility classes

2016-09-14  Wessel Dankers <wsl@fruit.je>

	* fruitbak/__init__.py, fruitbak/dentry.py,
	fruitbak/pool/filesystem.py, fruitbak/util/__init__.py,
	fruitbak/util/clarity.py:     add some docstrings

2016-09-13  Wessel Dankers <wsl@fruit.je>

	* fruitbak/pool/filesystem.py:     be smarter about filenames

2016-09-13  Wessel Dankers <wsl@fruit.je>

	* Makefile.am, bin/fruitbak.pl, doc/CACHE, doc/QUEUE, doc/RESTORE,
	doc/TODO, doc/conf/common.pl, doc/conf/global.pl,
	doc/conf/host/pikachu.pl, doc/conf/host/raichuu.pl,
	doc/convert-fmt, doc/import-one, doc/import-rot, doc/import-vms,
	doc/test, fruitbak/pool/filesystem.py, fruitbak/pool/handler.py,
	fruitbak/util/clarity.py, lib/Fruitbak.pm,
	lib/Fruitbak/Backup/Read.pm, lib/Fruitbak/Backup/Write.pm,
	lib/Fruitbak/Command.pm, lib/Fruitbak/Command/Backup.pm,
	lib/Fruitbak/Command/Cat.pm, lib/Fruitbak/Command/GC.pm,
	lib/Fruitbak/Command/Help.pm, lib/Fruitbak/Command/Init.pm,
	lib/Fruitbak/Command/List.pm, lib/Fruitbak/Command/Scrub.pm,
	lib/Fruitbak/Command/Tar.pm, lib/Fruitbak/Config.pm,
	lib/Fruitbak/Config/File.pm, lib/Fruitbak/Config/Global.pm,
	lib/Fruitbak/Config/Host.pm, lib/Fruitbak/Config/Share.pm,
	lib/Fruitbak/Dentry.pm, lib/Fruitbak/Dentry/Hardlink.pm,
	lib/Fruitbak/Expiry.pm, lib/Fruitbak/Expiry/Age.pm,
	lib/Fruitbak/Expiry/All.pm, lib/Fruitbak/Expiry/And.pm,
	lib/Fruitbak/Expiry/Failed.pm, lib/Fruitbak/Expiry/Full.pm,
	lib/Fruitbak/Expiry/Logarithmic.pm, lib/Fruitbak/Expiry/None.pm,
	lib/Fruitbak/Expiry/Not.pm, lib/Fruitbak/Expiry/Or.pm,
	lib/Fruitbak/Host.pm, lib/Fruitbak/Pool.pm,
	lib/Fruitbak/Pool/Iterator.pm, lib/Fruitbak/Pool/Read.pm,
	lib/Fruitbak/Pool/Write.pm, lib/Fruitbak/Share/Cursor.pm,
	lib/Fruitbak/Share/Format.pm, lib/Fruitbak/Share/Read.pm,
	lib/Fruitbak/Share/Write.pm, lib/Fruitbak/Storage.pm,
	lib/Fruitbak/Storage/Compress.pm, lib/Fruitbak/Storage/Encrypt.pm,
	lib/Fruitbak/Storage/Encrypt/Iterator.pm,
	lib/Fruitbak/Storage/Filesystem.pm,
	lib/Fruitbak/Storage/Filesystem/Iterator.pm,
	lib/Fruitbak/Storage/Filter.pm, lib/Fruitbak/Storage/Verify.pm,
	lib/Fruitbak/Transfer/Local.pm, lib/Fruitbak/Util.pm, t/backup.t,
	t/cli.t, t/config.t, t/util.t:     start up a python version

2016-07-23  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/GC.pm:     detect missing chunks in the pool; add poor man's multithreading
	    for gc

2016-06-29  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Scrub.pm:     fix scrub

2016-06-29  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Read.pm:     do not store hashes for backups with exactly zero shares

2016-06-29  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Backup/Read.pm,
	lib/Fruitbak/Command/Scrub.pm, lib/Fruitbak/Host.pm,
	lib/Fruitbak/Share/Read.pm:     store hashes only once for backups with exactly one share

2016-06-27  Wessel Dankers <wsl@fruit.je>

	* debian/control, lib/Fruitbak/Command/Scrub.pm:     dpkg-gencontrol: warning: relation < is deprecated: use << or <=

2016-06-09  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Scrub.pm:     scrub: fix error message

2016-06-07  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Scrub.pm, t/cli.t:     parallel scrub

2016-05-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm:     tweak error message when lock is in use

2016-05-04  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Tar.pm:     avoid an error that only occurs when restoring an empty base
	    directory

2016-03-15  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Dentry/Hardlink.pm:     document Dentry::Hardlink

2016-03-15  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Dentry.pm:     finish Dentry API docs

2016-03-10  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv.pl, bin/fruitbak.pl, debian/control,
	lib/Fruitbak.pm, lib/Fruitbak/Backup/Read.pm,
	lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Command.pm,
	lib/Fruitbak/Config.pm, lib/Fruitbak/Config/Global.pm,
	lib/Fruitbak/Config/Host.pm, lib/Fruitbak/Host.pm,
	lib/Fruitbak/Pool.pm, lib/Fruitbak/Share/Cursor.pm,
	lib/Fruitbak/Share/Format.pm, lib/Fruitbak/Share/Read.pm,
	lib/Fruitbak/Share/Write.pm, lib/Fruitbak/Storage/Encrypt.pm,
	lib/Fruitbak/Storage/Filesystem.pm, sbin/mount.fruitbak.pl:     use Class::Lazy

2016-02-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync/RPC.pm:     clearer error message

2016-02-01  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv.pl, lib/Fruitbak/Pool/Read.pm,
	lib/Fruitbak/Transfer/Rsync.pm, lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm:     Rsync: improve error reporting

2016-02-01  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm, lib/Fruitbak/Transfer/Rsync/IO.pm:     Rsync: add safety checks and streamline the RPC pack() format

2016-01-25  Wessel Dankers <wsl@fruit.je>

	* t/cli.t:     add tests for hardlinks

2016-01-25  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Dentry.pm:     Dentry: automatically set is_hardlink if possible

2016-01-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Tar.pm:     fix tar to use the correct inode information

2016-01-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Command/Backup.pm,
	lib/Fruitbak/Config.pm, lib/Fruitbak/Host.pm:     change Fruitbak::Host::is_valid_name into a class method

2016-01-22  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Dentry.pm,
	lib/Fruitbak/Share/Cursor.pm, lib/Fruitbak/Share/Format.pm,
	lib/Fruitbak/Share/Read.pm, t/backup.t, t/cli.t:     format change: move the hardlink flag to the hardhat flag area

2016-01-22  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Dentry/Hardlink.pm:     fix Dentry::Hardlink typos and parens

2016-01-21  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm:     rsync: delta files may be dummies

2016-01-20  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Host.pm:     do not cache per-host hashsets; they are mutable anyway

2016-01-15  Wessel Dankers <wsl@fruit.je>

	* sbin/mount.fruitbak.pl:     nonopath

2016-01-15  Wessel Dankers <wsl@fruit.je>

	* sbin/mount.fruitbak.pl:     negative error values

2016-01-15  Wessel Dankers <wsl@fruit.je>

	* debian/control:     dependency on libfuse-perl

2016-01-15  Wessel Dankers <wsl@fruit.je>

	* debian/links:     mount wants its mount.foo programs in /sbin

2016-01-15  Wessel Dankers <wsl@fruit.je>

	* Makefile.am, doc/TODO, sbin/mount.fruitbak.pl:     readonly fuse support for browsing backups

2016-01-14  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Dentry/Hardlink.pm:     return the target inode number

2016-01-14  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Tar.pm, lib/Fruitbak/Dentry/Hardlink.pm:     make hardlinks propagate mtime_ns

2016-01-14  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Dentry.pm:     fix Dentry endianness for rdev

2016-01-14  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Read.pm, lib/Fruitbak/Command/List.pm:     protect against shares with an unknown mountpoint

2016-01-14  Wessel Dankers <wsl@fruit.je>

	* t/cli.t:     fix tests to deal with removed inode

2016-01-14  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm:     fruitbak ls: no longer show inode numbers

2015-12-10  Wessel Dankers <wsl@fruit.je>

	* doc/TODO:     adjust TODO

2016-01-13  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm:     fix wholefile logic

2016-01-13  Wessel Dankers <wsl@fruit.je>

	* debian/changelog:     mark version as unreleased

2015-12-13  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm:     implement rsync extra_options

2015-12-13  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm:     implement rsync wholefile support clientside

2015-12-13  Wessel Dankers <wsl@fruit.je>

	* doc/TODO:     postpone local restores, implement new config file types

2015-12-13  Wessel Dankers <wsl@fruit.je>

	* doc/TODO, lib/Fruitbak/Share/Write.pm, t/cli.t:     new configuration structure for transfer methods

2015-12-07  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Expiry/Full.pm:     add 'full' expiration policy

2015-12-07  Wessel Dankers <wsl@fruit.je>

	* doc/TODO, t/cli.t:     update TODO

2015-12-01  Wessel Dankers <wsl@fruit.je>

	* debian/global.pl:     debian: set default user to fruitbak

2015-12-01  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Share/Write.pm:     fix pod bug

2015-12-01  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.pl, debian/control, lib/Fruitbak/Command.pm,
	lib/Fruitbak/Command/Init.pm:     drop privileges if requested

2015-12-01  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Backup.pm:     fix auto logic

2015-11-30  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync/RPC.pm:     document an alternative to the rsync attr serialization format

2015-11-30  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Share/Write.pm:     exclude /media by default

2015-11-28  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.pl:     do not run as root

2015-11-25  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command.pm, lib/Fruitbak/Command/Backup.pm, t/cli.t:     skip backups for hosts with auto=false

2015-11-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Pool/Read.pm:     return the same empty buffer when reading beyond the end

2015-11-24  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv.pl, lib/Fruitbak/Pool/Read.pm:     fix poolreader pread logic by simplifying it

2015-11-23  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm:     typo

2015-11-23  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm, lib/Fruitbak/Transfer/Rsync.pm,
	t/cli.t:     add parent to listing

2015-11-23  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Share/Write.pm:     fix excludes for the root filesystem

2015-11-18  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Local.pm:     handle the case where an entire share is excluded

2015-11-18  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Local.pm:     make local excludes slightly more efficient

2015-11-17  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Share/Write.pm:     provide a default set of excludes

2015-11-17  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Local.pm:     make local excludes slightly more efficient

2015-11-17  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Local.pm:     make local excludes handle .

2015-11-17  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Share/Write.pm, lib/Fruitbak/Transfer/Local.pm,
	lib/Fruitbak/Transfer/Rsync.pm, t/cli.t:     working excludes for local transfers

2015-11-17  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm, t/cli.t:     working excludes for rsync

2015-11-17  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm:     finish and use filter_options in rsync

2015-11-17  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Util.pm, t/util.t:     simplify and test normalize_path

2015-11-13  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm:     human_readable(): 2345 is just as long as 2.3k so don't
	    abbreviate that

2015-11-06  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm:     start of exclusions processing in rsync

2015-11-06  Wessel Dankers <wsl@fruit.je>

	* t/cli.t:     fix timezone/locale dependence of cli test

2015-11-05  Wessel Dankers <wsl@fruit.je>

	* debian/control:     add rsync to the build-deps

2015-11-05  Wessel Dankers <wsl@fruit.je>

	* t/backup.t, t/cli.t:     reenable some unit tests

2015-11-05  Wessel Dankers <wsl@fruit.je>

	* t/cli.t:     test restoring a file using the cli

2015-11-05  Wessel Dankers <wsl@fruit.je>

	* debian/control:     copy the dependencies to the sources for the test scripts

2015-11-05  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv.pl, lib/Fruitbak/Command/Backup.pm,
	lib/Fruitbak/Command/Init.pm, lib/Fruitbak/Transfer/Rsync.pm,
	lib/Fruitbak/Transfer/Rsync/IO.pm:     bugfixes

2015-11-05  Wessel Dankers <wsl@fruit.je>

	* t/backup.t, t/cli.t, t/config.t:     test the cli interface

2015-11-04  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Dentry.pm, lib/Fruitbak/Transfer/Rsync/IO.pm:     fix various compilation errors

2015-11-04  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Dentry.pm, lib/Fruitbak/Transfer/Rsync.pm,
	lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm:     fix a few manpage errors

2015-11-04  Wessel Dankers <wsl@fruit.je>

	* debian/control:     add libmodule-build-perl to the build-deps

2015-10-08  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Write.pm:     bu: --full optie

2015-10-08  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command.pm, lib/Fruitbak/Command/Backup.pm,
	lib/Fruitbak/Command/List.pm, lib/Fruitbak/Host.pm:     bu: --full optie

2015-09-28  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command.pm, lib/Fruitbak/Command/Backup.pm,
	lib/Fruitbak/Dentry.pm:     rudimentary option handling

2014-07-26  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Dentry.pm:     document Fruitbak::Dentry (partially)

2015-03-19  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync/IO.pm:     more docs for Fruitbak::Transfer::Rsync::IO

2015-03-12  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv.pl, lib/Fruitbak/Transfer/Rsync/IO.pm:     some docs for Fruitbak::Transfer::Rsync::IO

2015-03-12  Wessel Dankers <wsl@fruit.je>

	* doc/TODO:     TODO tweaks

2015-03-12  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv.pl, lib/Fruitbak.pm,
	lib/Fruitbak/Backup/Read.pm, lib/Fruitbak/Backup/Write.pm,
	lib/Fruitbak/Command.pm, lib/Fruitbak/Command/Backup.pm,
	lib/Fruitbak/Command/Cat.pm, lib/Fruitbak/Command/GC.pm,
	lib/Fruitbak/Command/Help.pm, lib/Fruitbak/Command/Init.pm,
	lib/Fruitbak/Command/List.pm, lib/Fruitbak/Command/Scrub.pm,
	lib/Fruitbak/Command/Tar.pm, lib/Fruitbak/Config.pm,
	lib/Fruitbak/Config/File.pm, lib/Fruitbak/Config/Global.pm,
	lib/Fruitbak/Config/Host.pm, lib/Fruitbak/Config/Share.pm,
	lib/Fruitbak/Dentry.pm, lib/Fruitbak/Dentry/Hardlink.pm,
	lib/Fruitbak/Expiry.pm, lib/Fruitbak/Expiry/Age.pm,
	lib/Fruitbak/Expiry/All.pm, lib/Fruitbak/Expiry/And.pm,
	lib/Fruitbak/Expiry/Failed.pm, lib/Fruitbak/Expiry/Logarithmic.pm,
	lib/Fruitbak/Expiry/None.pm, lib/Fruitbak/Expiry/Not.pm,
	lib/Fruitbak/Expiry/Or.pm, lib/Fruitbak/Host.pm,
	lib/Fruitbak/Pool.pm, lib/Fruitbak/Pool/Iterator.pm,
	lib/Fruitbak/Pool/Read.pm, lib/Fruitbak/Pool/Write.pm,
	lib/Fruitbak/Share/Cursor.pm, lib/Fruitbak/Share/Format.pm,
	lib/Fruitbak/Share/Read.pm, lib/Fruitbak/Share/Write.pm,
	lib/Fruitbak/Storage.pm, lib/Fruitbak/Storage/Compress.pm,
	lib/Fruitbak/Storage/Encrypt.pm,
	lib/Fruitbak/Storage/Encrypt/Iterator.pm,
	lib/Fruitbak/Storage/Filesystem.pm,
	lib/Fruitbak/Storage/Filesystem/Iterator.pm,
	lib/Fruitbak/Storage/Filter.pm, lib/Fruitbak/Storage/Verify.pm,
	lib/Fruitbak/Transfer/Local.pm, lib/Fruitbak/Transfer/Rsync.pm,
	lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm, lib/Fruitbak/Util.pm:     fix double spaces

2015-03-12  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Expiry/Logarithmic.pm, lib/Fruitbak/Expiry/Not.pm,
	lib/Fruitbak/Share/Write.pm, lib/Fruitbak/Storage/Filesystem.pm,
	lib/Fruitbak/Transfer/Rsync.pm, lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm:     fix tabs

2015-03-12  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm,
	lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm:     document Fruitbak::Transfer::Rsync::RPC

2015-02-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm:     finish Fruitbak::Transfer::Rsync docs

2014-11-28  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm:     start Fruitbak::Transfer::Rsync docs

2014-08-05  Wessel Dankers <wsl@fruit.je>

	* configure.ac:     no-dist-gzip

2014-08-05  Wessel Dankers <wsl@fruit.je>

	* configure.ac:     dist-xz

2014-07-09  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Read.pm, lib/Fruitbak/Share/Read.pm,
	lib/Fruitbak/Share/Write.pm:     docs for Fruitbak::Share::Read

2014-07-06  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.pl:     fix syntax snafu

2014-07-06  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Share/Write.pm:     finish Fruitbak::Share::Write API doc

2014-07-03  Wessel Dankers <wsl@fruit.je>

	* compile:     sort configure variables in scripts

2014-07-03  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.pl:     make fruitbak-rsyncp-recv findable

2014-07-02  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Share/Write.pm:     beetje docs voor Fruitbak::Share::Write

2014-07-02  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Pool.pm:     finish Fruitbak::Pool docs

2014-07-02  Wessel Dankers <wsl@fruit.je>

	* doc/TODO, lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Host.pm,
	lib/Fruitbak/Share/Write.pm:     register backups when done

2014-06-30  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Pool.pm:     part of Fruitbak::Pool doc

2014-06-29  Wessel Dankers <wsl@fruit.je>

	* debian/control:     add cdbs to deps

2014-06-29  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Read.pm:     actually use mountpoint for resolving shares

2014-06-29  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/GC.pm:     debug--

2014-06-29  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Share/Write.pm:     run pre/postcommands with sh -e

2014-06-29  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/{Host => }/Expiry.pm, lib/Fruitbak/{Host =>
	}/Expiry/Age.pm, lib/Fruitbak/{Host => }/Expiry/All.pm,
	lib/Fruitbak/{Host => }/Expiry/And.pm, lib/Fruitbak/{Host =>
	}/Expiry/Failed.pm, lib/Fruitbak/{Host => }/Expiry/Logarithmic.pm,
	lib/Fruitbak/{Host => }/Expiry/None.pm, lib/Fruitbak/{Host =>
	}/Expiry/Not.pm, lib/Fruitbak/{Host => }/Expiry/Or.pm,
	lib/Fruitbak/Host.pm:     rename Fruitbak::Host::Expiry to Fruitbak::Expiry

2014-06-29  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Read.pm, lib/Fruitbak/Pool.pm,
	lib/Fruitbak/Share/Write.pm, lib/Fruitbak/{Pool => }/Storage.pm,
	lib/Fruitbak/{Pool => }/Storage/Compress.pm, lib/Fruitbak/{Pool =>
	}/Storage/Encrypt.pm, lib/Fruitbak/{Pool =>
	}/Storage/Encrypt/Iterator.pm, lib/Fruitbak/{Pool =>
	}/Storage/Filesystem.pm, lib/Fruitbak/{Pool =>
	}/Storage/Filesystem/Iterator.pm, lib/Fruitbak/{Pool =>
	}/Storage/Filter.pm, lib/Fruitbak/{Pool => }/Storage/Verify.pm:     add share_exists method, rename Fruitbak::Pool::Storage to
	    Fruitbak::Storage

2014-06-29  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm:     show index of last backup

2014-06-29  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Backup/Read.pm,
	lib/Fruitbak/Command/List.pm, lib/Fruitbak/Host.pm:     move hashes into place atomically

2014-06-28  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Pool/Storage/Filesystem.pm:     fix default pool directory

2014-06-28  Wessel Dankers <wsl@fruit.je>

	* doc/test, lib/Fruitbak/Config/Global.pm,
	lib/Fruitbak/Config/Host.pm, lib/Fruitbak/Config/Share.pm,
	lib/Fruitbak/Share/Write.pm:     fix pre/postcommands

2014-06-27  Wessel Dankers <wsl@fruit.je>

	* compile:     fix compile script

2014-06-27  Wessel Dankers <wsl@fruit.je>

	* Build.PL, compile:     improve Build.PL

2014-06-25  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm, lib/Fruitbak/Share/Read.pm:     fix error reporting

2014-06-25  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm:     ls: tweak column alignment

2014-06-25  Wessel Dankers <wsl@fruit.je>

	* debian/README.Debian:     fix README.Debian

2014-06-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm:     require either rootdir or confdir for Fruitbak

2014-06-24  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak.pl:     respect $FRUITBAK environment variable

2014-06-24  Wessel Dankers <wsl@fruit.je>

	* debian/postinst:     add postinst script

2014-06-24  Wessel Dankers <wsl@fruit.je>

	* Build.PL, Makefile.am, bin/fruitbak.pl, configure.ac,
	debian/control, debian/dirs, debian/install,
	lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Command/List.pm,
	lib/Fruitbak/Share/Write.pm, t/backup.t, t/config.t:     fix packaging bugs

2014-06-24  Wessel Dankers <wsl@fruit.je>

	* Makefile.am, lib/Fruitbak/Command/List.pm:     more info on shares

2014-06-24  Wessel Dankers <wsl@fruit.je>

	* Build.PL, COPYING, Makefile.am, bin/{fruitbak-rsyncp-recv =>
	fruitbak-rsyncp-recv.pl}, bin/{fruitbak => fruitbak.pl}, compile,
	configure.ac, debian/README.Debian, debian/changelog,
	debian/common.pl, debian/compat, debian/control, debian/copyright,
	debian/dirs, debian/global.pl, debian/rules, debian/source/format,
	debian/source/options, CACHE => doc/CACHE, QUEUE => doc/QUEUE,
	RESTORE => doc/RESTORE, TODO => doc/TODO, doc/conf/common.pl,
	doc/conf/global.pl, doc/conf/host/pikachu.pl,
	doc/conf/host/raichuu.pl, doc/convert-fmt, doc/import-one,
	doc/import-rot, doc/import-vms, doc/test, t/backup.t, t/config.t:     packaging infrastructure

2014-06-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Share/Write.pm:     share-specific environment

2014-06-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Write.pm:     add password environment

2014-06-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm:     fix typo

2014-06-24  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv, lib/Fruitbak/Command/Cat.pm,
	lib/Fruitbak/Command/GC.pm, lib/Fruitbak/Command/Help.pm,
	lib/Fruitbak/Command/Init.pm, lib/Fruitbak/Command/List.pm,
	lib/Fruitbak/Command/Scrub.pm, lib/Fruitbak/Command/Tar.pm,
	lib/Fruitbak/Pool/Storage/Filesystem/Iterator.pm,
	lib/Fruitbak/Share/Read.pm, lib/Fruitbak/Transfer/Local.pm,
	lib/Fruitbak/Transfer/Rsync.pm, lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm:     don't use autodie, it's slow

2014-06-24  Wessel Dankers <wsl@fruit.je>

	* CACHE:     streamline cache algorithm

2014-06-24  Wessel Dankers <wsl@fruit.je>

	* TODO:     update TODO file

2014-06-23  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Backup.pm:     don't start processes if maxjobs == 1

2014-06-23  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm:     fix ls to use the new failed field

2014-06-23  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Backup.pm:     parallel backups

2014-06-23  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Command/Backup.pm,
	lib/Fruitbak/Command/GC.pm, lib/Fruitbak/Command/Init.pm:     global lock, start implementing parallel backups

2014-06-23  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/Lock.pm:     use Guard for locking

2014-06-23  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Config/File.pm,
	lib/Fruitbak/Config/Global.pm, lib/Fruitbak/Config/Host.pm,
	lib/Fruitbak/Config/Share.pm, lib/Fruitbak/Share/Format.pm,
	lib/Fruitbak/Share/Write.pm:     sort out pre- and postcommands for hosts and shares

2014-06-23  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Read.pm, lib/Fruitbak/Backup/Write.pm,
	lib/Fruitbak/Host.pm, lib/Fruitbak/Host/Expiry/{Status.pm =>
	Failed.pm}, lib/Fruitbak/Host/Expiry/Logarithmic.pm:     refactor status into failed and split up backup::run

2014-06-23  Wessel Dankers <wsl@fruit.je>

	* CACHE:     idea for cache manager

2014-06-22  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Share/Write.pm:     first go at backup pre/postcommands

2014-06-22  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm, lib/Fruitbak/Dentry.pm,
	lib/Fruitbak/Share/Format.pm:     new attrformat

2014-06-21  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv, lib/Fruitbak/Command.pm,
	lib/Fruitbak/Command/Scrub.pm, lib/Fruitbak/Dentry.pm,
	lib/Fruitbak/Dentry/Hardlink.pm, lib/Fruitbak/Share/Read.pm,
	lib/Fruitbak/Share/Write.pm, lib/Fruitbak/Transfer/Rsync.pm:     implement scrub, make rsync more robust

2014-06-20  Wessel Dankers <wsl@fruit.je>

	* TODO:     error hierarchy

2014-06-20  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm:     document Fruitbak::Command::List

2014-06-20  Wessel Dankers <wsl@fruit.je>

	* README => TODO:     update TODO

2014-06-20  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Read.pm, lib/Fruitbak/Backup/Write.pm:     Fruitbak::Backup::Read manpage

2014-06-20  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Host.pm:     pod bug, thanks joostvb

2014-06-16  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Write.pm:     document Fruitbak::Backup::Write

2014-06-16  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Config/File.pm,
	lib/Fruitbak/Host/Expiry/Not.pm:     bugs

2014-06-16  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Backup/Read.pm,
	lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Command/List.pm,
	lib/Fruitbak/Host.pm, lib/Fruitbak/Share/Write.pm,
	lib/Fruitbak/Transfer/Local.pm, lib/Fruitbak/Transfer/Rsync.pm:     sort out levels, types and refbackups

2014-06-16  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Host.pm:     document Fruitbak::Host

2014-06-16  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Host.pm:     host: docs

2014-06-16  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm:     nicer regex for list

2014-06-16  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm:     list: laat devices goed zien

2014-06-16  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm:     hergebruik Host-objecten

2014-06-16  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Backup/Read.pm:     gebruik ook name share bij resolven (als fallback)

2014-06-16  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Config.pm, lib/Fruitbak/Host.pm:     sort out hosts defined in config or on disk

2014-06-16  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Host.pm:     Fruitbak(3pm) manpage, change hosts, backups and hashes to subs

2014-06-15  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv, lib/Fruitbak/Transfer/Rsync.pm,
	lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/Lock.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm:     various rsync checks and fixes

2014-06-15  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Host.pm,
	lib/Fruitbak/Share/Write.pm, lib/Fruitbak/Transfer/Rsync.pm:     sort out environment

2014-06-14  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Config/Global.pm, lib/Fruitbak/Config/Host.pm:     prevent code config from being evaluated twice

2014-06-14  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv, lib/Fruitbak/Backup/Read.pm,
	lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Command/Cat.pm,
	lib/Fruitbak/Command/List.pm, lib/Fruitbak/Command/Tar.pm,
	lib/Fruitbak/Host.pm, lib/Fruitbak/Share/Read.pm,
	lib/Fruitbak/Share/Write.pm, lib/Fruitbak/Transfer/Local.pm,
	lib/Fruitbak/Transfer/Rsync.pm:     local transfer method

2014-06-14  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Share/Write.pm, lib/Fruitbak/Transfer/Local.pm,
	lib/Fruitbak/Transfer/Rsync.pm, lib/Fruitbak/Util.pm:     local backup method

2014-06-11  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv, lib/Fruitbak/Share/Write.pm,
	lib/Fruitbak/Transfer/Rsync.pm:     beginnetje met transfer config

2014-06-11  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Pool/Write.pm, lib/Fruitbak/Transfer/Rsync.pm:     poging tot gebruik hashsets

2014-06-10  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync/RPC.pm:     gebruik sysread

2014-06-09  Wessel Dankers <wsl@fruit.je>

	* README, lib/Fruitbak/Host.pm, lib/Fruitbak/Host/Expiry/All.pm,
	lib/Fruitbak/Host/Expiry/Logarithmic.pm,
	lib/Fruitbak/Host/Expiry/None.pm,
	lib/Fruitbak/Host/Expiry/Status.pm:     geavanceerdere policy

2014-06-09  Wessel Dankers <wsl@fruit.je>

	* README:     expiry geïmplementeerd

2014-06-09  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Tar.pm:     fix tar for-loop

2014-06-09  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Command/GC.pm,
	lib/Fruitbak/Host.pm, lib/Fruitbak/{ => Host}/Expiry.pm,
	lib/Fruitbak/{ => Host}/Expiry/Age.pm, lib/Fruitbak/{ =>
	Host}/Expiry/And.pm, lib/Fruitbak/{ => Host}/Expiry/Logarithmic.pm,
	lib/Fruitbak/{ => Host}/Expiry/Not.pm, lib/Fruitbak/{ =>
	Host}/Expiry/Or.pm:     verplaats expiry naar hosts

2014-06-09  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Config/File.pm, lib/Fruitbak/Config/Global.pm,
	lib/Fruitbak/Config/Host.pm, lib/Fruitbak/Share/Write.pm,
	lib/Fruitbak/Transfer/Rsync.pm:     fix configfiles

2014-06-09  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Config/Global.pm, lib/Fruitbak/Config/Host.pm:     korter

2014-06-09  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Config/Global.pm, lib/Fruitbak/Config/Host.pm:     handiger

2014-06-09  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Config.pm, lib/Fruitbak/Config/File.pm,
	lib/Fruitbak/Config/Global.pm, lib/Fruitbak/Config/Host.pm:     refactor configuratiefilelezen

2014-06-08  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv, lib/Fruitbak.pm,
	lib/Fruitbak/Command/GC.pm, lib/Fruitbak/Expiry.pm,
	lib/Fruitbak/Expiry/Age.pm, lib/Fruitbak/Expiry/And.pm,
	lib/Fruitbak/Expiry/Logarithmic.pm, lib/Fruitbak/Expiry/Not.pm,
	lib/Fruitbak/Expiry/Or.pm, lib/Fruitbak/Host.pm,
	lib/Fruitbak/Util.pm:     expiry policies

2014-06-08  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/GC.pm, lib/Fruitbak/Share/Read.pm,
	lib/Fruitbak/Share/Write.pm:     Hardhat → File::Hardhat

2014-06-08  Wessel Dankers <wsl@fruit.je>

	* README, lib/Fruitbak/Command/GC.pm:     garbage collection

2014-06-08  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Backup/Read.pm,
	lib/Fruitbak/Command/GC.pm, lib/Fruitbak/Host.pm,
	lib/Fruitbak/Share/Format.pm, lib/Fruitbak/Share/Read.pm,
	lib/Fruitbak/Share/Write.pm:     genereer hashsets

2014-06-01  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Pool/Storage/Encrypt.pm,
	lib/Fruitbak/Pool/Storage/Encrypt/Iterator.pm,
	lib/Fruitbak/Pool/Storage/Filter.pm,
	lib/Fruitbak/Pool/Storage/Verify.pm:     encryptie anders, verify plugin

2014-06-01  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Pool/Storage/Encrypt.pm:     openssl random_bytes doet raar als numbytes == 0

2014-05-31  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Pool/Storage/Encrypt.pm,
	lib/Fruitbak/Pool/Storage/Filesystem/Iterator.pm:     encryptie anders

2014-05-26  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command.pm, lib/Fruitbak/Command/Cat.pm,
	lib/Fruitbak/Command/GC.pm, lib/Fruitbak/Command/Tar.pm,
	lib/Fruitbak/Pool.pm, lib/Fruitbak/Pool/Iterator.pm,
	lib/Fruitbak/Pool/Storage/Filesystem.pm,
	lib/Fruitbak/Pool/Storage/Filesystem/Iterator.pm,
	lib/Fruitbak/Pool/Storage/Filter.pm:     iterators

2014-05-26  Wessel Dankers <wsl@fruit.je>

	* README, lib/Fruitbak/Dentry.pm, lib/Fruitbak/Pool.pm,
	lib/Fruitbak/Pool/Write.pm, lib/Fruitbak/Transfer/Rsync.pm:     onveranderde chunks niet opslaan

2014-05-26  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Dentry.pm,
	lib/Fruitbak/Share/Write.pm, lib/Fruitbak/Transfer/Rsync.pm:     streamline wat accessors

2014-05-26  Wessel Dankers <wsl@fruit.je>

	* QUEUE:     tweak queue api

2014-05-26  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Pool/Storage/Filesystem.pm:     gebruik sysread voor filesystem storage

2014-05-26  Wessel Dankers <wsl@fruit.je>

	* README:     dedup readme

2014-05-25  Wessel Dankers <wsl@fruit.je>

	* README, lib/Fruitbak/Pool.pm,
	lib/Fruitbak/Pool/Storage/Encrypt.pm:     add encryption

2014-05-25  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Pool/Storage/Compress.pm,
	lib/Fruitbak/Pool/Storage/Filter.pm:     add a compression filter

2014-05-25  Wessel Dankers <wsl@fruit.je>

	* QUEUE, README, lib/Fruitbak.pm, lib/Fruitbak/Command/Cat.pm,
	lib/Fruitbak/Command/Tar.pm, lib/Fruitbak/Pool.pm,
	lib/Fruitbak/Pool/Read.pm, lib/Fruitbak/Pool/Storage.pm,
	lib/Fruitbak/Pool/Storage/Filesystem.pm,
	lib/Fruitbak/Pool/Write.pm, lib/Fruitbak/Transfer/Rsync.pm,
	lib/Fruitbak/Transfer/Rsync/IO.pm:     api voor queues

2014-05-25  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Tar.pm, lib/Fruitbak/Dentry.pm,
	lib/Fruitbak/Dentry/Hardlink.pm, lib/Fruitbak/Transfer/Rsync.pm:     handle restoring unreadable files

2014-05-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm, lib/Fruitbak/Command/Tar.pm:     fix directory reading, quoting

2014-05-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm, lib/Fruitbak/Util.pm:     ls: unicode, afronden

2014-05-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm:     ls: efficiënter cursorgebruik

2014-05-24  Wessel Dankers <wsl@fruit.je>

	* README:     TODO

2014-05-24  Wessel Dankers <wsl@fruit.je>

	* README, lib/Fruitbak/Command/List.pm, lib/Fruitbak/Command/Tar.pm:     tar: fix hardlinks

2014-05-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Tar.pm, lib/Fruitbak/Pool/Read.pm:     tar: lange bestandsnamen

2014-05-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Tar.pm:     fix tar length field

2014-05-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Tar.pm:     fix checksum field

2014-05-24  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Tar.pm, lib/Fruitbak/Share/Cursor.pm,
	lib/Fruitbak/Share/Format.pm, lib/Fruitbak/Share/Read.pm:     tar: it compiles

2014-05-23  Wessel Dankers <wsl@uvt.nl>

	* lib/Fruitbak/Command.pm, lib/Fruitbak/Command/Tar.pm:     basic logic for tar command

2014-05-23  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Tar.pm:     wat ongeteste code voor tar

2014-05-20  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/Tar.pm:     beginnetje met tar

2014-05-20  Wessel Dankers <wsl@fruit.je>

	* README, lib/Fruitbak/Command/Cat.pm,
	lib/Fruitbak/Command/List.pm, lib/Fruitbak/Dentry.pm,
	lib/Fruitbak/Dentry/Hardlink.pm, lib/Fruitbak/Share/Read.pm,
	lib/Fruitbak/Transfer/Rsync.pm:     untangle dentry hardlink info

2014-05-19  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Read.pm, lib/Fruitbak/Command/Cat.pm,
	lib/Fruitbak/Command/List.pm, lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm:     fix cat, parse_attrs, resolve_share

2014-05-19  Wessel Dankers <wsl@uvt.nl>

	* bin/fruitbak-rsyncp-recv, lib/Fruitbak/Transfer/Rsync/IO.pm:     tweak locking

2014-05-19  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Read.pm, lib/Fruitbak/Command/List.pm,
	lib/Fruitbak/Util.pm:     shares relaxter resolven

2014-05-18  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command.pm, lib/Fruitbak/Command/Cat.pm,
	lib/Fruitbak/Dentry.pm, lib/Fruitbak/Share/Read.pm,
	lib/Fruitbak/Transfer/Rsync.pm:     implementeer cat

2014-05-18  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command/List.pm:     tweak list

2014-05-18  Wessel Dankers <wsl@fruit.je>

	* README, lib/Fruitbak/Backup/Read.pm, lib/Fruitbak/Command.pm,
	lib/Fruitbak/Command/List.pm, lib/Fruitbak/Host.pm:     cli browsen

2014-05-18  Wessel Dankers <wsl@fruit.je>

	* README:     werk README bij

2014-05-18  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync/Lock.pm:     raii locking dingie

2014-05-18  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv, lib/Fruitbak/Transfer/Rsync.pm:     procesbeheer

2014-05-18  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv:     gebruik eerste lock handle voor eigen proces

2014-05-18  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync/IO.pm:     gebruik pipe-semantiek voor impliciete locking

2014-05-18  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Read.pm, lib/Fruitbak/Backup/Write.pm,
	lib/Fruitbak/Pool.pm, lib/Fruitbak/Pool/Read.pm,
	lib/Fruitbak/Pool/Write.pm, lib/Fruitbak/Share/Read.pm,
	lib/Fruitbak/Share/Write.pm, t/backup.t:     rip out compression stuff for now

2014-05-18  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv, lib/Fruitbak/Transfer/Rsync.pm,
	lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm:     locking

2014-05-17  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm,
	lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm:     fix csumStart

2014-05-17  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv, lib/Fruitbak/Dentry.pm,
	lib/Fruitbak/Share/Read.pm, lib/Fruitbak/Transfer/Rsync.pm,
	lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm:     rpc werkt

2014-05-17  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak-rsyncp-recv, lib/Fruitbak/Share/Write.pm,
	lib/Fruitbak/Transfer/Rsync.pm, lib/Fruitbak/Transfer/Rsync/IO.pm,
	lib/Fruitbak/Transfer/Rsync/RPC.pm:     it compiles

2014-05-12  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Dentry.pm, lib/Fruitbak/Transfer/Rsync/IO.pm:     fix filetypes

2014-05-12  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Command.pm, lib/Fruitbak/Dentry.pm,
	lib/Fruitbak/Pool.pm, lib/Fruitbak/Pool/Read.pm,
	lib/Fruitbak/Pool/Write.pm, lib/Fruitbak/Transfer/Rsync/IO.pm:     fix bugs

2014-05-11  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync.pm, lib/Fruitbak/Transfer/Rsync/IO.pm:     altijd --block-size doen

2014-05-11  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Pool/Read.pm, lib/Fruitbak/Transfer/Rsync/IO.pm:     checksums

2014-05-11  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Transfer/Rsync/IO.pm:     files van vorige backup overnemen

2014-05-11  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Dentry.pm, lib/Fruitbak/Share/Write.pm,
	lib/Fruitbak/Transfer/Rsync/IO.pm:     tijdelijke workaround voor forkgedoe

2014-05-11  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Config/Host.pm,
	lib/Fruitbak/Host.pm, lib/Fruitbak/Share/Write.pm,
	lib/Fruitbak/Transfer/Rsync.pm, lib/Fruitbak/Transfer/Rsync/IO.pm:     doet een beetje wat

2014-05-11  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Command/Backup.pm,
	lib/Fruitbak/Host.pm:     gebruik Backup::Write

2014-05-11  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, lib/Fruitbak.pm, lib/Fruitbak/Command.pm,
	lib/Fruitbak/Command/Backup.pm, lib/Fruitbak/Command/Help.pm,
	lib/Fruitbak/Command/Init.pm, lib/Fruitbak/Config.pm, t/backup.t:     commando's aanzwengelen

2014-05-11  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak, lib/Fruitbak/Command.pm,
	lib/Fruitbak/Command/Backup.pm, lib/Fruitbak/Command/Help.pm:     command stubs

2014-05-11  Wessel Dankers <wsl@fruit.je>

	* bin/fruitbak:     cli frontend

2014-05-09  Wessel Dankers <wsl@uvt.nl>

	* RESTORE:     plannetje voor restores

2014-05-06  Wessel Dankers <wsl@uvt.nl>

	* README:     werk TODO bij

2014-05-05  Wessel Dankers <wsl@fruit.je>

	* lib/Fruitbak.pm, lib/Fruitbak/Backup/Read.pm,
	lib/Fruitbak/Backup/Write.pm, lib/Fruitbak/Config.pm,
	lib/Fruitbak/Config/Global.pm, lib/Fruitbak/Config/Host.pm,
	lib/Fruitbak/Dentry.pm, lib/Fruitbak/Host.pm, lib/Fruitbak/Pool.pm,
	lib/Fruitbak/Pool/Read.pm, lib/Fruitbak/Pool/Write.pm,
	lib/Fruitbak/Share/Format.pm, lib/Fruitbak/Share/Read.pm,
	lib/Fruitbak/Share/Write.pm, lib/Fruitbak/Util.pm, t/backup.t,
	t/config.t:     fruitbak: standalone-versie

2013-02-23  Wessel Dankers <wsl@fruit.je>

	*     added a README briefly detailing the plan

