]> arthur.barton.de Git - bup.git/log
bup.git
10 years agotclient.py: use a tmpdir in t/tmp instead of working directly in lib/bup/t/.
Rob Browning [Wed, 29 Jan 2014 20:04:14 +0000 (14:04 -0600)]
tclient.py: use a tmpdir in t/tmp instead of working directly in lib/bup/t/.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agosave-cmd.py: disallow backup set names containing "/".
Rob Browning [Mon, 27 Jan 2014 20:51:47 +0000 (14:51 -0600)]
save-cmd.py: disallow backup set names containing "/".

There's no way to refer to them via the VFS, because the VFS (as
expected) treats all forward slashes as path separators.

Before this change, it was possible to create backup sets with names
like "x/y/z" that were inaccessible via ls, restore, etc.

Thanks to Laura Morrissey <laura.morrissey@gmail.com> for the report.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agotbloom.py: use a tmpdir in t/tmp instead of working directly in lib/bup/t/.
Rob Browning [Sat, 25 Jan 2014 21:59:08 +0000 (15:59 -0600)]
tbloom.py: use a tmpdir in t/tmp instead of working directly in lib/bup/t/.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoChange -x/--xdev/--one-filesystem to include the mount point itself.
Rob Browning [Tue, 24 Dec 2013 02:10:49 +0000 (20:10 -0600)]
Change -x/--xdev/--one-filesystem to include the mount point itself.

Match rsync, tar, etc., and add and use t/cleanup-mounts-under to
clean up all temporary mounts under t/mnt and t/tmp.

Thanks to Karl Kiniger <karl.kiniger@med.ge.com> for the report.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Karl Kiniger <karl.kiniger@med.ge.com>
10 years agotgit.py: use a tmpdir in t/tmp instead of working directly in lib/bup/t/.
Rob Browning [Fri, 24 Jan 2014 03:01:41 +0000 (21:01 -0600)]
tgit.py: use a tmpdir in t/tmp instead of working directly in lib/bup/t/.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agometadata.py: remove obsolete comments.
Rob Browning [Thu, 23 Jan 2014 22:55:18 +0000 (16:55 -0600)]
metadata.py: remove obsolete comments.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoMention par2 as one of the reasons you might want to avoid bup.
Rob Browning [Fri, 17 Jan 2014 20:00:04 +0000 (14:00 -0600)]
Mention par2 as one of the reasons you might want to avoid bup.

(i.e. add it to the informal list of requirements)

Thanks to James Lott <james@lottspot.com> for the suggestion.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agobup-restore.md: always initialize root_meta in do_root.
itxx00 [Wed, 8 Jan 2014 05:14:26 +0000 (13:14 +0800)]
bup-restore.md: always initialize root_meta in do_root.

Previously, using bup split with bup restore would cause an error:

  UnboundLocalError: local variable 'root_meta' referenced before assignment

Signed-off-by: itxx00 <itxx00@gmail.com>
[rlb@defaultvalue.org: adjust commit message.  Initialize root_meta
 unconditionally before guard to match other code.]
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agobup-join.md bup-save.md: note that even with "-r" a local repo is required.
Rob Browning [Sun, 12 Jan 2014 22:20:31 +0000 (16:20 -0600)]
bup-join.md bup-save.md: note that even with "-r" a local repo is required.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoCheck for overflow when converting from Python to unsigned integer types.
Rob Browning [Tue, 3 Dec 2013 18:37:53 +0000 (12:37 -0600)]
Check for overflow when converting from Python to unsigned integer types.

Python's PyArg_ParseTuple() unsigned integer type conversions don't
check for overflow, so stop using them.  Add bup_uint_from_py(),
bup_ulong_from_py(), and bup_ullong_from_py() functions that do check,
and use them instead.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoMove the main fsck tests from test.sh to test-fsck.sh.
Rob Browning [Tue, 31 Dec 2013 19:58:53 +0000 (13:58 -0600)]
Move the main fsck tests from test.sh to test-fsck.sh.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoMove clear-index tests from test.sh to test-index-clear.sh.
Rob Browning [Tue, 31 Dec 2013 18:58:49 +0000 (12:58 -0600)]
Move clear-index tests from test.sh to test-index-clear.sh.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoMove test.sh exclude tests to renamed test-save-restore-excludes.sh.
Rob Browning [Tue, 31 Dec 2013 18:48:14 +0000 (12:48 -0600)]
Move test.sh exclude tests to renamed test-save-restore-excludes.sh.

Rename test-save-restore-exclude-rx.sh to
test-save-restore-excludes.sh, and move test.sh exclude tests there.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoMove compression tests from test.sh to test-compression.sh.
Rob Browning [Tue, 31 Dec 2013 18:33:39 +0000 (12:33 -0600)]
Move compression tests from test.sh to test-compression.sh.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoMove import-rdiff-backup tests from test.sh to test-import-rdiff-backup.sh.
Rob Browning [Tue, 31 Dec 2013 18:04:51 +0000 (12:04 -0600)]
Move import-rdiff-backup tests from test.sh to test-import-rdiff-backup.sh.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoMove save --strip/--graft tests from test.sh to test-save-strip-graft.sh.
Rob Browning [Tue, 31 Dec 2013 17:35:21 +0000 (11:35 -0600)]
Move save --strip/--graft tests from test.sh to test-save-strip-graft.sh.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoDon't require non-negative timespec ns; fix stat timestamp conversions.
Rob Browning [Thu, 19 Dec 2013 04:16:44 +0000 (22:16 -0600)]
Don't require non-negative timespec ns; fix stat timestamp conversions.

