Commit graph

392 commits

Author SHA1 Message Date
Thomas Waldmann
234a88bec6 avoid hidden import, make it easy for pyinstaller
this fixes #218 in an easier way so one doesn't have to type
--hidden-import=logging.config all the time when using pyinstaller.
2015-11-15 15:52:02 +01:00
Thomas Waldmann
d6b8de943b add docs for item flags / status output, fixes #402 2015-11-15 14:32:19 +01:00
Antoine Beaupré
f13dd6e579 completely remove have_cython() hack
this was making us require mock, which is really a test component and
shouldn't be part of the runtime dependencies. furthermore, it was
making the imports and the code more brittle: it may have been
possible that, through an environment variable, backups could be
corrupted because mock libraries would be configured instead of real
once, which is a risk we shouldn't be taking.

finally, this was used only to build docs, which we will build and
commit to git by hand with a fully working borg when relevant.

see #384.
2015-11-13 10:40:53 -05:00
Thomas Waldmann
7d178e09b0 Implement --keep-tag-files to preserve directory roots/tag-files
We also add --keep-tag-files to keep in the archive the root directory and the
tag/exclusion file in the archive.

This is taken from a attic PR (and adapted for borg):
    commit f61e22cacc90e76e6c8f4b23677eee62c09e97ac
    Author: Yuri D'Elia <yuri.delia@eurac.edu>
    Date:   Mon Dec 15 12:27:43 2014 +0100
2015-11-09 04:08:49 +01:00
Thomas Waldmann
a6a8a4ebd9 Implement --exclude-if-present
Add a new --exclude-if-present command-line flag to ``borg create``.  If
specified, directories containing the specified tag file will be excluded from
the backup. The flag can be repeated to ignore more than a single tag file,
irregardless of the contents.

This is taken from a attic PR (and adapted for borg):
    commit 3462a9ca90388dc5d8b4fa4218a32769676b3623
    Author: Yuri D'Elia <yuri.delia@eurac.edu>
    Date:   Sun Dec 7 19:15:17 2014 +0100
2015-11-09 03:41:06 +01:00
Björn Ketelaars
e6911b2f25 Avoid using msgpack.packb at import time.
move item_keys = ... to __init__ (self.item_keys = ...)

Solution from/discussed with TW.
2015-11-08 15:23:09 +01:00
Thomas Waldmann
007572594f try to fix build on readthedocs 2015-11-08 02:00:51 +01:00
Thomas Waldmann
5595d56ecf deal with unicode errors for symlinks in same way as for regular files, fixes #382 2015-11-08 01:05:55 +01:00
Thomas Waldmann
ba67b96434 have a helpful warning message about how to fix wrong locale setup, fixes #382 2015-11-08 00:57:02 +01:00
Thomas Waldmann
244303ac66 add ACL keys the RobustUnpacker must know about 2015-11-07 19:55:17 +01:00
Thomas Waldmann
c9090fc3c2 helper: minor style fix 2015-11-07 15:37:05 +01:00
Thomas Waldmann
8cc726a107 make basic test more robust, try 2
check if we have all expected files in list output (but ignore extra lines,
like "can't load libfakeroot" or so).
2015-11-07 00:30:02 +01:00
Thomas Waldmann
eb3bc1023b make basic test more robust
counting lines is a bad idea. just one unrelated output line and the test fails.
thus we rather check if what we expect is in the output.
2015-11-07 00:11:36 +01:00
TW
1a20d3d5ae Merge pull request #366 from ThomasWaldmann/fix-364
Fix borg check crashing on some repos, issue #364
2015-11-06 21:05:30 +01:00
Thomas Waldmann
c01efa4666 repository: refactor some duplicate code 2015-11-06 19:37:39 +01:00
TW
864fa9ae2d Merge pull request #370 from ThomasWaldmann/debug-helpers
Debug helpers
2015-11-06 18:08:05 +01:00
Thomas Waldmann
37c8aa2d42 debug-get-obj command 2015-11-06 17:45:30 +01:00
Thomas Waldmann
a2fc479da3 debug-put-obj command 2015-11-06 17:31:05 +01:00
Thomas Waldmann
9986705760 add some tests for the debug commands 2015-11-06 16:51:39 +01:00
Thomas Waldmann
7da730a8d7 borg list --prefix=thishostname- REPO, fixes #205
lists only archives with names starting with the given prefix.
2015-11-06 15:45:49 +01:00
Thomas Waldmann
a4bb85970d do not mention the deprecated passphrase mode 2015-11-06 15:01:37 +01:00
Thomas Waldmann
4c6be00d65 remove some superfluous / duplicate log messages 2015-11-06 14:58:12 +01:00
Thomas Waldmann
39b5734b31 debugging helper: borg debug-delete-obj 2015-11-04 01:05:21 +01:00
Thomas Waldmann
47813f6f6a archiver checker: better error logging, give chunk_id and sequence numbers
can be used together with borg debug-dump-archive-items.
2015-11-04 00:20:12 +01:00
Thomas Waldmann
d2b7dbc0a8 debugging helper: borg debug-dump-archive-items 2015-11-03 23:42:58 +01:00
Thomas Waldmann
12b5d07e55 fix RobustUnpacker, it missed some metadata keys. add check for unknown metadata keys.
not just the new atime and ctime keys were missing, but also bsdflags.
2015-11-03 20:21:52 +01:00
Thomas Waldmann
fa35525b58 create from stdin: also save atime, ctime
cosmetic, just for completeness.
2015-11-03 19:52:49 +01:00
Thomas Waldmann
f28d5d1f96 disk full test: some improvements
- can create 0-byte files now
- frees space early (avoids running out of disk space at repo init time)
- creates multiple reserve files, so we do not only reserve some space,
  but also some inodes
 - only print output if there is an error RC
 - if make_files makes us run out of space, that is not interesting, just start
   a new iteration from scratch
