bzr 2.1.0rc1

Bazaar

bzr 2.1.0rc1

Codename:the ‘new’ stable
2.1.0rc1:2009-01-21

This is the first stable release candidate for Bazaar’s 2.1 series. From this point onwards, the 2.1 series will be considered stable (as the 2.0 series) and only bugfixes are expected to be incorporated. The dozen or so bugfixes in the 2.0.4 release are also included in this release (along with more than 15 more bugfixes). Some of the interesting features are support for per-file merge hooks, bzr unshelve --preview, support for using ! in ignore files to exclude files from being ignored, a small memory leak was squashed, and many ObjectNotLocked errors were fixed. This looks to be a very good start for a new stable series.

New Features

  • Add bug information to log output when available. (Neil Martinsen-Burrell, Guillermo Gonzalez, #251729)
  • Added merge_file_content hook point to Merger, allowing plugins to register custom merge logic, e.g. to provide smarter merging for particular files.
  • Bazaar now includes the news_merge plugin. It is disabled by default, to enable it add a news_merge_files option to your configuration. Consult bzr help news_merge for more information. (Andrew Bennetts)
  • bzr branch now takes a --bind option. This lets you branch and bind all in one command. (Ian Clatworthy)
  • bzr switch now takes a --revision option, to allow switching to a specific revision of a branch. (Daniel Watkins, #183559)
  • bzr unshelve --preview can now be used to show how a patch on the shelf would be applied to the working tree. (Guilherme Salgado, #308122)
  • bzr update now takes a --revision argument. This lets you change the revision of the working tree to any revision in the ancestry of the current or master branch. (Matthieu Moy, Mark Hammond, Martin Pool, #45719)
  • -Dbytes can now be used to display the total number of bytes transferred for the current command. This information is always logged to .bzr.log for later inspection. (John Arbash Meinel)
  • New ignore patterns. Patterns prefixed with ‘!’ are exceptions to ignore patterns and take precedence over regular ignores. Such exceptions are used to specify files that should be versioned which would otherwise be ignored. Patterns prefixed with ‘!!’ act as regular ignore patterns, but have highest precedence, even over the ‘!’ exception patterns. (John Whitley, #428031)
  • The supress_warnings configuration option has been introduced to disable various warnings (it currently only supports the format_deprecation warning). The new option can be set in any of the following locations: bazaar.conf, locations.conf and/or branch.conf. (Ted Gould, Matthew Fuller, Vincent Ladeuil)

Bug Fixes

  • Always show a message if an OS error occurs while trying to run a user-specified commit message editor. (Martin Pool, #504842)
  • bzr diff will now use the epoch when it is unable to determine the timestamp of a file, if the revision it was introduced in is a ghost. (Jelmer Vernooij, #295611)
  • bzr switch -b can now create branches that are located using directory services such as lp:, even when the branch name doesn’t contain a ‘/’. (Neil Martinsen-Burrell, #495263)
  • bzr unshelve has improved messages about what it is doing. (Neil Martinsen-Burrell, #496917)
  • Concurrent autopacking is more resilient to already-renamed pack files. If we find that a file we are about to obsolete is already obsoleted, we do not try to rename it, and we leave the file in obsolete_packs. The code is also fault tolerant if a file goes missing, assuming that another process already removed the file. (John Arbash Meinel, Gareth White, #507557)
  • Fix “Too many concurrent requests” in reconcile when network connection fails. (Andrew Bennetts, #503878)
  • Fixed a side effect mutation of RemoteBzrDirFormat._network_name that caused some tests to fail when run in a non-default order. Probably no user impact. (Martin Pool, #504102)
  • Fixed ObjectNotLocked error in bzr cat -rbranch:../foo FILE. (Andrew Bennetts, #506274)
  • FTP transports support Unicode paths by encoding/decoding them as utf8. (Vincent Ladeuil, #472161)
  • Listen to the SIGWINCH signal to update the terminal width. (Vincent Ladeuil, #316357)
  • Progress bars are now hidden when --quiet is given. (Martin Pool, #320035)
  • SilentUIFactory now supports make_output_stream and discards whatever is written to it. This un-breaks some plugin tests that depended on this behaviour. (Martin Pool, #499757)
  • When operations update the working tree, all affected files should end up with the same mtime. (eg. when versioning a generated file, if you update the source and the generated file together, the generated file should appear up-to-date.) (John Arbash Meinel, Martin <gzlist>, #488724)

Improvements

  • Added add_cleanup and cleanup_now to bzrlib.command.Command. All the builtin commands now use add_cleanup rather than try/finally blocks where applicable as it is simpler and more robust. (Andrew Bennetts)
  • All except a small number of storage formats are now hidden, making the help for numerous commands far more digestible. (Ian Clatworthy)
  • Attempts to open a shared repository as a branch (e.g. bzr branch path/to/repo) will now include “location is a repository” as a hint in the error message. (Brian de Alwis, Andrew Bennetts, #440952)
  • Push will now inform the user when they are trying to push to a foreign VCS for which roundtripping is not supported, and will suggest them to use dpush. (Jelmer Vernooij)
  • The version of bzr being run is now written to the log file. (__monty__, #257170)
  • Transport network activity indicator is shown more of the time when Bazaar is doing network IO. (Martin Pool)

Documentation

  • Add documentation on creating merges with more than one parent. (Neil Martinsen-Burrell, #481526)
  • Better explain the –uncommitted option of merge. (Neil Martinsen-Burrell, #505088)
  • Improve discussion of pending merges in the documentation for revert. (Neil Martinsen-Burrell, #505093)
  • Improved help for bzr send. (Martin Pool, Bojan Nikolic)
  • There is a System Administrator’s Guide in doc/en/admin-guide, including discussions of installation, relevant plugins, security and backup. (Neil Martinsen-Burrell)
  • The conflicts help topic has been renamed to conflict-types. (Ian Clatworthy)
  • The User Reference is now presented as a series of topics. Many of the included topics have link and format tweaks applied. (Ian Clatworthy)

API Changes

  • Added cachedproperty decorator to bzrlib.decorators. (Andrew Bennetts)
  • Many test features were renamed from FooFeature to foo_feature to be consistent with instances being lower case and classes being CamelCase. For the features that were more likely to be used, we added a deprecation thunk, but not all. (John Arbash Meinel)
  • Merger classes (such as Merge3Merger) now expect a this_branch parameter in their constructors, and provide this_branch as an attribute. (Andrew Bennetts)
  • The Branch hooks pre_change_branch_tip no longer masks exceptions raised by plugins - the original exceptions are now preserved. (Robert Collins)
  • The Transport Server.tearDown method is now renamed to stop_server and setUp to start_server for consistency with our normal naming pattern, and to avoid confusion with Python’s TestCase.tearDown. (Martin Pool)
  • WorkingTree.update implementations must now accept a revision parameter.

Internals

  • Added BzrDir.open_branchV3 smart server request, which can receive a string of details (such as “location is a repository”) as part of a nobranch response. (Andrew Bennetts, #440952)
  • New helper osutils.UnicodeOrBytesToBytesWriter which encodes unicode objects but passes str objects straight through. This is used for selftest but may be useful for diff and other operations that generate mixed output. (Robert Collins)
  • New exception NoRoundtrippingSupport, for use by foreign branch plugins. (Jelmer Vernooij)

Testing

  • bzrlib.tests.permute_for_extension is a helper that simplifies running all tests in the current module, once against a pure python implementation, and once against an extension (pyrex/C) implementation. It can be used to dramatically simplify the implementation of load_tests. (John Arbash Meinel)
  • bzrlib.tests.TestCase now subclasses testtools.testcase.TestCase. This permits features in testtools such as getUniqueInteger and getUniqueString to be used. Because of this, testtools version 0.9.2 or newer is now a dependency to run bzr selftest. Running with versions of testtools less than 0.9.2 will cause bzr to error while loading the test suite. (Robert Collins)
  • Shell-like tests now support the command “mv” for moving files. The syntax for mv file1 file2, mv dir1 dir2 and mv file dir is supported. (Neil Martinsen-Burrell)
  • The test progress bar no longer distinguishes tests that ‘errored’ from tests that ‘failed’ - they’re all just failures. (Martin Pool)