bzr 1.11rc1

Bazaar

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)