2015-11-03 19:39:05 +01:00
Thomas Waldmann
f804c6fb1c repository check code: added some comments 2015-11-03 15:41:02 +01:00
Thomas Waldmann
98f3b8d937 fix "check" for repos that have incomplete chunks, fixes #364
added try/finally (the code in between was just indented, no
other code changes) to make sure it sets self.index back to None,
even if the code crashes e.g. due to an IntegrityError caused
by an incomplete segment caused by a disk full condition.

also, in prepare_txn, create an empty in-memory index if transaction_id
is None, which is required by the Repository.check code to work correctly.
If the index is not empty there, it will miscalculate segment usage
(self.segments).
2015-11-03 15:30:33 +01:00
Thomas Waldmann
22262e3fb7 add a test to find disk-full issues, #327 2015-11-03 00:41:20 +01:00
Thomas Waldmann
6d5cc06cf6 remove unused imports, add missing imports 2015-11-02 20:36:13 +01:00
Thomas Waldmann
36cc377329 use default_notty=False for confirmations, fixes #345
this is so that e.g. cron jobs do not hang indefinitely if yes() is called,
but it will just default to "no" if not tty is connected.

if you need to enforce a "yes" answer (which is not recommended for
the security critical questions), you can use the environment:

BORG_CHECK_I_KNOW_WHAT_I_AM_DOING=Y
2015-11-02 01:59:22 +01:00
Thomas Waldmann
e6231896cd emit a deprecation warning for --compression N
deprecating it in the source is not enough, we also need to tell the users to fix their scripts.
2015-11-02 00:14:01 +01:00
Thomas Waldmann
35280e9a65 label platform code, exclude freebsd and unknown platform from coverage measurement
this coverage configuration is mostly for travis and there we only can test linux and darwin.
2015-11-01 23:06:52 +01:00
Thomas Waldmann
0a6e6cfe2e refactor confirmation code, reduce code duplication, add tests 2015-11-01 19:18:29 +01:00
Thomas Waldmann
36900051c5 move test utilities to testsuite package, add FakeInputs utility 2015-11-01 19:13:45 +01:00
Thomas Waldmann
4a1c995244 add --show-rc option enable "terminating with X status, rc N" output, fixes #351
this is needed for tools like borgweb (or in general: when the rc value / exit status should
be logged for later review or directly seen on screen).

this is off by default, so the output is less verbose (and also does not fail tests which
counts lines).
2015-11-01 00:53:55 +01:00
Thomas Waldmann
4bf8c8a6f8 separate parse_args() from run()
parse_args concentrates on only processing arguments, including pre and post processing.
this needs to be called before run(), which is now receiving the return value of parse_args.

this was done so we can have the parsed args outside of the run function, e.g. in main().
2015-11-01 00:40:32 +01:00
Thomas Waldmann
7ea701f6f7 fix test failure for borg.exe
fatal error is rc 2 now (EXIT_ERROR)
2015-11-01 00:01:23 +01:00
TW
f651b014e6 Merge pull request #350 from ThomasWaldmann/fix-307
prettier connection closed message, fixes #307
2015-10-31 23:19:26 +01:00
TW
5f86959762 Merge pull request #349 from ThomasWaldmann/pretty-errors
prettier error messages, fixes #57
2015-10-31 22:44:04 +01:00
TW
39e4f344bd Merge pull request #348 from ThomasWaldmann/warn-slow-msgpack
emit a warning if we have a slow msgpack installed
2015-10-31 22:43:36 +01:00
Thomas Waldmann
1740384763 prettier connection closed message, fixes #307 2015-10-31 22:41:08 +01:00
Thomas Waldmann
762fdaadd8 prettier error messages, fixes #57
subclasses of "Error": do not show traceback
(this is used when a failure is expected and has rather trivial reasons and usually
does not need debugging)

subclasses of "ErrorWithTraceback": show a traceback
(this is for severe and rather unexpected stuff, like consistency / corruption issues
or stuff that might need debugging)

I reviewed all the Error subclasses whether they fit into the one or other class.

Also: fixed docstring typo, docstring formatting
2015-10-31 22:23:32 +01:00
Thomas Waldmann
3490469734 emit a warning if we have a slow msgpack installed
the reason for a slow msgpack can be:
- pip install: missing compiler (gcc)
- pip install: missing compiler parts (e.g. gcc-c++)
- pip install: cached wheel package that was built while the compiler wasn't present
- distribution package: badly built msgpack package
2015-10-31 20:37:21 +01:00
Radek Podgorny
5cc25d986a move away from RawConfigParser to ConfigParser
this is a recommended thing since direct use of RawConfigParser
is not deprecated according to python docs.
2015-10-29 02:37:43 +01:00
Thomas Waldmann
5992d4be58 Merge branch 'review-logging-levels' 2015-10-28 02:02:33 +01:00
Thomas Waldmann
dd577bf4ac fuse mount: fix unlocking of repository at umount time, fixes #331
there were 2 issues:
lock used another pid and tid than release because daemonize() made it different processes/threads.
solved by just determining PID only once and not using TID any more.

the other issue was that the repo needed and explicit closing.
2015-10-27 22:37:36 +01:00
Thomas Waldmann
92d31be087 atime unit test: test adapts to O_NOATIME support on platform 2015-10-26 23:16:41 +01:00