Commit Graph

1353 Commits

Author SHA1 Message Date
Antoine Beaupré f48bbc3725 move defaults up in alternate implementation, use nameduple 2015-10-18 21:07:28 -04:00
Antoine Beaupré 158e6b529a cosmetic: pep8 and io is actually just out 2015-10-18 21:06:56 -04:00
Antoine Beaupré 4c6915cce5 fix typos and remove debug code 2015-10-18 21:06:37 -04:00
Antoine Beaupré 1c0fb82b59 check for the stream --progress uses, not stdin 2015-10-18 20:54:39 -04:00
Antoine Beaupré 92ac120fb0 default progress display to true if on a tty
this makes --progress a toggle: if there's a terminal, it turns it
off, if there isn't, it forces it on.
2015-10-17 21:21:33 -04:00
Antoine Beaupré e4f325182e Revert "no need to flush stderr in my tests"
It is actually necessary, for now.

This reverts commit 8fdd1eddf9.

Conflicts:
	borg/helpers.py
2015-10-17 21:21:33 -04:00
Antoine Beaupré ce1aaa9dfa Revert "fix conflict between --stats and --progress"
the columns handling fixed that isssue more elegantly

This reverts commit 7f77778419.

Conflicts:
	borg/helpers.py
2015-10-17 21:21:33 -04:00
Antoine Beaupré 0d8525ad8f add missing lines 2015-10-17 21:21:33 -04:00
Antoine Beaupré d666c86bfc adjust display of --stats
it was broken by recent commits.

also remove the __format__() anti-pattern from cache as well.
2015-10-17 21:21:33 -04:00
Antoine Beaupré 28d0a9ce84 human-readable representation of stats 2015-10-17 21:21:32 -04:00
Antoine Beaupré 66bfc6fce8 get rid of print_() function
this function was over-coupling the cache system and the statistics
module. they are now almost decoupled insofar as the cache system has
its own rendering system now that is called separately.

furthermore, we have a much more flexible formatting system that is
used coherently between --progress and --stats

the degenerate case here is if we want to change the label in the
statistics summary: in this case we need to override the default
__str__() representation to insert our own label.
2015-10-17 21:21:32 -04:00
Antoine Beaupré 118ee8679f remove custom microformat from stats
i saw the errors in my ways: __format__ is only to customize the
"format mini-language", what comes after ":" in a new string
format. unfortunately, we cannot easily refer to individual fields in
there, short of re-implementing a new formatting language, which seems
silly.

instead, we use properties to extract human-readable versions of the
statistics. more intuitive and certainly a more common pattern than
the exotic __format__().

also add unit tests to prove this all works
2015-10-17 21:21:32 -04:00
Antoine Beaupré 6b547e6554 no need to flush stderr in my tests 2015-10-17 21:21:32 -04:00
Antoine Beaupré 75c993b875 simplify progress display
we stop enforcing a minimum width for fields, it changes only on
logarithmic boundaries, so not a big problem. string conversion is
implicit

this gives us a little more width for the path
2015-10-17 21:21:32 -04:00
Antoine Beaupré ecae163072 use all available columns for path in progress
we use the new get_terminal_size() function, with a fallback for
Python 3.2. we default to 80 columns.

then we generate the stats bit and fill the rest with the path, as
previously, but with a possibly larger field.

note that this works with resizes in my test (uxterm)
2015-10-17 21:21:32 -04:00
Antoine Beaupré 7f28244cfe fix conflict between --stats and --progress
the --stats output would be slightly garbled by --progress, because of
the \r that is output at the last line...

example:

    initializing cache
    reading files cache
    processing files
    ------------------------------------------------------------------------------ s/twotone
    Archive name: 2015-10-15-test
2015-10-17 21:21:32 -04:00
Antoine Beaupré e8cf28f9a0 only show all files found in debug
a single -v flag shouldn't flood the console with all the files in the
path specified, it makes -v basically useless

this way, -v can also be used with --progress to have nicer output:

initializing cache
reading files cache
processing files
  5.20 GB O   2.66 GB C  25.13 MB D 27576 N baz/...
2015-10-17 21:21:31 -04:00
Antoine Beaupré d8f8076984 factor out status output so it is consistent
as it was, surrogates were not always removed, for example

we may also want to output at different levels or control if we want
to print unchanged files and so on
2015-10-17 21:21:31 -04:00
Antoine Beaupré b120e5f119 output more progress information
without this, there would be a solid 20 seconds here without any sort
of output on the console, regardless of the verbosity level. this
makes nice incremental messages telling the user that borg is not
stalled (or waiting for a lock, for that matter)

the "processing files" message is a little clunky, as we somewhat
abuse the cache to figure out if we are just starting... but it helps
if there are problems reading the actual files: it tells us the
initialization is basically complete and we're going ahead with the
reading of all the files.
2015-10-17 21:21:31 -04:00
Antoine Beaupré 3827c2b107 also show the number of files processed in --progress 2015-10-17 21:21:31 -04:00
Antoine Beaupré 3eebea8745 explain what the --progress flag does exactly
an alternative to this would be to use more than a letter in the
output, for example:

 orig: 16.82 GB comp: 9.44 GB dedup: 25.86 MB home/