Previously we required that the system timespec tv_nsec values be
non-negative -- stop that.  POSIX doesn't specify, and there's no real
need for us to care, since all significant timestamp manipulations are
now handled as integer nanosecond values, not (sec, ns) pairs.

Change stat_struct_to_py() (used by bup_stat()/bup_lstat()) to use
INTEGER_TO_PY() to convert the timestamp st_atime/st_mtime/st_ctime
values so that we don't have to care about the sign/size of the
underlying type (which should be time_t).

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoRemove ancient lib/tornado in favor of an external dependency.
Rob Browning [Thu, 26 Dec 2013 20:01:12 +0000 (14:01 -0600)]
Remove ancient lib/tornado in favor of an external dependency.

Our lib/tornado dates from over three years ago -- drop it in favor of
an external dependency, and update the install instructions
accordingly.

Anyone trying to run "bup web" without tornado installed will see
this:

  error: cannot find the python "tornado" module; please install it

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoAlways publish (l)utimes in helpers when available and fix type conversions.
Rob Browning [Wed, 18 Dec 2013 03:12:06 +0000 (21:12 -0600)]
Always publish (l)utimes in helpers when available and fix type conversions.

Previously, bup assumed a timeval was (long, long), which agrees with
glibc.info and (Linux) utimes(2), but POSIX says it's (time_t,
suseconds_t).

Since the types vary (and even if they didn't, Python doesn't provide
safe "time_t" conversions), handle the type conversions more
generically, via ASSIGN_PYLONG_TO_INTEGRAL() and
INTEGRAL_ASSIGNMENT_FITS().

Optimistically assume the latter is sufficient for tv_usec (where we
convert it to a long long) because POSIX guarantees that tv_usec will
be a signed integral.

Whenever available, publish utimes and lutimes independently in
helpers, and run the relevant t/txstat.py tests.  So now, we'll be
running at least some tests on utimensat, lutimes, and utimes whenever
they're available.

A more significant improvement would be to run some broader bup tests
twice, once with utimensat and once with utimes/lutimes, whenever both
are available.

cf. 9ce545703dda3c888081c504863308902ce8c56b

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoRemove vestigial and inappropriate isnan()/isinf() timestamp tests.
Rob Browning [Sat, 28 Dec 2013 18:18:51 +0000 (12:18 -0600)]
Remove vestigial and inappropriate isnan()/isinf() timestamp tests.

I'm fairly sure this is an historical accident, but regardless, remove
the (my) obviously inappropriate floating point tests on integer
values from bup_parse_xutime_args().  Nothing to see here -- move
along.

I've broken this change out from a larger post-0.25 patch, where I'd
already fixed it, so that it'll be easy to pull into stable if we
like.

Thanks to Ed Maste <carpeddiem@gmail.com> for reporting the problem
(which prompted me to go ahead and create the separate fix).

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoAdd -n, -A, -F, --file-type, --numeric-ids and detailed -l to "bup ls".
Rob Browning [Tue, 24 Dec 2013 21:34:44 +0000 (15:34 -0600)]
Add -n, -A, -F, --file-type, --numeric-ids and detailed -l to "bup ls".

With the addition of -A, change -a to behave more conventionally,
i.e. to show "." and "..".

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Alexander Barton <alex@barton.de>
Reviewed-By: Zoran Zaric <zz@zoranzaric.de>
[rlb@defaultvalue.org: fall back to n.mode when n.metadata() isn't
 available in node_info() so that CommitDirs ("ls -AF /"), etc. will
 still work; thanks to Gabriel Filion <gabster@lelutin.ca> for the
 report; fix the rdiff-backup test to use -A.]
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoAlways publish utimensat in helpers when available and fix type conversions.
Rob Browning [Wed, 18 Dec 2013 02:56:52 +0000 (20:56 -0600)]
Always publish utimensat in helpers when available and fix type conversions.

Previously, bup assumed a timespec was (long, long), which agrees with
glibc.info, but utimensat(2) and POSIX say it's (time_t, long).

Since the types vary (and even if they didn't, Python doesn't provide
safe "time_t" conversions), add ASSIGN_PYLONG_TO_INTEGRAL(), which
should handle safely assigning a PyLong value to any given C integral
destination, whenever it will fit -- then use that macro to handle the
utimensat arguments.

Whenever it's available, publish utimensat independently in helpers.
For now, this allows us to test utimensat directly, and in the future,
it may allow us to test bup's behavior with either utimensat or
utimes/lutimes without recompilation, whenever both are available.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoDon't fail tests when the timestamp read resolution is higher than write.
Rob Browning [Wed, 18 Dec 2013 02:19:44 +0000 (20:19 -0600)]
Don't fail tests when the timestamp read resolution is higher than write.

Previously, if bup was able to read path timestamps at a higher
resolution than it could write them, tests would fail.  This situation
can occur (for example) when the stat() resolution is 1ns, but either
the underlying filesystem's isn't, or bup wasn't able to find
utimensat at build time.

To fix this, compute the maximum resolution of the test filesystem
(via "t/ns-timestamp-resolutions HERE"), and then limit the "bup
xstat" timestamp resolution in the tests to match via a new
--mtime-resolution argument.

For completeness, also add --atime-resolution and --ctime-resolution
arguments.

