bzr 1.12

Bazaar

bzr 1.12

Codename:1234567890
1.12:2009-02-13
1.12rc1:2009-02-10

This release of Bazaar contains many improvements to the speed, documentation and functionality of bzr log and the display of logged revisions by bzr status. bzr now also gives a better indication of progress, both in the way operations are drawn onto a text terminal, and by showing the rate of network IO.

Changes from RC1 to Final

  • bzr init --development-wt5[-rich-root] would fail because of circular import errors. (John Arbash Meinel, #328135)
  • Expanded the help for log and added a new help topic called log-formats. (Ian Clatworthy)

Compatibility Breaks

  • By default, bzr status after a merge now shows just the pending merge tip revisions. This improves the signal-to-noise ratio after merging from trunk and completes much faster. To see all merged revisions, use the new -v flag. (Ian Clatworthy)
  • bzr log --line now shows any tags after the date and before the commit message. If you have scripts which parse the output from this command, you may need to adjust them accordingly. (Ian Clatworthy)
  • bzr log --short now shows any additional revision properties after the date and before the commit message. Scripts that parse output of the log command in this situation may need to adjust. (Neil Martinsen-Burrell)
  • The experimental formats 1.12-preview and 1.12-preview-rich-root have been renamed development-wt5 and development-wt5-rich-root respectively, given they are not ready for release in 1.12. (Ian Clatworthy)
  • read_bundle_from_url has been deprecated. (Vincent Ladeuil)

New Features

  • Add support for filtering bzr missing on revisions. Remote revisions can be filtered using bzr missing -r -20..-10 and local revisions can be filtered using bzr missing --my-revision -20..-10. (Marius Kruger)
  • bzr log -p displays the patch diff for each revision. When logging a file, the diff only includes changes to that file. (Ian Clatworthy, #202331, #227335)
  • bzr log supports a new option called -n N or --level N. A value of 0 (zero) means “show all nested merge revisions” while a value of 1 (one) means “show just the top level”. Values above 1 can be used to see a limited amount of nesting. That can be useful for seeing the level or two below PQM submits for example. To force the --short and --line formats to display all nested merge revisions just like --long does by default, use a command like bzr log --short -n0. To display just the mainline using --long format, bzr log --long -n1. (Ian Clatworthy)

Improvements

  • bzr add more clearly communicates success vs failure. (Daniel Watkins)
  • bzr init will now print a little less verbose output. (Marius Kruger)
  • bzr log is now much faster in many use cases, particularly at incrementally displaying results and filtering by a revision range. (Ian Clatworthy)
  • bzr log --short and bzr log --line now show tags, if any, for each revision. The tags are shown comma-separated inside {}. For short format, the tags appear at the end of line before the optional [merge] indicator. For line format, the tags appear after the date. (Ian Clatworthy)
  • Progress bars now show the rate of activity for some sftp operations, and they are drawn different. (Martin Pool, #172741)
  • Progress bars now show the rate of activity for urllib and pycurl based http client implementations. The operations are tracked at the socket level for better precision. (Vincent Ladeuil)
  • Rule-based preferences can now accept multiple patterns for a set of rules. (Marius Kruger)
  • The ancestor: revision spec will now default to referring to the parent of the branch if no other location is given. (Daniel Watkins, #198417)
  • The debugger started as a result of setting $BZR_PDB works around a bug in pdb, http://bugs.python.org/issue4150. The bug can cause truncated tracebacks in Python versions before 2.6. (Andrew Bennetts)
  • VirtualVersionedFiles now implements iter_lines_added_or_present_in_keys. This allows the creation of new branches based on stacked bzr-svn branches. (#311997)

Bug Fixes

  • bzr annotate --show-ids doesn’t give a backtrace on empty files anymore. (Anne Mohsen, Vincent Ladeuil, #314525)
  • bzr log FILE now correctly shows mainline revisions merging a change to FILE when the --short and --line log formats are used. (Ian Clatworthy, #317417)
  • bzr log -rX..Y FILE now shows the history of FILE provided it existed in Y or X, even if the file has since been deleted or renamed. If no range is given, the current/basis tree and initial tree are searched in that order. More generally, log now interprets filenames in their historical context. (Ian Clatworthy, #175520)
  • bzr status now reports nonexistent files and continues, then errors (with code 3) at the end. (Karl Fogel, #306394)
  • Don’t require the present compression base in knits to be the same when adding records in knits. (Jelmer Vernooij, #307394)
  • Fix a problem with CIFS client/server lag on Windows colliding with an invariant-per-process algorithm for generating AtomicFile names (Adrian Wilkins, #304023)
  • Many socket operations now handle EINTR by retrying the operation. Previously EINTR was treated as an unrecoverable failure. There is a new until_no_eintr helper function in bzrlib.osutils. (Andrew Bennetts)
  • Support symlinks with non-ascii characters in the symlink filename. (Jelmer Vernooij, #319323)
  • There was a bug in how we handled resolving when a file is deleted in one branch, and modified in the other. If there was a criss-cross merge, we would cause the deletion to conflict a second time. (Vincent Ladeuil, John Arbash Meinel)
  • There was another bug in how we chose the correct intermediate LCA in criss-cross merges leading to several kind of changes be incorrectly handled. (John Arbash Meinel, Vincent Ladeuil)
  • Unshelve now handles deleted paths without crashing. (Robert Collins)

Documentation

  • Improved plugin developer documentation. (Martin Pool)

API Changes

  • ProgressBarStack is deprecated; instead use ui_factory.nested_progress_bar to create new progress bars. (Martin Pool)
  • ForeignVcsMapping() now requires a ForeignVcs object as first argument. (Jelmer Vernooij)
  • ForeignVcsMapping.show_foreign_revid() has been moved to ForeignVcs. (Jelmer Vernooij)
  • read_bundle_from_url is deprecated in favor of read_mergeable_from_url. (Vincent Ladeuil)
  • Revision specifiers are now registered in bzrlib.revisionspec.revspec_registry, and the old list of revisionspec classes (bzrlib.revisionspec.SPEC_TYPES) has been deprecated. (Jelmer Vernooij, #321183)
  • The progress and UI classes have changed; the main APIs remain the same but code that provides a new UI or progress bar class may need to be updated. (Martin Pool)

Internals

  • Default User Interface (UI) is CLIUIFactory when bzr runs in a dumb terminal. It is sometimes desirable do override this default by forcing bzr to use TextUIFactory. This can be achieved by setting the BZR_USE_TEXT_UI environment variable (emacs shells, as opposed to compile buffers, are such an example). (Vincent Ladeuil)
  • New API Branch.iter_merge_sorted_revisions() that iterates over (revision_id, depth, revno, end_of_merge) tuples. (Ian Clatworthy)
  • New Branch.dotted_revno_to_revision_id() and Branch.revision_id_to_dotted_revno() APIs that pick the most efficient way of doing the mapping. (Ian Clatworthy)
  • Refactor cmd_serve so that it’s a little easier to build commands that extend it, and perhaps even a bit easier to read. (Jonathan Lange)
  • TreeDelta.show() now accepts a filter parameter allowing log formatters to retrict the output. (Vincent Ladeuil)