Table of Contents (3.3.22)

# Bazaar Release Notes

## bzr 1.13

Codename:

  paraskavedekatriaphobia

1.13:

  2009-03-14

1.13rc1:

  2009-03-10

1.13.1:

  2009-03-23

1.13.2:

  2009-04-27

GNU Changelog output can now be produced by `bzr log --gnu-changelog`. Debug flags can now be set in `~/.bazaar/bazaar.conf`. Lightweight checkouts and stacked branches should both be much faster over remote connections.

### Changes From 1.13.1 to 1.13.2

A regression was found in the 1.13.1 release. When bzr 1.13.1 and earlier push a stacked branch they do not take care to push all the parent inventories for the transferred revisions. This means that a smart server serving that branch often cannot calculate inventory deltas for the branch (because smart server does not/cannot open fallback repositories). Prior to 1.13 the server did not have a verb to stream revisions out of a repository, so that’s why this bug has appeared now.

### Bug Fixes

- Fix for bug 354036 ErrorFromSmartServer - AbsentContentFactory object has no attribute ‘get_bytes_as’ exception while pulling from Launchpad (Jean-Francois Roy, Andrew Bennetts, Robert Collins)

### Changes From 1.13final to 1.13.1

A couple regessions where found in the 1.13 release. The pyrex-generated C extensions are missing from the .tar.gz and .zip files. Documentation on how to generate GNU ChangeLogs is wrong.

### Bug Fixes