2015-10-17 21:21:31 -04:00
TW 0e9c524266 Merge pull request #292 from anarcat/rename-usage
add missing rename usage to docs, closes #279
2015-10-17 20:06:23 +02:00
TW 2dda41dc2a Merge pull request #294 from anarcat/x-option
add -x flag, common to GNU utilities
2015-10-17 20:06:02 +02:00
TW b0f66e84a9 Merge pull request #295 from yagebu/master
docs: restructure installation.rst + add OS X install instructions
2015-10-17 20:05:36 +02:00
Jakob Schnitzer 462bb41e57 docs: AUTHORS: one borg in the title is enough 2015-10-17 18:40:15 +02:00
Jakob Schnitzer 7cc3becad9 docs: restructure installation.rst, add OSX instructions
Moved the list of dependencies to the corresponding subsection.
Collected all preparation steps under one heading.
Added link to the Arch Linux AUR package.
Install docs for OS X.
2015-10-17 18:40:15 +02:00
Antoine Beaupré eacb0b9e83 Merge branch 'logging-refactor' into upstream 2015-10-17 12:29:52 -04:00
Antoine Beaupré 4fd06e2634 add -x flag, common to GNU utilities
it should also probably be --one-file-system for coherence with du(1)
2015-10-17 12:23:45 -04:00
Antoine Beaupré e6c2359a60 add missing rename usage to docs, closes #279 2015-10-17 12:13:59 -04:00
Thomas Waldmann e7f25d7821 docs: use zlib,6 compression in some examples, fixes #275
This is what attic used by default, but borgbackup defaults to "no compression".

I just adjusted the command invocation, so we can keep the example output
(which shows that stuff was compressed).

Also: add FAQ item about compression.
2015-10-16 01:18:37 +02:00
TW a96770636c Merge pull request #270 from ThomasWaldmann/benchmark
integrate pytest-benchmark, test create, extract, list, delete, info,…
2015-10-15 10:58:20 +02:00
TW ba7e365238 Merge pull request #273 from yagebu/master
docs: Some small fixes
2015-10-15 10:56:48 +02:00
Thomas Waldmann 7efab2f254 benchmark tests: improve comments 2015-10-14 01:00:25 +02:00
Thomas Waldmann f8b536890b use pytest-benchmark from pypi 2015-10-14 00:54:32 +02:00
Jakob Schnitzer da926f2eb4 docs: fix code blocks in installation.rst
In one case removed the |project_name| and |git_url| variables to fix
the display of the code block. Shouldn't be problematic, as they are not
used consistently in this document anyway.

Put two notes in their own nice '.. note::' blocks.
2015-10-13 17:25:52 +02:00
Jakob Schnitzer 45a96fbc8d docs: change name of API section
from 'Borg Backup API documentation' to 'API Documentation'

It is pretty clear which software the API docs are for imho.
2015-10-13 17:02:15 +02:00
Jakob Schnitzer fb62435fc6 docs: remove 'Additional Notes' from TOC, fix markup
What's covered in the 'Additional Notes' section of the documentation
hardly seems important enough to deserve its own entry in the sidebar.
2015-10-13 16:50:27 +02:00
Jakob Schnitzer b42bbc6f68 docs: fix code blocks 2015-10-13 16:31:25 +02:00
Antoine Beaupré 256f89e697 add back logo, see #272
it's ugly as hell, but at least we have some logo there. keeping the issue opened for improvements
2015-10-13 08:35:12 -04:00
anarcat 97a9855417 Merge pull request #268 from anarcat/rtd-theme
switch to default rtd theme
2015-10-13 08:27:38 -04:00
Antoine Beaupré f31b4a639b fix headings in README
this makes it consistent with the rest of the documentation
2015-10-12 23:36:48 -04:00
Antoine Beaupré 6b604ac28c Merge remote-tracking branch 'origin/master' into rtd-theme
Conflicts:
	README.rst
2015-10-12 23:29:45 -04:00
Antoine Beaupré e59045fd24 move links from the sidebar to the readme
it seems sidebar links are not supported by the RTD theme just yet: https://github.com/snide/sphinx_rtd_theme/issues/254
2015-10-12 23:27:59 -04:00
Thomas Waldmann 08d96099f1 pytest-benchmark: use git master code, fixes py32 issues 2015-10-12 00:52:52 +02:00
Thomas Waldmann 0b9dcbf8e5 Merge branch 'master' of github.com:borgbackup/borg 2015-10-11 21:20:56 +02:00
Thomas Waldmann 8eaf460da3 setup.py: fix bug related to BORG_LZ4_PREFIX processing 2015-10-11 21:20:29 +02:00
Thomas Waldmann 07d9132f05 travis: use tox -r so it rebuilds the tox envs
it seems to keep .tox envs even if one removes stuff from requirements file.
if that stuff causes troubles, as here with pytest-benchmark, the troubles stay...
2015-10-11 17:41:25 +02:00
Thomas Waldmann 9dccc809a9 create a separate requirements file for travis - without pytest-benchmark
pytest-benchmark (and its dependency "statistics") needs py 3.3+.

we do not want to run benchmarks on travis anyway, but even its presence
makes trouble due to this, so we just remove it from there again.

as --benchmark-skip is also removed from tox configuration, this means benchmarks
are run by default when pytest-benchmark is installed.
2015-10-11 17:06:12 +02:00
Thomas Waldmann a9b1e591ab upgrade pytest-benchmark to a4 2015-10-11 16:25:43 +02:00
Thomas Waldmann a5a6ba0d77 integrate pytest-benchmark, test create, extract, list, delete, info, check, help, fixes #146
Instead of "realistic data", I chose the test data to be either all-zero (all-ascii-zero to be precise)
or all-random and benchmark them separately.
So we can better determine the cause (deduplication or storage) in case we see some performance regression.

"help" is benchmarked to see the minimum runtime when it basically does nothing.

also:
- refactor archiver execution core functionality into exec_cmd() so it can be used more flexibly
- tox: usually we want to skip benchmarks, only run them if requested manually
- install pytest-benchmark - run tox with "-r" to have it installed into your .tox envs
2015-10-11 16:07:11 +02:00