mirror of
https://github.com/borgbackup/borg.git
synced 2026-04-22 14:49:03 -04:00
merged master
This commit is contained in:
commit
f9d90482c4
8 changed files with 20 additions and 5 deletions
2
CHANGES
2
CHANGES
|
|
@ -7,6 +7,8 @@ Version 0.16
|
|||
------------
|
||||
|
||||
(bugfix release, released on X)
|
||||
- Fix typo preventing the security confirmation prompt from working (#303)
|
||||
- Improve handling of systems with improperly configured file system encoding (#289)
|
||||
- Fix "All archives" output for attic info. (#183)
|
||||
- More user friendly error message when repository key file is not found (#236)
|
||||
- Fix parsing of iso 8601 timestamps with zero microseconds (#282)
|
||||
|
|
|
|||
|
|
@ -122,6 +122,10 @@ class Archive:
|
|||
class AlreadyExists(Error):
|
||||
"""Archive {} already exists"""
|
||||
|
||||
class IncompatibleFilesystemEncodingError(Error):
|
||||
"""Failed to encode filename "{}" into file system encoding "{}". Consider configuring the LANG environment variable."""
|
||||
|
||||
|
||||
def __init__(self, repository, key, manifest, name, cache=None, create=False,
|
||||
checkpoint_interval=300, numeric_owner=False, progress=False):
|
||||
self.cwd = os.getcwd()
|
||||
|
|
@ -264,6 +268,8 @@ class Archive:
|
|||
os.rmdir(path)
|
||||
else:
|
||||
os.unlink(path)
|
||||
except UnicodeEncodeError:
|
||||
raise self.IncompatibleFilesystemEncodingError(path, sys.getfilesystemencoding())
|
||||
except OSError:
|
||||
pass
|
||||
mode = item[b'mode']
|
||||
|
|
|
|||
|
|
@ -213,6 +213,8 @@ Type "Yes I am sure" if you understand this and want to continue.\n""")
|
|||
def do_extract(self, args):
|
||||
"""Extract archive contents"""
|
||||
# be restrictive when restoring files, restore permissions later
|
||||
if sys.getfilesystemencoding() == 'ascii':
|
||||
print('Warning: File system encoding is "ascii", extracting non-ascii filenames will not be supported.')
|
||||
os.umask(0o077)
|
||||
repository = self.open_repository(args.archive)
|
||||
manifest, key = Manifest.load(repository)
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ class Cache:
|
|||
if env_var_override and os.environ.get(env_var_override):
|
||||
print("Yes (From {})".format(env_var_override))
|
||||
return True
|
||||
if sys.stdin.isatty():
|
||||
if not sys.stdin.isatty():
|
||||
return False
|
||||
try:
|
||||
answer = input('Do you want to continue? [yN] ')
|
||||
|
|
|
|||
|
|
@ -106,18 +106,19 @@ class ArchiverTestCaseBase(AtticTestCase):
|
|||
self.assert_equal(exit_code, ret)
|
||||
return output
|
||||
args = list(args)
|
||||
stdout, stderr = sys.stdout, sys.stderr
|
||||
stdin, stdout, stderr = sys.stdin, sys.stdout, sys.stderr
|
||||
try:
|
||||
sys.stdin = StringIO()
|
||||
output = StringIO()
|
||||
sys.stdout = sys.stderr = output
|
||||
ret = self.archiver.run(args)
|
||||
sys.stdout, sys.stderr = stdout, stderr
|
||||
sys.stdin, sys.stdout, sys.stderr = stdin, stdout, stderr
|
||||
if ret != exit_code:
|
||||
print(output.getvalue())
|
||||
self.assert_equal(exit_code, ret)
|
||||
return output.getvalue()
|
||||
finally:
|
||||
sys.stdout, sys.stderr = stdout, stderr
|
||||
sys.stdin, sys.stdout, sys.stderr = stdin, stdout, stderr
|
||||
|
||||
def create_src_archive(self, name):
|
||||
self.attic('create', self.repository_location + '::' + name, src_dir)
|
||||
|
|
|
|||
|
|
@ -27,4 +27,5 @@
|
|||
.. _Arch Linux: https://aur.archlinux.org/packages/attic/
|
||||
.. _Slackware: http://slackbuilds.org/result/?search=Attic
|
||||
.. _Cython: http://cython.org/
|
||||
.. _virtualenv: https://pypi.python.org/pypi/virtualenv/
|
||||
.. _mailing list discussion about internals: http://librelist.com/browser/attic/2014/5/6/questions-and-suggestions-about-inner-working-of-attic>
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ Easy installation
|
|||
-----------------
|
||||
You can use pip to install |project_name| quickly and easily::
|
||||
|
||||
$ pip install attic
|
||||
$ pip3 install attic
|
||||
|
||||
|project_name| is also part of the Debian_, Ubuntu_, `Arch Linux`_ and Slackware_
|
||||
distributions of GNU/Linux.
|
||||
|
|
|
|||
|
|
@ -20,6 +20,9 @@ Newer versions are available from homebrew_ on OS X and from FreeBSD ports.
|
|||
The llfuse_ python package is also required if you wish to mount an
|
||||
archive as a FUSE filesystem.
|
||||
|
||||
Virtualenv_ can be used to build and install |project_name|
|
||||
without affecting the system Python or requiring root access.
|
||||
|
||||
Common compilation pre-requisites
|
||||
---------------------------------
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue