Table of Contents (3.3.22)

# Bazaar Release Notes

## bzr 1.11

Codename:

  “Eyes up!”

Released:

  2009-01-19

This first monthly release of Bazaar for 2009 improves Bazaar’s operation in Windows, Mac OS X, and other situations where file names are matched without regard to capitalization: Bazaar tries to match the case of an existing file. This release of Bazaar also improves the efficiency of Tortoise Windows Shell integration and lets it work on 64-bit platforms.

The UI through which Bazaar supports historic formats has been improved, so ‘bzr help formats’ now gives a simpler and shorter list, with clear advice.

This release also fixes a number of bugs, particularly a glitch that can occur when there are concurrent writes to a pack repository.

### Bug Fixes

- Fix failing test when CompiledChunksToLines is not available. (Vincent Ladeuil)

- Stacked branches don’t repeatedly open their transport connection. (John Arbash Meinel)

## bzr 1.11rc1

Codename:

  “Eyes up!”

Released:

  2009-01-09

### Changes

- Formats using Knit-based repository formats are now explicitly marked as deprecated. (Ian Clatworthy)

### New Features

- Add support for bzr tags -r 1..2, that is we now support showing tags applicable for a specified revision range. (Marius Kruger)

- `authentication.conf` now accepts pluggable read-only credential stores. Such a plugin (`netrc_credential_store`) is now included, handles the `$HOME/.netrc` file and can server as an example to implement other plugins. (Vincent Ladeuil)

- `shelve --list` can now be used to list shelved changes. (Aaron Bentley)

### Improvements

