bzr 2.1.0b3

Bazaar

bzr 2.1.0b3

Codename:after sprint recovery
2.1.0b3:2009-11-16

This release was pushed up from its normal release cycle due to a regression in python 2.4 compatibility in 2.1.0b2. Since this regression was caught before 2.1.0b2 was officially announced, the full changelog includes both 2.1.0b3 and 2.1.0b2 changes.

Highlights of 2.1.0b3 are: new globbing code for all commands on Windows, the test suite now conforms to python’s trunk enhanced semantics (skip, etc.), and bzr info -v will now report the correct branch and repo formats for Remote objects.

New Features

  • Users can define a shelve editor to provide shelf functionality at a granularity finer than per-patch-hunk. (Aaron Bentley)

Bug Fixes

  • Fix for shell completion and short options. (Benoît PIERRE)
  • Fix bzr --profile-imports with Python 2.6. (Martin Pool)
  • Hooks daughter classes should always call the base constructor. (Alexander Belchenko, Vincent Ladeuil, #389648)
  • Improve “Binary files differ” hunk handling. (Aaron Bentley, #436325)
  • On Windows, do glob expansion at the command-line level (as is usually done in bash, etc.) This means that all commands get glob expansion (bzr status, bzr add, bzr mv, etc). It uses a custom command line parser, which allows us to know if a given section was quoted. It means you can now do bzr ignore "*.py". (John Arbash Meinel, #425510, #426410, #194450)
  • Sanitize commit messages that come in from the ‘-m’ flag. We translate ‘rn’ => ‘n’ and a plain ‘r’ => ‘n’. The storage layer doesn’t allow those because XML store silently translate it anyway. (The parser auto-translates rn => n in ways that are hard for us to catch.)
  • Show correct branch and repository format descriptions in bzr info -v on a smart server location. (Andrew Bennetts, #196080)
  • The fix for bug #186920 accidentally broke compatibility with python 2.4. (Vincent Ladeuil, #475585)
  • Using Repository.get_commit_builder().record_iter_changes() now correctly sets self.inv_sha1 to a sha1 string and self.new_inventory to an Inventory instance after calling self.finish_inventory(). (Previously it accidently set both values as a tuple on self.inv_sha1. This was missed because repo.add_revision ignores the supplied inventory sha1 and recomputes the sha1 from the repo directly. (John Arbash Meinel)
  • Shelve command refuse to run if there is no real terminal. (Alexander Belchenko)
  • Avoid unnecessarily flushing of trace file; it’s now unbuffered at the Python level. (Martin Pool)

Documentation

  • Include Japanese translations for documentation (Inada Naoki)
  • New API ui_factory.make_output_stream to be used for sending bulk (rather than user-interaction) data to stdout. This automatically coordinates with progress bars or other terminal activity, and can be overridden by GUIs. (Martin Pool, 493944)

Internals

  • Some of the core groupcompress functionality now releases the GIL before operation. Similar to how zlib and bz2 operate without the GIL in the core compression and decompression routines. (John Arbash Meinel)

Testing

  • -Dhpssvfs will now trigger on RemoteBzrDir._ensure_real, providing more debugging of VFS access triggers. (Robert Collins)
  • KnownFailure is now signalled to ExtendedTestResult using the same method that Python 2.7 uses - addExpectedFailure. (Robert Collins)
  • --parallel=fork is now compatible with –subunit. (Robert Collins, Vincent Ladeuil, #419776)
  • Reporting of failures shows test ids not descriptions and thus shows parameterised tests correctly. (Robert Collins)
  • TestNotApplicable is now handled within the TestCase.run method rather than being looked for within ExtendedTestResult.addError. This provides better handling with other TestResult objects, degrading to sucess rather than error. (Robert Collins)
  • The private method _testConcluded on ExtendedTestResult has been removed - it was empty and unused. (Robert Collins)
  • UnavailableFeature is now handled within the TestCase.run method rather than being looked for within addError. If the Result object does not have an addNotSupported method, addSkip is attempted instead, and failing that addSuccess. (Robert Collins)
  • When a TestResult does not have an addSkip method, skipped tests are now reported as successful tests, rather than as errors. This change is to make it possible to get a clean test run with a less capable TestResult. (Robert Collins)