diff -Nru fssync-1.5/CHANGES fssync-1.6/CHANGES --- fssync-1.5/CHANGES 2015-02-09 19:20:22.000000000 +0000 +++ fssync-1.6/CHANGES 2017-01-21 20:28:36.000000000 +0000 @@ -1,6 +1,12 @@ Change History ============== +1.6 (2017-01-21) +---------------- + +- --check option crashed on destination when it has untracked inodes + whose paths are greater (alphabetically) than any path on source side. + 1.5 (2015-02-09) ---------------- diff -Nru fssync-1.5/debian/changelog fssync-1.6/debian/changelog --- fssync-1.5/debian/changelog 2015-07-22 06:53:05.000000000 +0000 +++ fssync-1.6/debian/changelog 2017-01-21 19:59:00.000000000 +0000 @@ -1,8 +1,13 @@ -fssync (1.5-1build1) wily; urgency=medium +fssync (1.6-1) unstable; urgency=medium - * No-change rebuild for python3.5 transition + * New upstream release. + * Update Standards-Version to 3.9.8 (no change needed). + * Use debhelper 10 (no change). + * Unit tests are now run during build, so switch build-depends to python3-* + and add python3-pylibacl. + * d/copyright: update Copyright: year - -- Steve Langasek Wed, 22 Jul 2015 06:53:05 +0000 + -- Julien Muchembled Sat, 21 Jan 2017 20:59:00 +0100 fssync (1.5-1) unstable; urgency=medium diff -Nru fssync-1.5/debian/compat fssync-1.6/debian/compat --- fssync-1.5/debian/compat 2014-08-20 12:23:48.000000000 +0000 +++ fssync-1.6/debian/compat 2017-01-21 19:50:59.000000000 +0000 @@ -1 +1 @@ -8 +10 diff -Nru fssync-1.5/debian/control fssync-1.6/debian/control --- fssync-1.5/debian/control 2015-07-22 06:53:05.000000000 +0000 +++ fssync-1.6/debian/control 2017-01-21 19:59:00.000000000 +0000 @@ -1,10 +1,10 @@ Source: fssync Section: utils Priority: extra -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Julien Muchembled -Build-Depends: debhelper (>= 8.0.0), python-docutils -Standards-Version: 3.9.6 +Maintainer: Julien Muchembled +# python3-pylibacl is only for dh_auto_test +Build-Depends: debhelper (>= 10), python3-docutils, python3-pylibacl (>> 0.5.1-1.1) +Standards-Version: 3.9.8 Homepage: http://jmuchemb.eu/fssync.git Vcs-Git: git://jmuchemb.eu/fssync.git diff -Nru fssync-1.5/debian/copyright fssync-1.6/debian/copyright --- fssync-1.5/debian/copyright 2014-08-20 12:23:48.000000000 +0000 +++ fssync-1.6/debian/copyright 2017-01-21 19:48:24.000000000 +0000 @@ -1,7 +1,7 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Files: * -Copyright: 2011-2014 Julien Muchembled +Copyright: 2011-2017 Julien Muchembled License: GPL-3.0 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as diff -Nru fssync-1.5/fssync fssync-1.6/fssync --- fssync-1.5/fssync 2015-02-09 19:20:22.000000000 +0000 +++ fssync-1.6/fssync 2017-01-21 20:28:36.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- # -# Copyright (C) 2011-2014 Julien Muchembled +# Copyright (C) 2011-2017 Julien Muchembled # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License version 3 as @@ -48,7 +48,7 @@ lambda path: path.encode(encoding)) )(sys.getfilesystemencoding()) -class INF(object): +class INF: def __lt__(self, other): return False INF = INF() @@ -68,7 +68,7 @@ yield md5(d).digest() size -= n -class UTIME_OMIT(): +class UTIME_OMIT: def __divmod__(self, other): assert other == 1000000000 return 0, (1 << 30) - 2 @@ -111,7 +111,7 @@ Permset(e).add(t & 7) return a -class Stat(object): +class Stat: # XXX: Consider splitting mode and moving type from value to key, # in order to simplify code. @@ -170,7 +170,7 @@ return self -class RpcClient(object): +class RpcClient: def __init__(self, stdin, stdout, map_users=False): self.stdin = stdin @@ -229,7 +229,7 @@ *args, **kw) -class Local(object): +class Local: NULL_KEY = dumps(Stat.NULL_KEY, 2) NULL_VALUE = dumps(Stat.NULL_VALUE, 2) @@ -743,7 +743,7 @@ (path, dumps(s.key, 2), dumps(s.value, 2))) -class Remote(object): +class Remote: _open_args = None _pwd = _grp = staticmethod(lambda id: id) @@ -1104,7 +1104,10 @@ path_list.append((path, metadata)) write_rpc(stdout, dumps(path_list)) while s: - untracked.append((p, stat.S_IFMT(s.mode))) + try: + untracked[s.key][1].append(p) + except KeyError: + untracked[s.key] = s.value, [p] p, s = next(walk) r = [] if untracked: diff -Nru fssync-1.5/Makefile fssync-1.6/Makefile --- fssync-1.5/Makefile 2015-02-09 19:20:22.000000000 +0000 +++ fssync-1.6/Makefile 2017-01-21 20:28:36.000000000 +0000 @@ -16,3 +16,6 @@ clean: -rm -f fssync.1 + +test: + ./test diff -Nru fssync-1.5/README.rst fssync-1.6/README.rst --- fssync-1.5/README.rst 2015-02-09 19:20:22.000000000 +0000 +++ fssync-1.6/README.rst 2017-01-21 20:28:36.000000000 +0000 @@ -168,6 +168,8 @@ 2. fssync should not trash the page cache by using ``posix_fadvise``\ (2). Unfortunately, Linux does not implement ``POSIX_FADV_NOREUSE`` yet (see https://lkml.org/lkml/2011/6/24/136 for more information). + We could do like Bup_, which uses information returned by ``mincore``\ (2) + in order to `eject pages after save more selectively`__. 3. fssync process on remote side might leave parent directories with wrong permissions or modification times if it is terminated during specific @@ -207,6 +209,8 @@ .. target-notes:: .. _Btrfs: https://btrfs.wiki.kernel.org/ +.. _Bup: https://github.com/bup/bup +.. __: https://github.com/bup/bup/commit/b062252a5bca9b64d7b3034b6fd181424641f61e .. _NONE cipher switching: http://www.psc.edu/networking/projects/hpn-ssh/ .. _csync2: http://oss.linbit.com/csync2/ .. _rsync: http://rsync.samba.org/ diff -Nru fssync-1.5/test fssync-1.6/test --- fssync-1.5/test 2015-02-09 19:20:22.000000000 +0000 +++ fssync-1.6/test 2017-01-21 20:28:36.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- # -# Copyright (C) 2011-2014 Julien Muchembled +# Copyright (C) 2011-2017 Julien Muchembled # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License version 3 as @@ -85,7 +85,7 @@ fssync.Stat = Stat -class DummyRpcClient(object): +class DummyRpcClient: def __init__(self, remote): self.remote = remote