options.py: don't crash given semi-invalid optspecs.

It's kind of weird to provide an argument without a description, but it's
not crash-worthy (especially when the crash was a totally unhelpful
exception stack trace).  While we're here, test for a couple of other ones
that didn't cause a crash, but we want to keep it that way.

And fix the copyright message; actually options.py started in 2010.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
options.py: clean up handling of --no-* options.

The particular bug that triggered this (in a project other than bup) was of
the form:

	n,no-stupid       don't be stupid

Where it would actually end up setting stupid=1 by accident, and -n would
mean --stupid, not --no-stupid.  As part of fixing it, you can now also do
this:

	n,no-stupid,smart   don't be stupid (ie. be smart)

and it'll work as it should: n == smart == no-stupid == not stupid.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
options.py: get rid of end-of-line whitespace.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
Adjust Node.__cmp__() to compare full paths.

The function now returns immediately if the two arguments are the same
Python object, otherwise it compares the full path name (rather than
just the file name).

Discussion: https://groups.google.com/group/bup-list/browse_thread/thread/1afc33b26394d69e/1a7a8155a1005600

Signed-off-by: Gabriele Santilli <gabriele@colellachiara.com>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
Add test for "child named after parent" bug.

The added test shows that saving a node with the same name as the root
of the tree fails.

Changing Node.__cmp__() to compare by full paths should fix the
problem.

Signed-off-by: Yung-Chin Oei <oei.yungchin@gmail.com>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
Mention that option values will be converted to integers when possible.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Set python-mode python-indent to 4 in .dir-locals.el.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Add "xstat" itself to the xstat optspec usage message.

Thanks to Jean-Baptiste <jbd@jbdenis.net> for pointing it out.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
cmd/drecurse: correctly pass excluded_paths to recursive_dirlist

The excluded_paths argument was being passed as a positional argument,
but its position actually corresponded to the 'bup_dir' argument, so
'bup drecurse --exclude=/foo/bar /foo' has never worked.

Signed-off-by: Aneurin Price <aneurin.price@gmail.com>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
Extend README for NetBSD.

Add NetBSD to the list of systems on which bup is known to work.  Give
hints for bup usage on NetBSD, including the location of the fuse
bindings and the pkgsrc entry.  Caution about incorrect cycle
detection on fuse mounts.  Add pkgsrc URLs.

Signed-off-by: Greg Troxel <gdt@lexort.com>
Reviewed-by: Gabriel Filion <lelutin@gmail.com>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
Documentation/bup-save.md: document --date option.

Signed-off-by: Jakob Matthes <jakob.matthes@gmail.com>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
Documentation/bup-save.md: change --strip-prefix to --strip-path.

Signed-off-by: Jakob Matthes <jakob.matthes@gmail.com>
Reviewed-by: Zoran Zaric <lists@zoranzaric.de>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
lib/bup/bloom.py: fix minor documentation typos.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>