bzr 0.18rc1

Bazaar

bzr 0.18rc1

Released:2007-07-10

Bugfixes

  • Do not suppress pipe errors, etc. in non-display commands (Alexander Belchenko, #87178)
  • Display a useful error message when the user requests to annotate a file that is not present in the specified revision. (James Westby, #122656)
  • Commands that use status flags now have a reference to ‘help status-flags’. (Daniel Watkins, #113436)
  • Work around python-2.4.1 inhability to correctly parse the authentication header. (Vincent Ladeuil, #121889)
  • Use exact encoding for merge directives. (Adeodato Simó, #120591)
  • Fix tempfile permissions error in smart server tar bundling under Windows. (Martin _, #119330)
  • Fix detection of directory entries in the inventory. (James Westby)
  • Fix handling of http code 400: Bad Request When issuing too many ranges. (Vincent Ladeuil, #115209)
  • Issue a CONNECT request when connecting to an https server via a proxy to enable SSL tunneling. (Vincent Ladeuil, #120678)
  • Fix bzr log -r to support selecting merge revisions, both individually and as part of revision ranges. (Kent Gibson, #4663)
  • Don’t leave cruft behind when failing to acquire a lockdir. (Martin Pool, #109169)
  • Don’t use the ‘-f’ strace option during tests. (Vincent Ladeuil, #102019).
  • Warn when setting push_location to a value that will be masked by locations.conf. (Aaron Bentley, #122286)
  • Fix commit ordering in corner case (Aaron Bentley, #94975)
  • Make annotate behave in a non-ASCII world (Adeodato Simó).

Improvements

  • The –lsprof-file option now dumps a text rendering of the profiling information if the filename ends in “.txt”. It will also convert the profiling information to a format suitable for KCacheGrind if the output filename ends in “.callgrind”. Fixes to the lsprofcalltree conversion process by Jean Paul Calderone and Itamar were also merged. See http://ddaa.net/blog/python/lsprof-calltree. (Ian Clatworthy)

  • info now defaults to non-verbose mode, displaying only paths and abbreviated format info. info -v displays all the information formerly displayed by info. (Aaron Bentley, Adeodato Simó)

  • bzr missing now has better option names --this and --other. (Elliot Murphy)

  • The internal weave-list command has become versionedfile-list, and now lists knits as well as weaves. (Aaron Bentley)

  • Automatic merge base selection uses a faster algorithm that chooses better bases in criss-cross merge situations (Aaron Bentley)

  • Progress reporting in commit has been improved. The various logical stages are now reported on as follows, namely:

    • Collecting changes [Entry x/y] - Stage n/m
    • Saving data locally - Stage n/m
    • Uploading data to master branch - Stage n/m
    • Updating the working tree - Stage n/m
    • Running post commit hooks - Stage n/m

    If there is no master branch, the 3rd stage is omitted and the total number of stages is adjusted accordingly.

    Each hook that is run after commit is listed with a name (as hooks can be slow it is useful feedback). (Ian Clatworthy, Robert Collins)

  • Various operations that are now faster due to avoiding unnecessary topological sorts. (Aaron Bentley)

  • Make merge directives robust against broken bundles. (Aaron Bentley)

  • The lsprof filename note is emitted via trace.note(), not standard output. (Aaron Bentley)

  • bzrlib now exports explicit API compatibility information to assist library users and plugins. See the bzrlib.api module for details. (Robert Collins)

  • Remove unnecessary lock probes when acquiring a lockdir. (Martin Pool)

  • bzr --version now shows the location of the bzr log file, which is especially useful on Windows. (Martin Pool)

  • -D now supports hooks to get debug tracing of hooks (though its currently minimal in nature). (Robert Collins)

  • Long log format reports deltas on merge revisions. (John Arbash Meinel, Kent Gibson)

  • Make initial push over ftp more resilient. (John Arbash Meinel)

  • Print a summary of changes for update just like pull does. (Daniel Watkins, #113990)

  • Add a -Dhpss option to trace smart protocol requests and responses. (Andrew Bennetts)

Library API Breaks

  • Testing cleanups - bzrlib.repository.RepositoryTestProviderAdapter has been moved to bzrlib.tests.repository_implementations; bzrlib.repository.InterRepositoryTestProviderAdapter has been moved to bzrlib.tests.interrepository_implementations; bzrlib.transport.TransportTestProviderAdapter has moved to bzrlib.tests.test_transport_implementations. bzrlib.branch.BranchTestProviderAdapter has moved to bzrlib.tests.branch_implementations. bzrlib.bzrdir.BzrDirTestProviderAdapter has moved to bzrlib.tests.bzrdir_implementations. bzrlib.versionedfile.InterVersionedFileTestProviderAdapter has moved to bzrlib.tests.interversionedfile_implementations. bzrlib.store.revision.RevisionStoreTestProviderAdapter has moved to bzrlib.tests.revisionstore_implementations. bzrlib.workingtree.WorkingTreeTestProviderAdapter has moved to bzrlib.tests.workingtree_implementations. These changes are an API break in the testing infrastructure only. (Robert Collins)
  • Relocate TestCaseWithRepository to be more central. (Robert Collins)
  • bzrlib.add.smart_add_tree will no longer perform glob expansion on win32. Callers of the function should do this and use the new MutableTree.smart_add method instead. (Robert Collins)
  • bzrlib.add.glob_expand_for_win32 is now bzrlib.win32utils.glob_expand. (Robert Collins)
  • bzrlib.add.FastPath is now private and moved to bzrlib.mutabletree._FastPath. (Robert Collins, Martin Pool)
  • LockDir.wait removed. (Martin Pool)
  • The SmartServer hooks API has changed for the server_started and server_stopped hooks. The first parameter is now an iterable of backing URLs rather than a single URL. This is to reflect that many URLs may map to the external URL of the server. E.g. the server interally may have a chrooted URL but also the local file:// URL will be at the same location. (Robert Collins)

Internals

  • New SMTPConnection class to unify email handling. (Adeodato Simó)
  • Fix documentation of BzrError. (Adeodato Simó)
  • Make BzrBadParameter an internal error. (Adeodato Simó)
  • Remove use of ‘assert False’ to raise an exception unconditionally. (Martin Pool)
  • Give a cleaner error when failing to decode knit index entry. (Martin Pool)
  • TreeConfig would mistakenly search the top level when asked for options from a section. It now respects the section argument and only searches the specified section. (James Westby)
  • Improve make api-docs output. (John Arbash Meinel)
  • Use os.lstat rather than os.stat for osutils.make_readonly and osutils.make_writeable. This makes the difftools plugin more robust when dangling symlinks are found. (Elliot Murphy)
  • New -Dlock option to log (to ~/.bzr.log) information on when lockdirs are taken or released. (Martin Pool)
  • bzrlib Hooks are now nameable using Hooks.name_hook. This allows a nicer UI when hooks are running as the current hook can be displayed. (Robert Collins)
  • Transport.get has had its interface made more clear for ease of use. Retrieval of a directory must now fail with either ‘PathError’ at open time, or raise ‘ReadError’ on a read. (Robert Collins)
  • New method _maybe_expand_globs on the Command class for dealing with unexpanded glob lists - e.g. on the win32 platform. This was moved from bzrlib.add._prepare_file_list. (Robert Collins)
  • bzrlib.add.smart_add and bzrlib.add.smart_add_tree are now deprecated in favour of MutableTree.smart_add. (Robert Collins, Martin Pool)
  • New method external_url on Transport for obtaining the url to hand to external processes. (Robert Collins)
  • Teach windows installers to build pyrex/C extensions. (Alexander Belchenko)

Testing

  • Removed the --keep-output option from selftest and clean up test directories as they’re used. This reduces the IO load from running the test suite and cuts the time by about half. (Andrew Bennetts, Martin Pool)
  • Add scenarios as a public attribute on the TestAdapter classes to allow modification of the generated scenarios before adaption and easier testing. (Robert Collins)
  • New testing support class TestScenarioApplier which multiplies out a single teste by a list of supplied scenarios. (RobertCollins)
  • Setting repository_to_test_repository on a repository_implementations test will cause it to be called during repository creation, allowing the testing of repository classes which are not based around the Format concept. For example a repository adapter can be tested in this manner, by altering the repository scenarios to include a scenario that sets this attribute during the test parameterisation in bzrlib.tests.repository.repository_implementations. (Robert Collins)
  • Clean up many of the APIs for blackbox testing of Bazaar. The standard interface is now self.run_bzr. The command to run can be passed as either a list of parameters, a string containing the command line, or (deprecated) varargs parameters. (Martin Pool)
  • The base TestCase now isolates tests from -D parameters by clearing debug.debug_flags and restores it afterwards. (Robert Collins)
  • Add a relpath parameter to get_transport methods in test framework to avoid useless cloning. (Vincent Ladeuil, #110448)