bzr 2.0.4

Bazaar

bzr 2.0.4

Codename:smooth sailing
2.0.4:2010-01-21

The fourth bugfix-only release in the 2.0 series contains more than a dozen bugfixes relative to 2.0.3. The primary focus is on handling interruptions and concurrent operations more cleanly, there is also a fair improvement to bzr export when exporting a remote branch.

Bug Fixes

  • bzr annotate on another branch with -r branch:... no longer fails with an ObjectNotLocked error. (Andrew Bennetts, #496590)
  • bzr export dir now requests all file content as a record stream, rather than requsting the file content one file-at-a-time. This can make exporting over the network significantly faster (54min => 9min in one case). (John Arbash Meinel, #343218)
  • bzr serve no longer slowly leaks memory. The compiled bzrlib.bencode.Encoder() class was using __del__ to cleanup and free resources, and it should have been using __dealloc__. This will likely have an impact on any other process that is serving for an extended period of time. (John Arbash Meinel, #494406)
  • Check for SIGINT (Ctrl-C) and other signals immediately if readdir returns EINTR by calling PyErr_CheckSignals. This affected the optional _readdir_pyx extension. (Andrew Bennetts, #495023)
  • Concurrent autopacks will no longer lose a newly created pack file. There was a race condition, where if the reload happened at the right time, the second packer would forget the name of the newly added pack file. (John Arbash Meinel, Gareth White, #507566)
  • Give a clearer message if the lockdir disappears after being apparently successfully taken. (Martin Pool, #498378)
  • Give a warning when fetching between repositories (local or remote) with sufficiently different formats that the content will need to be serialized (ie InterDifferingSerializer or inventory-deltas), so the user has a clue that upgrading could make it faster. (Martin Pool, #456077)
  • If we fail to open ~/.bzr.log write a clear message to stderr rather than using warning(). The log file is opened before logging is set up, and it leads to very confusing: ‘no handlers for “bzr”’ messages for users, rather than something nicer. (John Arbash Meinel, Barry Warsaw, #503886)
  • Refuse to build with any Pyrex 0.9.4 release, as they have known bugs. (Martin Pool, John Arbash Meinel, #449372)
  • setup.py bdist_rpm now properly finds extra files needed for the build. (there is still the distutils bug http://bugs.python.org/issue644744) (Joe Julian, #175839)
  • The 2a format wasn’t properly restarting autopacks when something changed underneath it (like another autopack). Now concurrent autopackers will properly succeed. (John Arbash Meinel, #495000)
  • TreeTransform can now handle when a delta says that the file id for the tree root changes. Rather than trying to rename your working directory, or failing early saying that you can’t have multiple tree roots. This also fixes revert, update, and pull when the root id changes. (John Arbash Meinel, #494269, #504390)
  • _update_current_block no longer suppresses exceptions, so ^C at just the right time will get propagated, rather than silently failing to move the block pointer. (John Arbash Meinel, Gareth White, #495023)

Testing

  • We have a new test_source that ensures all pyrex cdef functions handle exceptions somehow. (Possibly by setting # cannot_raise rather than an except ?: clause.) This should help prevent bugs like bug #495023. (John Arbash Meinel)