|Subject:||Re: [Duplicity-talk] [Duplicity-announce] Duplicity 0.7.00 Released|
|Date:||Thu, 23 Oct 2014 11:57:04 -0400|
This is the first release of the 0.7 series. Since this is a dot zero release, you know what to expect. Please test and report. All future development will be done on this branch. This series requires Python 2.6 and above to function. There will be more cleanup as we go along which hopefully will lead us into a 2.x/3.x stable codebase. We're still unclear on how that will go.
You can download the new version at 0.7.00.
Note that there are no RPM files at this time. My VM install of Fedora is no longer supported and does not support Python 2.6. If someone would like to volunteer to maintain the RPM files, that would be appreciated. I really do not want to revisit that learning curve again!
...KenNew in v0.7.00 (2014/10/23)---------------------------Enhancements:* Adjust unit tests to expect single FTP backend* Merged in lp:~moritzm/duplicity/duplicity- Use lftp for both FTP and FTPS* Merged in lp:~ed.so/duplicity/0.7-dpbx.importfix- fix this showstopper with the dropbox backend"NameError: global name 'rest' is not defined"* Merged in lp:~jflaker/duplicity/BugFix1325215- The reference to "--progress_rate" in the man page as a parameter isincorrect. Should be "--progress-rate".* Merged in lp:~hooloovoo/duplicity/updated-README-REPO- Changes to README-REPO to reflect the restructuring of the directories.* Fixed bug 1375304 with patch supplied by Aleksandar Ivanovic* Merged in lp:~ed.so/duplicity/webdav200fix-0.7- webdav backend fix "BackendException: Bad status code 200 reason OK. " whenrestarting an interrupted backup and overwriting partially uploaded volumes.* Merged in lp:~mterry/duplicity/require-2.6- Require at least Python 2.6.- Our code base already requires 2.6, because 2.6-isms have crept in. Usuallybecause we or a contributor didn't think to test with 2.4. And frankly,I'm not even sure how to test with 2.4 on a modern system.* Merged in lp:~mterry/duplicity/drop-pexpect- Drop our local copy of pexpect in favor of a system version.- It's only used by the pexpect ssh backend (and if you're opting into that,you probably can expect that you will need pexpect) and the tests.- I've done a quick smoketest (backed up and restored using--ssh-backend=pexpect) and it seemed to work fine with a modern versionof pexpect.* Merged in lp:~mterry/duplicity/2.6isms- Here's a whole stack of minor syntax modernizations that will becomenecessary in python3. They all work in python2.6.- I've added a new test to keep us honest and prevent backsliding on thesemodernizations. It runs 2to3 and will fail the test if 2to3 finds anythingthat needs fixing (with a specific set of exceptions carved out).- This branch has most of the easy 2to3 fixes, the ones with obvious andsafe syntax changes.- We could just let 2to3 do them for us, but ideally we use 2to3 as littleas possible, since it doesn't always know how to solve a given problem.I will propose a branch later that actually does use 2to3 to generatepython3 versions of duplicity if they are requested. But this is a firststep to clean up the code base.* Merged in lp:~mterry/duplicity/drop-static- Drop static.py.- This is some of the oldest code in duplicity! A bzr blame says it isunmodified (except for whitespace / comment changes) since revision 1.- But it's not needed anymore. Not really even since we updated to python2.4,which introduced the @staticmethod decorator. So this branch drops it andits test file.* Merged in lp:~mterry/duplicity/py3-map-filter- In py3, map and filter return iterable objects, not lists. So in each casewe use them, I've either imported the future version or switched to a listcomprehension if we really wanted a list.* Merged in lp:~mterry/duplicity/backend-unification- Reorganize and simplify backend code. Specifically:- Formalize the expected API between backends and duplicity. See the newfile duplicity/backends/README for the instructions I've given authors.- Add some tests for our backend wrapper class as well as some tests forindividual backends. For several backends that have some commands do allthe heavy lifting (hsi, tahoe, ftp), I've added fake little mock commandsso that we can test them locally. This doesn't truly test our integrationwith those commands, but at least lets us test the backend glue code.- Removed a lot of duplicate and unused code which backends were using (ornot using). This branch drops 700 lines of code (~20%)in duplicity/backends!- Simplified expectations of backends. Our wrapper code now does all theretrying, and all the exception handling. Backends can 'fire and forget'trusting our wrappers to give the user a reasonable error message.Obviously, backends can also add more details and make nicer errormessages. But they don't *have* to.- Separate out the backend classes from our wrapper class. Now there is nopossibility of namespace collision. All our API methods use oneunderscore. Anything else (zero or two underscores) are for the backendclass's use.- Added the concept of a 'backend prefix' which is used by par2 and giobackends to provide generic support for "schema+" in urls -- like par2+or gio+. I've since marked the '--gio' flag as deprecated, in favor of'gio+'. Now you can even nest such backends likepar2+gio+file://blah/blah.- The switch to control which cloudfiles backend had a typo. I fixed this,but I'm not sure I should have? If we haven't had complaints, maybe wecan just drop the old backend.- I manually tested all the backends we have (except hsi and tahoe -- butthose are simple wrappers around commands and I did test those via mocksper above). I also added a bunch more manual backend tests to./testing/manual/backendtest.py, which can now be run like the above totest all the files you have configured in config.py or you can pass it aURL which it will use for testing (useful for backend authors).* Merged in lp:~mterry/duplicity/py2.6.0- Support python 2.6.0.- Without this branch, we only support python >= 2.6.5 because that's whenpython's urlparse.py module became its more modern incarnation. (I won'tget into the wisdom of them making such a change in the middle of the2.6 lifecycle.)- Also, the version of lockfile that I have (0.8) doesn't work with python2.6.0 or 2.6.1 due to their implementation ofthreading.current_thread().ident returning None unexpectedly. So thisbranch tells lockfile not to worry about adding the current thread'sidentifier to the lock filename (we don't need a separate lock per thread,since our locking is per process).- I've tested with 2.6.0 and 2.7.6 (both extremes of our current support).* Update shebang line to python2 instead of python to avoid confusion.* Merged in lp:~3v1n0/duplicity/copy.com-backend- I've added a backend for Copy.com cloud storage, this supports all therequired operations and works as it should from my tests.- You can use it by calling duplicity with something like:copy://address@hidden:yaddress@hidden/duplicity- The only thing I've concerns with is the optimized support for _delete_listwhich can't be enabled here because the test_delete_list tries also todelete a not-existing files, and it requires the backend not to raise anexception in that case (is this somewhat wanted or could we do the same asfor _delete or _query?)* Merged in lp:~ed.so/duplicity/webdav200fix-0.7- webdav backend fix "BackendException: Bad status code 200 reason OK. " whenrestarting an interrupted backup and overwriting partially uploaded volumes.* Merged in lp:~mterry/duplicity/webdav-fixes- This branch fixes two issues I saw when testing the webdav backend:- 1) Errors like the following: "Attempt 1 failed. BackendException: File/tmp/duplicity-LQ1a0i-tempdir/mktemp-u2aiyX-2 not found locally after getfrom backend". These were caused by the _get() method not calling setdata()on the local path object, so the rest of the code thought it didn't exist.- 2) Some odd issues from stale responses/data. We have a couple places inwebdavbackend.py where we close the connection before making a requestbecause of this problem. But I've changed it to do it every time, morereliably, by putting a _close() call inside the request() method.- With this, the webdav backend seems fine to me.* Merged in lp:~antmak/duplicity/0.7-par2-fix- Useful fix for verbatim par2cmdline options (like "-t" in par2-tbb version)* Fixed bug 1327550: OverflowError: signed integer is greater than maximum- Major and minor device numbers are supposed to be one byte each. Someonehas crafted a special system image using OpenVZ where the major and minordevice numbers are much larger (ploop devices). We treat them as (0,0).* Added sxbacked.py, Skylable backend. Waiting on man page updates.* Merged in lp:~ed.so/duplicity/manpage.verify- Clarify verify's functionality as wished for by a user surprised with a bigbandwidth bill from rackspace.* Merged in lp:~jeffreydavidrogers/duplicity/duplicity- This change fixes two small typos in the duplicity man page.* Merged in lp:~johnleach/duplicity/1315437-swift-container-create- Check to see if the swift container exists before trying to create it,in case we don't have permissions to create containers. Fixes #1315437* Merged in lp:~ed.so/duplicity/manpage.blocksize- add --max_blocksize doc- reorder 'a note on filename prefixes' into alphabetical order
|[Prev in Thread]||Current Thread||[Next in Thread]|