- Change `./bzr`’s `_script_version` to match ./bzrlib/__init__.py version_info. (Bob Tanner, Martin Pool, #345232)

- Distribution archives for 1.13 do not contain generated C extension modules (Jean-Francois Roy, Bob Tanner, #344465)

- GNU ChangeLog output can now be produced by bzr log –format gnu-changelog is incorrect (Deejay, Bob Tanner, Martin Pool, Robert Collins, #343928)

- `merge --force` works again. (Robert Collins, #342105)

### Changes From 1.13rc1 to 1.13final

- Fix “is not a stackable format” error when pushing a stackable-format branch with an unstackable-format repository to a destination with a default stacking policy. (Andrew Bennetts)

- Progress bars now show the rate of network activity for `bzr+ssh://` and `bzr://` connections. (Andrew Bennetts)

### Compatibility Breaks

- `bzr log --line` now indicates which revisions are merges with [merge] after the date. Scripts which parse the output of this command may need to be adjusted. (Neil Martinsen-Burrell)

### New Features

- `bzr reconfigure` now supports –with-trees and –with-no-trees options to change the default tree-creation policy of shared repositories. (Matthew Fuller, Marius Kruger, #145033)

- Debug flags can now be set in `~/.bazaar/bazaar.conf`. (Martin Pool)

- Filtered views provide a mask over the tree so that users can focus on a subset of a tree when doing their work. See `Filtered views` in chapter 7 of the User Guide and `bzr help view` for details. (Ian Clatworthy)

- GNU Changelog output can now be produced by `bzr log --gnu-changelog`. (Andrea Bolognani, Martin Pool)

- The `-Dmemory` flag now gives memory information on Windows. (John Arbash Meinel)

- Multiple authors for a commit can now be recorded by using the “–author” option multiple times. (James Westby, #185772)

- New clean-tree command, from bzrtools. (Aaron Bentley, Jelmer Vernooij)

- New command `bzr launchpad-open` opens a Launchpad web page for that branch in your web browser, as long as the branch is on Launchpad at all. (Jonathan Lange)

- New API for getting bugs fixed by a revision: Revision.iter_bugs(). (Jonathan Lange)

### Improvements

- All bzr `Hooks` classes are now registered in `bzrlib.hooks.known_hooks`. This removes the separate list from `bzrlib.tests` and ensures that all hooks registered there are correctly isolated by the test suite (previously `MutableTreeHooks` were not being isolated correctly). Further, documentation for hooks is now dynamically generated from the present HookPoints. `bzr hooks` will now also report on all the hooks present in the `bzrlib.hooks.known_hooks` registry. (Robert Collins)

- `bzr add` no longer prints `add completed` on success. Failure still prints an error message. (Robert Collins)

- `bzr branch` now has a `--no-tree` option which turns off the generation of a working tree in the new branch. (Daniel Watkins, John Klinger, #273993)

- Bazaar will now point out `bzr+ssh://` to the user when they use ssh://. (Jelmer Vernooij, #330535)

- `bzr -v info` now omits the number of committers branch statistic, making it many times faster for large projects. To include that statistic in the output, use `bzr -vv info`. (Ian Clatworthy)

- `bzr push` to a `bzr` url (`bzr://`, `bzr+ssh://` etc) will stream if the server is version 1.13 or greater, reducing roundtrips significantly. (Andrew Bennetts, Robert Collins)

- Lightweight Checkouts and Stacked Branches should both be much faster over remote connections. Building the working tree now batches up requests into approx 5MB requests, rather than a separate request for each file. (John Arbash Meinel)

- Support for GSSAPI authentication when using HTTP or HTTPS. (Jelmer Vernooij)

- The `bzr shelve` prompt now includes a ‘?’ help option to explain the short options better. (Daniel Watkins, #327429)

- `bzr lp-open` now falls back to the push location if it cannot find a public location. (Jonathan Lange, #332372)

- `bzr lp-open` will try to find the Launchpad URL for the location passed on the command line. This makes `bzr lp-open lp:foo` work as expected. (Jonathan Lange, #332705)

- `bzr send` now supports MH-E via `emacsclient`. (Eric Gillespie)

### Bug Fixes

- Allows `bzr log <FILE>` to be called in an empty branch without backtracing. (Vincent Ladeuil, #346431)

- Bazaar now gives a better message including the filename if it’s unable to read a file in the working directory, for example because of a permission error. (Martin Pool, #338653)

- `bzr cat -r<old> <path>` doesn’t traceback anymore when <path> has a file id in the working tree different from the one in revision <old>. (Vincent Ladeuil, #341517, #253806)

- `bzr send` help is more specific about how to apply merge directives. (Neil Martinsen-Burrell, #253470)

- `bzr missing` now uses `Repository.get_revision_delta()` rather than fetching trees and determining a delta itself. (Jelmer Vernooij, #315048)

- `bzr push` to a smart server no longer causes “Revision {set([(‘null:’,)])} not present …” errors when the branch has multiple root revisions. (Andrew Bennetts, #317654)

- `bzr shelve` now properly handle patches with no terminating newline. (Benoît PIERRE, #303569)

- `bzr unshelve` gives a more palatable error if passed a non-integer shelf id. (Daniel Watkins)

- Export now handles files that are not present in the tree. (James Westby, #174539)

- Fixed incorrect “Source format does not support stacking” warning when pushing to a smart server. (Andrew Bennetts, #334114)

- Fixed “sprout() got an unexpected keyword argument ‘source_branch’” error branching from old repositories. (Martin Pool, #321695)

- Make `bzr push --quiet <non-local location>` less chatty. (Kent Gibson, #221461)

- Many Branch hooks would not fire with `bzr://` and `bzr+ssh://` branches, and this was not noticed due to a bug in the test logic for branches. This is now fixed and a test added to prevent it reoccuring. (Robert Collins, Andrew Bennetts)

- Restore the progress bar on Windows. We were disabling it when TERM wasn’t set, but Windows doesn’t set TERM. (Alexander Belchenko, #334808)

- `setup.py build_ext` now gives a proper error when an extension fails to build. (John Arbash Meinel)

- Symlinks to non ascii file names are now supported. (Robert Collins, Vincent Ladeuil, #339055, #272444)

- Under rare circumstances (aka nobody reported a bug about it), the FTP transport could revert to ascii mode. It now stays in binary mode except when needed. (Vincent Ladeuil)

- Unshelve does not generate warnings about progress bars. (Aaron Bentley, #328148)

- shelve cleans up properly when unversioned files are specified. (Benoît Pierre, Aaron Bentley)

### Documentation

- Added `Organizing your workspace` to the User Guide appendices, summarizing some common ways of organizing trees, branches and repositories and the processes/workflows implied/enabled by each. (Ian Clatworthy)

- Hooks can now be self documenting. `bzrlib.hooks.Hooks.create_hook` is the entry point for this feature. (Robert Collins)

- The documentation for `shelve` and `unshelve` has been clarified. (Daniel Watkins, #327421, #327425)

### API Changes

- `bzr selftest` now fails if the bazaar sources contain trailing whitespace, non-unix style line endings and files not ending in a newline. About 372 files and 3243 lines with trailing whitespace was updated to comply with this. The code already complied with the other criteria, but now it is enforced. (Marius Kruger)

- `bzrlib.branch.PushResult` was renamed to `bzrlib.branch.BranchPushResult`. (Jelmer Vernooij)

- `Branch.fetch` and `Repository.fetch` now return None rather than a count of copied revisions and failed revisions. A while back we stopped ever reporting failed revisions because we started erroring instead, and the copied revisions count is not used in the UI at all - indeed it only reflects the repository status not changes to the branch itself. (Robert Collins)

- `Inventory.apply_delta` now raises an AssertionError if a file-id appears multiple times within the delta. (Ian Clatworthy)

- MutableTree.commit now favours the “authors” argument, with the old “author” argument being deprecated.

- Remove deprecated EmptyTree. (Martin Pool)

- `Repository.fetch` now accepts an optional `fetch_spec` parameter. A `SearchResult` or `MiniSearchResult` may be passed to `fetch_spec` instead of a `last_revision` to specify exactly which revisions to fetch. (Andrew Bennetts)

- `RepositoryAcquisitionPolicy.acquire_repository` now returns a tuple of `(repository, is_new_flag)`, rather than just the repository. (Andrew Bennetts)

- Revision.get_apparent_author() is now deprecated, replaced by Revision.get_apparent_authors(), which returns a list. The former now returns the first item that would be returned from the second.

- The `BranchBuilder` test helper now accepts a `timestamp` parameter to `build_commit` and `build_snapshot`. (Martin Pool)

- The `_fetch_*` attributes on `Repository` are now on `RepositoryFormat`, more accurately reflecting their intent (they describe a disk format capability, not state of a particular repository of that format). (Robert Collins)

### Internals

- Branching from a non-stacked branch on a smart protocol is now free of virtual file system methods. (Robert Collins, Andrew Bennetts)

- Branch and Repository creation on a bzr+ssh://server are now done via RPC calls rather than VFS calls, reducing round trips for pushing new branches substantially. (Robert Collins)

- `Branch.clone` now takes the `repository_policy` formerly used inside `BzrDir.clone_on_transport`, allowing stacking to be configured before the branch tags and revision tip are set. This fixes a race condition cloning stacked branches that would cause plugins to have hooks called on non-stacked instances. (Robert Collins, #334187)

- `BzrDir.cloning_metadir` now has a RPC call. (Robert Collins)

- `BzrDirFormat.__str__` now uses the human readable description rather than the sometimes-absent disk label. (Robert Collins)

- `bzrlib.fetch` is now composed of a sender and a sink component allowing for decoupling over a network connection. Fetching from or into a RemoteRepository with a 1.13 server will use this to stream the operation. (Andrew Bennetts, Robert Collins)

- `bzrlib.tests.run_suite` accepts a runner_class parameter supporting the use of different runners. (Robert Collins)

- Change how file_ids and revision_ids are interned as part of inventory deserialization. Now we use the real `intern()`, rather than our own workaround that would also cache a Unicode copy of the string, and never emptied the cache. This should slightly reduce memory consumption. (John Arbash Meinel)

- New branch method `create_clone_on_transport` that returns a branch object. (Robert Collins)

- New hook Commands[‘extend_command’] to allow plugins to access a command object before the command is run (or help generated from it), without overriding the command. (Robert Collins)

- New version of the `BzrDir.find_repository` verb supporting `_network_name` to support removing more _ensure_real calls. (Robert Collins)

- `RemoteBranchFormat` no longer claims to have a disk format string. (Robert Collins)

- `Repository` objects now have `suspend_write_group` and `resume_write_group` methods. These are currently only useful with pack repositories. (Andrew Bennetts, Robert Collins)

- `BzrDirFormat`, `BranchFormat` and `RepositoryFormat` objects now have a `network_name` for passing the format across RPC calls. (Robert Collins, Andrew Bennetts)

- `RepositoryFormat` objects now all have a new attribute `_serializer` used by fetch when reserialising is required. (Robert Collins, Andrew Bennetts)

- Some methods have been pulled up from `BzrBranch` to `Branch` to aid branch types that are not bzr branch objects (like RemoteBranch). (Robert Collins, Andrew Bennetts)

- Test adaptation has been made consistent throughout the built in tests. `TestScenarioApplier`, `multiply_tests_from_modules`, `adapt_tests`, `adapt_modules` have all been deleted. Please use `multiply_tests`, or for lower level needs `apply_scenarios` and `apply_scenario`. (Robert Collins)

- `TestSkipped` is now detected by TestCase and passed to the `TestResult` by calling `addSkip`. For older TestResult objects, where `addSkip` is not available, `addError` is still called. This permits test filtering in subunit to strip out skipped tests resulting in a faster fix-shrink-list-run cycle. This is compatible with the testtools protocol for skips. (Robert Collins)

- The `_index` of `KnitVersionedFiles` now supports the ability to scan an underlying index that is going to be incorporated into the `KnitVersionedFiles` object, to determine if it has missing delta references. The method is `scan_unvalidated_index`. (Andrew Bennetts, Robert Collins)

- There is a RemoteSink object which handles pushing to smart servers. (Andrew Bennetts, Robert Collins)

- `TransportTraceDecorator` now logs `put_bytes_non_atomic` and `rmdir` calls. (Robert Collins)

- `VersionedFiles` record adapters have had their signature change from `(record, record.get_bytes_as(record.storage_kind))` to `(record)` reducing excess duplication and allowing adapters to access private data in record to obtain content more efficiently. (Robert Collins)

- We no longer probe to see if we should create a working tree during clone if we cannot get a local_abspath for the new bzrdir. (Robert Collins)