Thanks to Tim Riemenschneider <t.riemenschneider@detco.de> for
reporting the problem.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoAdd restore option "--exclude-rx-from FILE".
Rob Browning [Fri, 20 Dec 2013 23:43:08 +0000 (17:43 -0600)]
Add restore option "--exclude-rx-from FILE".

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoAdd simple test for "index --exclude-rx-from FILE".
Rob Browning [Fri, 20 Dec 2013 23:26:11 +0000 (17:26 -0600)]
Add simple test for "index --exclude-rx-from FILE".

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoMove the --exclude-rx tests from test.sh to test-save-restore-exclude-rx.sh.
Rob Browning [Fri, 20 Dec 2013 23:15:30 +0000 (17:15 -0600)]
Move the --exclude-rx tests from test.sh to test-save-restore-exclude-rx.sh.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoAdd index option "--exclude-rx-from FILE".
Thomas Klausner [Fri, 20 Dec 2013 16:53:51 +0000 (17:53 +0100)]
Add index option "--exclude-rx-from FILE".

Signed-off-by: Thomas Klausner <tk@giga.or.at>
[rlb@defaultvalue.org: adjust commit message; change "path" to
 "pattern" in bup-index.md description; adjust bup-index.md text;
 adjust optspec text.]
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoStop testing negative timestamps -- they're not necessarily valid.
Rob Browning [Thu, 19 Dec 2013 02:19:19 +0000 (20:19 -0600)]
Stop testing negative timestamps -- they're not necessarily valid.