- Add trailing slash to directories in all output of `bzr ls`, except `bzr ls --null`. (Gordon P. Hemsley, #306424)

- `bzr revision-info` now supports a -d option to specify an alternative branch. (Michael Hudson)

- Add connection to a C++ implementation of the Windows Shell Extension which is able to fully replace the current Python implemented one. Advantages include 64bit support and reduction in overhead for processes which drag in shell extensions. (Mark Hammond)

- Support the Claws mail client directly, rather than via xdg-email. This prevents the display of an unnecessary modal dialog in Claws, informing the user that a file has been attached to the message, and works around bug #291847 in xdg-utils which corrupts the destination address.

- When working on a case-insensitive case-preserving file-system, as commonly found with Windows, bzr will often ignore the case of the arguments specified by the user in preference to the case of an existing item on the file-system or in the inventory to help prevent counter-intuitive behaviour on Windows. (Mark Hammond)

### Bug Fixes

- Allow BzrDir implementation to implement backing up of control directory. (#139691)

- `bzr push` creating a new stacked branch will now only open a single connection to the target machine. (John Arbash Meinel)

- Don’t call iteritems on transport_list_registry, because it may change during iteration. (Martin Pool, #277048)

- Don’t make a broken branch when pushing an unstackable-format branch that’s in a stackable shared repository to a location with default stack-on location. (Andrew Bennetts, #291046)

- Don’t require embedding user in HTTP(S) URLs do use authentication.conf. (Ben Jansen, Vincent Ladeuil, #300347)

- Fix a problem with CIFS client/server lag on windows colliding with an invariant-per-process algorithm for generating AtomicFile names (Adrian Wilkins, #304023)

- Fix bogus setUp signature in UnavailableFTPServer. (Gary van der Merwe, #313498)

- Fix compilation error in `_dirstate_helpers_c` on SunOS/Solaris. (Jari Aalto)

- Fix SystemError in `_patiencediff_c` module by calling PyErr_NoMemory() before returning NULL in PatienceSequenceMatcher_new. (Andrew Bennetts, #303206)

- Give proper error message for diff with non-existent dotted revno. (Marius Kruger, #301969)

- Handle EACCES (permission denied) errors when launching a message editor, and emit warnings when a configured editor cannot be started. (Andrew Bennetts)

- `$HOME/.netrc` file is now recognized as a read-only credential store if configured in `authentication.conf` with ‘password_encoding=netrc’ in the appropriate sections. (Vincent Ladeuil, #103029)

- Opening a stacked branch now properly shares the connection, rather than opening a new connection for the stacked-on branch. (John Arbash meinel)

- Preserve transport decorators while following redirections. (Vincent Ladeuil, #245964, #270863)

- Provides a finer and more robust filter for accepted redirections. (Vincent Ladeuil, #303959, #265070)

- `shelve` paths are now interpreted relative to the current working tree. (Aaron Bentley)

- `Transport.readv()` defaults to not reading more than 100MB in a single array. Further `RemoteTransport.readv` sets this to 5MB to work better with how it splits its requests. (John Arbash Meinel, #303538)

- Pack repositories are now able to reload the pack listing and retry the current operation if another action causes the data to be repacked. (John Arbash Meinel, #153786)

- `pull -v` now respects the log_format configuration variable. (Aaron Bentley)

- `push -v` now works on non-initial pushes. (Aaron Bentley)

- Use the short status format when the short format is used for log. (Vincent Ladeuil, #87179)

- Allow files to be renamed or moved via remove + add-by-id. (Charles Duffy, #314251)

### Documentation

- Improved the formats help topic to explain why multiple formats exist and to provide guidelines in selecting one. Introduced two new supporting help topics: current-formats and other-formats. (Ian Clatworthy)

### API Changes

- `LRUCache(after_cleanup_size)` was renamed to `after_cleanup_count` and the old name deprecated. The new name is used for clarity, and to avoid confusion with `LRUSizeCache(after_cleanup_size)`. (John Arbash Meinel)

- New `ForeignRepository` base class, to help with foreign branch support (e.g. svn). (Jelmer Vernooij)

- `node_distances` and `select_farthest` can no longer be imported from `bzrlib.graph`. They can still be imported from `bzrlib.deprecated_graph`, which has been the preferred way to import them since before 1.0. (Andrew Bennetts)

- The logic in commit now delegates inventory basis calculations to the `CommitBuilder` object; this requires that the commit builder in use has been updated to support the new `recording_deletes` and `record_delete` methods. (Robert Collins)

### Testing

- An HTTPS server is now available (it requires python-2.6). Future bzr versions will allow the use of the python-2.6 ssl module that can be installed for 2.5 and 2.4.

- `bzr selftest` now fails if new trailing white space is added to the bazaar sources. It only checks changes not committed yet. This means that PQM will now reject changes that introduce new trailing whitespace. (Marius Kruger)

- Introduced new experimental formats called `1.12-preview` and `1.12-preview-rich-root` to enable testing of related pending features, namely content filtering and filtered views. (Ian Clatworthy)

### Internals

- Added an `InventoryEntry` cache when deserializing inventories. Can cut the time to iterate over multiple RevisionsTrees in half. (John Arbash Meinel)

- Added `bzrlib.fifo_cache.FIFOCache` which is designed to have minimal overhead versus using a plain dict for cache hits, at the cost of not preserving the ‘active’ set as well as an `LRUCache`. (John Arbash Meinel)

- `bzrlib.patience_diff.unified_diff` now properly uses a tab character to separate the filename from the date stamp, and doesn’t add trailing whitespace when a date stamp is not supplied. (Adeodato Simó, John Arbash Meinel)

- `DirStateWorkingTree` and `DirStateWorkingTreeFormat` added as base classes of `WorkingTree4` and `WorkingTreeFormat4` respectively. (Ian Clatworthy)

- `KnitVersionedFiles._check_should_delta()` now uses the `get_build_details` api to avoid multiple hits to the index, and to properly follow the `compression_parent` rather than assuming it is the left-hand parent. (John Arbash Meinel)

- `KnitVersionedFiles.get_record_stream()` will now chose a more optimal ordering when the keys are requested ‘unordered’. Previously the order was fully random, now the records should be returned from each pack in turn, in forward I/O order. (John Arbash Meinel)

- `mutter()` will now flush the `~/.bzr.log` if it has been more than 2s since the last time it flushed. (John Arbash Meinel)

- New method `bzrlib.repository.Repository.add_inventory_by_delta` allows adding an inventory via an inventory delta, which can be more efficient for some repository types. (Robert Collins)

- Repository `CommitBuilder` objects can now accumulate an inventory delta. To enable this functionality call `builder.recording_deletes` and additionally call `builder.record_delete` when a delete against the basis occurs. (Robert Collins)

- The default HTTP handler has been changed from pycurl to urllib. The default is still pycurl for https connections. (The only advantage of pycurl is that it checks ssl certificates.) (John Arbash Meinel)

- `VersionedFiles.get_record_stream()` can now return objects with a storage_kind of `chunked`. This is a collection (list/tuple) of strings. You can use `osutils.chunks_to_lines()` to turn them into guaranteed ‘lines’ or you can use `''.join(chunks)` to turn it into a fulltext. This allows for some very good memory savings when asking for many texts that share ancestry, as the individual chunks can be shared between versions of the file. (John Arbash Meinel)

- `pull -v` and `push -v` use new function `bzrlib.log.show_branch_change` (Aaron Bentley)