Test for load failures in t/test-*.sh

i.e.

  . foo || exit $?

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
test-on.sh: exit only once on source failure

Thanks to Gabriel Filion for pointing out the oversight.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
mux: support wrapping arbitrary commands

Don't just support bup commands; allow arbitrary commands as arguments,
i.e. instead of

  bup mux BUP_SUBCOMMAND ...

support

  bup mux COMMAND ...

i.e.

  bup mux tar cvf ...

Reviewed-by: Gabriel Filion <gabster@lelutin.ca>
[rlb@defaultvalue.org: rebased to master; removed not yet applicable
 on--server-cmd.py changes]
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
tag-cmd.py: use git update-ref to delete tags

Sometimes tags can be elsewhere than in the refs/tags/ directory. This
can happen if git pack-refs --all was used.

The current code chokes on such a situation. Since git update-ref
already knows about this subtlety, let it handle the deletion.

Signed-off-by: Gabriel Filion <gabster@lelutin.ca>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
tag-cmd.py: rephrase -f summary in optspec

The current summary for the -f option is rather unclear: it says that it
will delete a tag that doesn't exist, but will happily delete the tag,
too, if it exists.

Signed-off-by: Gabriel Filion <gabster@lelutin.ca>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
tag-cmd.py: fix -f placement in delete synopsis

The -d option is the one that should take the <tag name> argument,
whereas the -f option has no argument.

With better ordering in the synopis, this is less misleading.

Signed-off-by: Gabriel Filion <gabster@lelutin.ca>
[rlb@defaultvalue.org: adjust commit summary]
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
Makefile: Rewrote so that 'make bup' can be up-to-date
bup cat-file: Added --ref option to specify branch or commit hash.

This option uses git's "git rev-parse" functionality, which resolves
ref's such as branches, tags, or commit hashes. If mybranch is the
name of a branch, "bup cat-file --ref=mybranch path/to/myfile" uses
rev-parse to resolve the commit hash of the commit mybranch points to.
This also enables us to use notation like mybranch^ which refers to
the commit preceding the commit pointed to by mybranch (if mybranch
has exactly one parent). Furthermore, if the commit hash is known, it
can be given directly as --ref=myhash.
Added command "bup log"

"bup log" can be used to inspect the backup history.
It is a wrapper for "git log" and "git diff-tree" and uses them in a
way that is convenient for the bup use case. Furthermore, "bup log"
knows about name mangling and will hide the name mangling from the
user, a feature that "git log" cannot provide directly.
The man-page contains detailed information and examples.
Added command "bup pick-saves"

This low-level command generates a new branch.