Both timevals and timespecs use a time_t for the seconds which POSIX
requires to be an "integer or real-floating type", so unsigned integer
types are perfectly valid.  (See FUSE for example -- though it's not
even using a time_t; at the moment it's just using uint64_t...).

Thanks to Tim Riemenschneider <t.riemenschneider@detco.de> for
reporting the problem.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoRequire utimensat or utimes/lutimes.
Rob Browning [Mon, 16 Dec 2013 02:30:46 +0000 (20:30 -0600)]
Require utimensat or utimes/lutimes.

This was already true (tests would fail), so make it explicit, and if
we do encounter any platforms where none of these functions are
available, we can worry about it then.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoHACKING: update to reflect 0.25 release.
Rob Browning [Wed, 18 Dec 2013 21:37:20 +0000 (15:37 -0600)]
HACKING: update to reflect 0.25 release.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoUpdate README.md for 0.25. 0.25 0.25-rc5
Rob Browning [Sat, 23 Nov 2013 18:32:55 +0000 (12:32 -0600)]
Update README.md for 0.25.

Among other things, shift emphasis to index/save/restore over
split/join.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoid-other-than: exclude names based on their underlying ids.
Rob Browning [Tue, 10 Dec 2013 01:00:57 +0000 (19:00 -0600)]
id-other-than: exclude names based on their underlying ids.

This fixes a failure on systems that have more than one one user/group
name mapped to the same id (i.e. NetBSD's root/toor accounts).

Thanks to Thomas Klausner <tk@giga.or.at> for reporting the problem
and helping track down the solution.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agot/test-meta.sh: handle systems that have sgid directories.
Rob Browning [Fri, 6 Dec 2013 16:18:37 +0000 (10:18 -0600)]
t/test-meta.sh: handle systems that have sgid directories.

Explicitly chown the test directory to a group we're in so that the
tests will work on systems that have sgid directories by default
(i.e. NetBSD, etc.).

Thanks to Thomas Klausner <tk@giga.or.at> for reporting the problem
and helping track down the solution.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agotmetadata.py: chmod tree before deletion to fix NetBSD test failure.
Thomas Klausner [Fri, 6 Dec 2013 00:08:01 +0000 (01:08 +0100)]
tmetadata.py: chmod tree before deletion to fix NetBSD test failure.

Apparently NetBSD won't let you recursively delete a parent directory
containing a 000 subdirectory, so "chmod -R u+rwX" the tree first.

Signed-off-by: Thomas Klausner <tk@giga.or.at>
[rlb@defaultvalue.org: adjust commit message.]
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
10 years agoAdd helpers.fdatasync(); fix interleaved mmap/read-write in midx.
Rob Browning [Tue, 3 Dec 2013 18:39:37 +0000 (12:39 -0600)]
Add helpers.fdatasync(); fix interleaved mmap/read-write in midx.

Have helpers.fdatasync() fall back to os.fsync() whenever
os.fdatasync() isn't available.

Thanks to Yann Autissier <yann.autissier@gmail.com> for reporting the
problem that prompted this work.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoRemove t/ from the test-meta.sh test tree now that it contains t/tmp/.
Rob Browning [Wed, 4 Dec 2013 17:14:00 +0000 (11:14 -0600)]
Remove t/ from the test-meta.sh test tree now that it contains t/tmp/.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoCreate t/force-delete from t/lib.sh force-delete and use it everywhere.
Rob Browning [Tue, 3 Dec 2013 20:17:26 +0000 (14:17 -0600)]
Create t/force-delete from t/lib.sh force-delete and use it everywhere.

Move the t/lib.sh force-delete code to t/force-delete as a standalone
command, and use it everywhere -- particularly to delete t/tmp during
"make clean", given the recent move to run all tests inside t/ via
TMPDIR (18f838c9a66d521f9fa042eead3c5771ca99b03a).

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoDon't compute local script_home in lib.sh realpath (depended on pwd).
Rob Browning [Tue, 3 Dec 2013 19:49:41 +0000 (13:49 -0600)]
Don't compute local script_home in lib.sh realpath (depended on pwd).

Compute bup_t_lib_script_home once at load time so that it won't be
affected by changes to pwd, and use it in realpath.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoUse the correct types when calling FS_IOC_GETFLAGS/FS_IOC_SETFLAGS.
Aurelien Jarno [Thu, 28 Nov 2013 18:36:16 +0000 (12:36 -0600)]
Use the correct types when calling FS_IOC_GETFLAGS/FS_IOC_SETFLAGS.

Despite the definitions in <linux/fs.h> these ioctls take int
arguments, not longs. This is important for 64-bit big endian
machines.

See http://marc.info/?l=linux-fsdevel&m=138552482917220&w=2

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
[rlb@defaultvalue.org: adjust commit message; use "I" conversion
 to/from Python instead of "k".]
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoDon't check ACLs in t/compare-trees on NetBSD.
Rob Browning [Mon, 25 Nov 2013 20:31:28 +0000 (14:31 -0600)]
Don't check ACLs in t/compare-trees on NetBSD.

Treat NetBSD like Cygwin and Darwin (OS X) in t/compare-trees.  This
should finish the process of disabling POSIX ACL support on NetBSD
that was started here: 349ff15c7db09883abc20bdf3e8a4df6bff12cd3.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoRevert "Don't check ACLs in t/compare-trees on FreeBSD."
Rob Browning [Mon, 25 Nov 2013 20:27:25 +0000 (14:27 -0600)]
Revert "Don't check ACLs in t/compare-trees on FreeBSD."

This reverts commit 985b17f45707fe3759ca13f005625934f5f63b4c.

That should have been *NetBSD*.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoDon't check ACLs in t/compare-trees on FreeBSD.
Rob Browning [Sun, 24 Nov 2013 18:05:00 +0000 (12:05 -0600)]
Don't check ACLs in t/compare-trees on FreeBSD.

Treat FreeBSD like Cygwin and Darwin (OS X) in t/compare-trees.  This
should finish the process of disabling POSIX ACL support on FreeBSD
that was started here: 349ff15c7db09883abc20bdf3e8a4df6bff12cd3.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoFix off-by-one in MAX_PER_TREE guard in _squish().
Rob Browning [Sat, 23 Nov 2013 19:15:45 +0000 (13:15 -0600)]
Fix off-by-one in MAX_PER_TREE guard in _squish().

Previously bup would allow MAX_PER_TREE + 1 items in a tree.  Change
the guard to ensure that trees really are limited to MAX_PER_TREE.

Thanks to Patrick Rouleau <prouleau72@gmail.com> for reporting the
problem.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoEnforce MAX_PER_TREE by always _squish()ing in spit_to_shalist().
Rob Browning [Wed, 20 Nov 2013 20:57:53 +0000 (14:57 -0600)]
Enforce MAX_PER_TREE by always _squish()ing in spit_to_shalist().

Previously bup would ignore MAX_PER_TREE whenever it hit a long run of
data that didn't produce a non-zero hashplit "level" (see the
discussion of fanout in DESIGN).  That can happen, for example, when
traversing a file containing large zero regions (sparse or not).

As a result, bup could produce an arbitrarily large number of blobs at
level 0 of the hashsplit tree, causing it to consume increasing memory
during split/save, and to behave badly during join/restore.

To fix that, don't try to outsmart _squish() -- just call it every
time, and let it enforce MAX_PER_TREE when appropriate.

Thanks to trebor <robert.rebstock@tempelhof-projekt.de> for reporting
the problem a long while back, Yung-Chin Oei <yungchin@yungchin.nl>
for tracking down the cause and proposing a slightly different fix,
and Aidan Hobson Sayers <aidanphs@gmail.com> for suggesting this
particular approach.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoRemove redundant *bits assignment in bupsplit_find_ofs().
Rob Browning [Wed, 20 Nov 2013 04:18:18 +0000 (22:18 -0600)]
Remove redundant *bits assignment in bupsplit_find_ofs().

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoDESIGN: fix typo.
Rob Browning [Tue, 19 Nov 2013 19:11:51 +0000 (13:11 -0600)]
DESIGN: fix typo.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoCompletely disable ACL support on NetBSD for now.
Thomas Klausner [Sat, 16 Nov 2013 02:05:17 +0000 (03:05 +0100)]
Completely disable ACL support on NetBSD for now.

Signed-off-by: Thomas Klausner <tk@giga.or.at>
[rlb@defaultvalue.org: adjust commit message; wrap code.]
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agometadata.py: fix incorrectly indented line in Writer._add().
Rob Browning [Tue, 19 Nov 2013 16:29:08 +0000 (10:29 -0600)]
metadata.py: fix incorrectly indented line in Writer._add().

Thanks to Patrick Rouleau <prouleau72@gmail.com> for reporting the
problem.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agometadata.py: fix variable access in Writer.add(); tmax -> self.tmax.
Rob Browning [Sun, 17 Nov 2013 17:13:04 +0000 (11:13 -0600)]
metadata.py: fix variable access in Writer.add(); tmax -> self.tmax.

Thanks to Patrick Rouleau <prouleau72@gmail.com> for reporting the
problem.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoManually set TMPDIR to $(CURDIR)/tmp for all tests for now.
Rob Browning [Sat, 16 Nov 2013 23:38:57 +0000 (17:38 -0600)]
Manually set TMPDIR to $(CURDIR)/tmp for all tests for now.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoMakefile: simplify runtests-python since metadata tests aren't conditional.
Rob Browning [Fri, 15 Nov 2013 20:23:12 +0000 (14:23 -0600)]
Makefile: simplify runtests-python since metadata tests aren't conditional.

Since the metadata tests are no longer conditional, revert
runtests-python to the simpler implementation.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoDon't crash; defer an error when a path changes while indexing it. 0.25-rc4
Rob Browning [Tue, 12 Nov 2013 17:38:35 +0000 (11:38 -0600)]
Don't crash; defer an error when a path changes while indexing it.

Mirror the error handling already used by save.

With this change the result for a path that changes or is deleted
between the drecurse traversal and the from_path() call should be the
same as the result for a path that changes or is deleted between index
and save.

Thanks to Yann Autissier <yann.autissier@gmail.com> for reporting the
problem and Gabriel Filion <gabster@lelutin.ca> for helping figure out
the solution.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agotest.sh: accommodate platforms where root defaults to "ls -A" again.
Rob Browning [Mon, 11 Nov 2013 21:41:08 +0000 (15:41 -0600)]
test.sh: accommodate platforms where root defaults to "ls -A" again.

For now just use "bup ls -a" and "ls -A", which currently match in
behavior.  Of course we'll have to change that to "bup ls -A" once we
fix "bup ls".

Thanks to Thomas Klausner <tk@giga.or.at> for the report.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoREADME.md: change python-dev to python-devel for CentOS.
Rob Browning [Mon, 11 Nov 2013 19:05:56 +0000 (13:05 -0600)]
README.md: change python-dev to python-devel for CentOS.

Thanks to Gao Yongwei <itxx00@gmail.com> for the report.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoRevert "Makefile: avoid using -Werror with clang for now."
Rob Browning [Mon, 11 Nov 2013 18:26:04 +0000 (12:26 -0600)]
Revert "Makefile: avoid using -Werror with clang for now."

Remove the clang -Werror special case after changing the way we handle
integer conversions (9ecba738e119654b7231be08232f8c484f8b1a93).

This reverts commit 3fdd538a22eae6681df3a59c116f78c237c9ecc7.

Thanks to Thomas Klausner <tk@giga.or.at> for the report.

10 years agoAccommodate systems where paths inherit their group from the parent dir.
Rob Browning [Mon, 11 Nov 2013 18:03:25 +0000 (12:03 -0600)]
Accommodate systems where paths inherit their group from the parent dir.

Thanks to Thomas Klausner <tk@giga.or.at> for reporting the problem
and helping test the solution.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years ago_helpers.c: be smarter when converting unknown integer types to python.
Rob Browning [Sun, 10 Nov 2013 17:21:46 +0000 (11:21 -0600)]
_helpers.c: be smarter when converting unknown integer types to python.

For now assume that long long and unsigned long long are always the
the largest integer types, and convert unknown size integers to Python
via PyLong_FromUnsignedLongLong() or PyLong_FromLongLong(), depending
on the value's sign.

Thanks to Thomas Klausner <tk@giga.or.at> for reporting the problem
and helping  track down the solution.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoOnly allow "index --clear" to clear the default index (BUP_DIR/bupindex).
Rob Browning [Fri, 8 Nov 2013 17:35:44 +0000 (11:35 -0600)]
Only allow "index --clear" to clear the default index (BUP_DIR/bupindex).

For now, disallow clearing "external" indexes.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoMakefile: avoid using -Werror with clang for now.
Rob Browning [Sun, 10 Nov 2013 20:11:44 +0000 (14:11 -0600)]
Makefile: avoid using -Werror with clang for now.

Apparently the default compiler on OS X and FreeBSD is now clang, and
it doesn't like our CHECK_VALUE_FITS() definition.  So for now, just
don't specify -Werror when we detect clang.

Thanks to Alexander Barton <alex@barton.de>, Thomas Klausner
<tk@giga.or.at>, Sebastian Schumb <sebastian@sebastians-site.de>, and
Zoran Zaric <zz@zoranzaric.de> for reporting the problem.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Alexander Barton <alex@barton.de>
10 years agotag-cmd.py: add "FIXME: review for safe writes.".
Rob Browning [Sat, 9 Nov 2013 20:17:11 +0000 (14:17 -0600)]
tag-cmd.py: add "FIXME: review for safe writes.".

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoAdd 'tag -f' support.
Ben Kelly [Sat, 9 Nov 2013 19:21:04 +0000 (14:21 -0500)]
Add 'tag -f' support.

Add a new flag, -f/--force, to bup tag. By analogy with 'git tag',
'bup tag -f foo commit' will create tag *foo* even if a tag with that
name already exists; the existing tag will be silently overwritten.

By analogy with 'rm -f', add 'bup tag -d -f'. All this does is
suppress the error when you attempt to 'bup tag -d' a tag that doesn't
exist; it is primarily for use in scripts that want to delete a tag
that may or may not exist in the first place without 'bup tag'
reporting a failure.

Signed-off-by: Ben Kelly <btk@google.com>
[rlb@defaultvalue.org: add missing "tag" and wrap text in bup-tag.md;
 put "-d" first in tag-cmd.py optspec line and bup-tag.md; adjust
 commit message.]
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agobup-index.md: make it clear that *bup* doesn't expand --exclude paths.
Rob Browning [Sat, 9 Nov 2013 18:30:54 +0000 (12:30 -0600)]
bup-index.md: make it clear that *bup* doesn't expand --exclude paths.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoxstat.py: include "s" for socket in mode strings, i.e. "srw-r-----".
Rob Browning [Sat, 9 Nov 2013 18:08:21 +0000 (12:08 -0600)]
xstat.py: include "s" for socket in mode strings, i.e. "srw-r-----".

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agotest-meta.sh: add a missing WVPASS in the ownership restoration tests.
Rob Browning [Fri, 8 Nov 2013 17:26:11 +0000 (11:26 -0600)]
test-meta.sh: add a missing WVPASS in the ownership restoration tests.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoindex.py: compute the index metadata offset more carefully.
Rob Browning [Fri, 8 Nov 2013 00:33:43 +0000 (18:33 -0600)]
index.py: compute the index metadata offset more carefully.

Previously when reading bupindex.meta (or similar), bup computed the
metadata file offset for it's internal lookup table by just
subtracting the size of a re-encoding of the metadata from file.tell()
after the read.  This works fine until we change the length of the
metadata representation (which we just did); then bup will get the
wrong length from the re-encoded data.

To fix this, do what we should have done originally and capture the
index metadata offset before reading the metadata via tell(), and use
that instead.

Thanks to Mark J Hewitt <mjh@idnet.com> for being the first (known)
victim and for helping track down the solution.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agocurrent-filesystem(): accommodate NetBSD and SunOS.
Rob Browning [Thu, 7 Nov 2013 18:29:37 +0000 (12:29 -0600)]
current-filesystem(): accommodate NetBSD and SunOS.

Thanks to Thomas Klausner <tk@giga.or.at> for reporting the problem,
and providing the alternate commands.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agobup-restore.md: add more detail to the restore --map-* documentation.
Rob Browning [Wed, 6 Nov 2013 17:50:21 +0000 (11:50 -0600)]
bup-restore.md: add more detail to the restore --map-* documentation.

Thanks to Gabriel Filion <gabster@lelutin.ca> for the suggestions.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Reviewed-by: Gabriel Filion <gabster@lelutin.ca>
10 years agoAdd --map-user --map-group --map-uid and --map-gid options to restore.
Rob Browning [Tue, 15 Oct 2013 19:20:10 +0000 (14:20 -0500)]
Add --map-user --map-group --map-uid and --map-gid options to restore.

Note that the usual metadata rules still appply, so a user or group
entry will normally take precedence over a uid/gid unless
--numeric-ids is specified.  So if you want to map a uid, for example,
you'll either need --numeric-ids, or you'll need to clear the
user/group like this:

  bup restore ... --map-user rlb= --map-uid 1000=2000

These options should also make it possible to recover from archives
that were broken as a result of our incorrect handling of
signed/unsigned stat values (recently fixed).

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Reviewed-by: Gabriel Filion <gabster@lelutin.ca>
10 years agoTreat stat fields correctly as signed, unsigned, or unspecified (cf. POSIX).
Rob Browning [Sat, 12 Oct 2013 18:59:07 +0000 (13:59 -0500)]
Treat stat fields correctly as signed, unsigned, or unspecified (cf. POSIX).

Patrick reported a problem with restore on Cygwin that was being
caused by bup's handling of unknown uid/gid values; it turns out that
Cygwin returns -1 in that situation:

  http://www.cygwin.com/cygwin-ug-net/ntsec.html
  "Special values of user and group ids"

However, bup didn't see -1; bup saw 4294967295, because it was
incorrectly converting some stat field values as unsigned when POSIX
says that they should be signed (or doesn't specify):

  http://pubs.opengroup.org/onlinepubs/009695299/basedefs/sys/types.h.html

To fix the problem, convert the stat fields correctly -- using the
widest type available (PY_LONG_LONG), and add a new common metadata
record (_rec_tag_common_v2) to store them correctly.  Test at runtime
for potential overflows that we can't rule out at compile time.

Store all of the fields (excepting the timestamp ns values, which we
already force to be non-negative) as signed vints because the overhead
should be negligible, and doing so means that we won't have to break
backward compatibility again if we ever decide we actually want to
store negative values.

Continue to read the legacy format as before, with the realization
that this may leave some existing archives broken.  At the moment, the
only known case is the Cygwin "unknown uid/gid" problem cited above,
and to help with that and similar cases, we'll be adding
--map-{user,group,uid,gid} options to restore.

Thanks to Patrick Rouleau <prouleau72@gmail.com> for the initial
report leading to the deeper problem.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Reviewed-by: Gabriel Filion <gabster@lelutin.ca>
10 years agoCorrect thanks for commit ff5e91840c92fbb3af70731ede8696114dfee7aa.
Rob Browning [Wed, 6 Nov 2013 22:29:57 +0000 (16:29 -0600)]
Correct thanks for commit ff5e91840c92fbb3af70731ede8696114dfee7aa.

Thanks to Ben Kelly <btk@google.com> for tracking down the problem,
rather than Alexander Barton <alex@barton.de>.

Original message:

  Author: Rob Browning <rlb@defaultvalue.org>
  Date:   Tue Nov 5 17:17:45 2013 -0600

    Don't include atime when determining hardlink compatibility.

    Don't include the atimes since we're comparing two paths stat()ed at
    different times, and depending on the
    platform/filesystem/mount-options, that may result in two different
    atimes, even when the paths refer to the same file.

    Thanks to Alexander Barton <alex@barton.de> for tracking down the
    problem.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Reviewed-by: Gabriel Filion <gabster@lelutin.ca>
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoDon't include atime when determining hardlink compatibility.
Rob Browning [Tue, 5 Nov 2013 23:17:45 +0000 (17:17 -0600)]
Don't include atime when determining hardlink compatibility.

Don't include the atimes since we're comparing two paths stat()ed at
different times, and depending on the
platform/filesystem/mount-options, that may result in two different
atimes, even when the paths refer to the same file.

Thanks to Alexander Barton <alex@barton.de> for tracking down the
problem.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Reviewed-by: Gabriel Filion <gabster@lelutin.ca>
10 years agoUse "type -p" instead of "which" in test.sh.
Rob Browning [Tue, 5 Nov 2013 22:39:31 +0000 (16:39 -0600)]
Use "type -p" instead of "which" in test.sh.

Which isn't portable (if I recall correctly), and we know we're in
Bash.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoAdd current-filesystem and path-filesystems to t/lib.sh; use to guard test.
Rob Browning [Tue, 5 Nov 2013 22:29:53 +0000 (16:29 -0600)]
Add current-filesystem and path-filesystems to t/lib.sh; use to guard test.

Add current-filesystem which reports the current filesystem type, and
path-filesystems which reports all the filesystems back up to the
root, and use the latter to skip the "save --strip-path (no match)"
test whenever all the filesystems involved aren't the same type.

This issue was discovered while testing on
/some/ext4/tree/containing/a/btrfs/tree.  When the test indexes/saves,
it picks up the metadata for the parents above the btrfs, which may
have (for example) linux +e attrs.  Then when it tries to restore the
tree fully within the btrfs, the restore defers an error when it tries
to restore the +e, which isn't valid for btrfs.

Normally we can avoid this problem via --strip, but this particular
test is actually checking the behavior when --strip doesn't apply.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoInclude the chattr value in the ApplyError.
Rob Browning [Tue, 5 Nov 2013 22:25:54 +0000 (16:25 -0600)]
Include the chattr value in the ApplyError.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years ago_apply_linux_xattr_rec(): do nothing if no rec; fix restricted access test.
Rob Browning [Tue, 5 Nov 2013 22:17:04 +0000 (16:17 -0600)]
_apply_linux_xattr_rec(): do nothing if no rec; fix restricted access test.

If the metadata object has no linux_xattr, don't do anything at all in
_apply_linux_xattr_rec(), and don't test the filesystem for xattr
support to determine whether or not to expect an xattr error, because
EACCES trumps the other errors.

This should be more efficient and fix a
test_apply_to_path_restricted_access() failure.

Thanks to Sebastian Schumb <sebastian@sebastians-site.de> for
reporting the problem and helping track down the fix.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agotest.sh: remove "wc -l" quoting until/unless we fix the broader issue.
Rob Browning [Mon, 4 Nov 2013 15:34:17 +0000 (09:34 -0600)]
test.sh: remove "wc -l" quoting until/unless we fix the broader issue.

On some platforms "wc -l" returns whitespace along with the count,
which breaks the one case where we quoted the result, i.e. "$(... | wc
-l").  For now, remove the quoting until/unless we decide to fix all
of the affected invocations.

Thanks to Thomas Klausner <tk@giga.or.at> for reporting the problem on
NetBSD.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agotest-meta.sh: prefer the more portable test '=' to '=='.
Thomas Klausner [Sun, 3 Nov 2013 11:55:27 +0000 (12:55 +0100)]
test-meta.sh: prefer the more portable test '=' to '=='.

Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
[rlb@defaultvalue.org: adjust commit message.]
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
10 years agoCall date with -d since it's more portable than --date.
Thomas Klausner [Sun, 3 Nov 2013 11:55:25 +0000 (12:55 +0100)]
Call date with -d since it's more portable than --date.

Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
[rlb@defaultvalue.org: adjust commit message.]
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
10 years agoimport-rsnapshot-cmd.sh: add a few missing failure checks.
Rob Browning [Sun, 3 Nov 2013 17:35:37 +0000 (11:35 -0600)]
import-rsnapshot-cmd.sh: add a few missing failure checks.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoSet pipefail so that "x | y || exit $?" will work properly.
Rob Browning [Sat, 2 Nov 2013 17:55:49 +0000 (12:55 -0500)]
Set pipefail so that "x | y || exit $?" will work properly.

Set pipefail so that constructs like this will work properly:

  x | y | z || exit $?

or

  WVPASS x | WVPASS y | WVPASS z || exit $?

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agobup-index.md: indicate that non-rx --exclude paths are taken literally.
Rob Browning [Sat, 2 Nov 2013 16:26:26 +0000 (11:26 -0500)]
bup-index.md: indicate that non-rx --exclude paths are taken literally.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoindex-cmd.py: pass exclude_rxs as an argument to update_index.
Rob Browning [Sat, 2 Nov 2013 16:15:15 +0000 (11:15 -0500)]
index-cmd.py: pass exclude_rxs as an argument to update_index.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agotest-cat-file.sh: use -l instead of -b; explain differences.
Rob Browning [Thu, 31 Oct 2013 15:23:24 +0000 (10:23 -0500)]
test-cat-file.sh: use -l instead of -b; explain differences.

It turns out that cmp -b doesn't work on at least NetBSD, so use -l
instead, and when there's a problem, diff the "bup meta" output as
well.

Thanks to Thomas Klausner <tk@giga.or.at> for the report.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoDon't expect an attr error when the metadata has no attr.
Rob Browning [Fri, 1 Nov 2013 23:32:22 +0000 (18:32 -0500)]
Don't expect an attr error when the metadata has no attr.

When the metadata object has no Linux attr, there won't be an attr
related failure, so don't look for it.

Thanks to Alexander Barton <alex@barton.de> and Mark J Hewitt
<mjh@idnet.com> for reporting and helping track down the problem.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agotmetadata.py: don't look for attr and xattr errors when impossible.
Rob Browning [Tue, 29 Oct 2013 21:21:01 +0000 (16:21 -0500)]
tmetadata.py: don't look for attr and xattr errors when impossible.

Don't look for the errors when the current (file)system doesn't
support the relevant features.

Thanks to Alexander Barton <alex@barton.de> and Mark J Hewitt
<mjh@idnet.com> for reporting the problem.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoMake force-delete more flexible, and more likely to succeed.
Rob Browning [Tue, 29 Oct 2013 01:23:38 +0000 (20:23 -0500)]
Make force-delete more flexible, and more likely to succeed.

Thanks to Alexander Barton <alex@barton.de> for helping track down
the correct chattr invocation.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoDon't use "set -e" in import-rdiff-backup.sh.
Rob Browning [Mon, 28 Oct 2013 18:02:45 +0000 (13:02 -0500)]
Don't use "set -e" in import-rdiff-backup.sh.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoRemove all of the remaining test-related "set -e" usage.
Rob Browning [Sun, 27 Oct 2013 22:42:39 +0000 (17:42 -0500)]
Remove all of the remaining test-related "set -e" usage.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoFix xattr tests and bugs revealed (fully remove set -e from test-meta.sh).
Rob Browning [Sun, 27 Oct 2013 18:23:20 +0000 (13:23 -0500)]
Fix xattr tests and bugs revealed (fully remove set -e from test-meta.sh).

Fixing the xattr tests to run correctly pointed out that bup stops
trying to apply metadata after the first failure (i.e. after any
metadata record application fails).  Change it so that bup always
tries every metadata record.  Otherwise, bup may skip some forms of
metadata without any notification -- and it shouldn't.  For example,
it shouldn't skip ACLs just because the current filesystem doesn't
support xattrs.

Fix two additional problems that were exposed by the changes described
above.

Check for EACCES when trying to apply an attr record, and properly
convert it to an ApplyError.  This problem was revealed by
test_apply_to_path_restricted_access.

Check for EACCES when trying to read the current filesystem xattrs
during the process of applying the metadata xattrs, and when
encountered, convert it to an ApplyError.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoFix ACL tests, and the bugs revealed thereby.
Rob Browning [Sun, 27 Oct 2013 18:02:08 +0000 (13:02 -0500)]
Fix ACL tests, and the bugs revealed thereby.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoRemove more of the "set -e" dependency from test-meta.sh.
Rob Browning [Sun, 27 Oct 2013 16:25:53 +0000 (11:25 -0500)]
Remove more of the "set -e" dependency from test-meta.sh.

Remove the "set -e" dependency from the remaining code where doing so
doesn't reveal any bugs.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoFix the "set -e" problem in the test-meta.sh chattr tests.
Rob Browning [Sat, 26 Oct 2013 20:03:12 +0000 (15:03 -0500)]
Fix the "set -e" problem in the test-meta.sh chattr tests.

Start fixing the "set -e" problem, beginning with the test-meta.sh
chattr tests, and add support to the test filesystem for options
needed by the chattr calls.

To allow us to produce a more digestable sequence of patches for the
broader "set -e" problem, temporarily establish BUP_SKIP_BROKEN_TESTS
which will do what it says when set, and until we finish repairing
everything, it must be set during any testing:

  BUP_SKIP_BROKEN_TESTS=1 make check

The fundamental issue with "set -e" is that it has some unexpected
(but documented) semantics.  For example:

  set -e
  foo() { false; rm -rf /; }

  # Effectively harmless
  foo

  # Erase the filesystem
  foo || true

If nothing else, this behavior appears to have been masking test
failures.  Better to just avoid "set -e" altogether.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoAdd /t/tmp/ to .gitignore.
Phil Hord [Fri, 1 Nov 2013 21:25:01 +0000 (17:25 -0400)]
Add /t/tmp/ to .gitignore.

Signed-off-by: Phil Hord <hordp@cisco.com>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
10 years agoREADME.md: fix typo; cited article is about 'git'.
Phil Hord [Fri, 1 Nov 2013 21:25:00 +0000 (17:25 -0400)]
README.md: fix typo; cited article is about 'git'.

Signed-off-by: Phil Hord <hordp@cisco.com>
[rlb@defaultvalue.org: adjust commit message.]
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
10 years agometa-cmd.py: actually respond to recursion options.
Rob Browning [Thu, 31 Oct 2013 16:57:01 +0000 (11:57 -0500)]
meta-cmd.py: actually respond to recursion options.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoRemove misleading -1 from BUP_WINDOWSIZE definition.
Aidan Hobson Sayers [Sun, 20 Oct 2013 19:32:15 +0000 (20:32 +0100)]
Remove misleading -1 from BUP_WINDOWSIZE definition.

Signed-off-by: Aidan Hobson Sayers <aidanhs@cantab.net>
Reviewed-by: Gabriel Filion <gabster@lelutin.ca>
10 years agoCorrect DESIGN to refer to 64 byte rolling window.
Aidan Hobson Sayers [Sun, 20 Oct 2013 19:32:14 +0000 (20:32 +0100)]
Correct DESIGN to refer to 64 byte rolling window.

Signed-off-by: Aidan Hobson Sayers <aidanhs@cantab.net>
Reviewed-by: Gabriel Filion <gabster@lelutin.ca>
10 years agoHACKING: correct output folder in the format-patch example
Aidan Hobson Sayers [Thu, 24 Oct 2013 19:57:31 +0000 (20:57 +0100)]
HACKING: correct output folder in the format-patch example

Signed-off-by: Aidan Hobson Sayers <aidanhs@cantab.net>
Reviewed-by: Zoran Zaric <zz@zoranzaric.de>
[rlb@defaultvalue.org: adjust commit message.]
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
10 years agoFix top-level non-dir metadata restoration with /foo/latest/target/ syntax.
Rob Browning [Tue, 22 Oct 2013 17:06:56 +0000 (12:06 -0500)]
Fix top-level non-dir metadata restoration with /foo/latest/target/ syntax.

Previously something like "bup restore -C dest /foo/latest/bar/" would
fail to restore metadata for top-level, non-directory paths inside
bar.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
10 years agoIgnore atime when testing bup cat-file --meta.
Rob Browning [Wed, 23 Oct 2013 20:43:38 +0000 (15:43 -0500)]
Ignore atime when testing bup cat-file --meta.

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