Bazaar Release Notes
bzr 0.92
Changes
- New uninstaller on Win32. (Alexander Belchenko)
bzr 0.92rc1
Changes
bzr
now returns exit code 4 if an internal error occurred, and
3 if a normal error occurred. (Martin Pool)
pull
, merge
and push
will no longer silently correct some
repository index errors that occured as a result of the Weave disk format.
Instead the reconcile
command needs to be run to correct those
problems if they exist (and it has been able to fix most such problems
since bzr 0.8). Some new problems have been identified during this release
and you should run bzr check
once on every repository to see if you
need to reconcile. If you cannot pull
or merge
from a remote
repository due to mismatched parent errors - a symptom of index errors -
you should simply take a full copy of that remote repository to a clean
directory outside any local repositories, then run reconcile on it, and
finally pull from it locally. (And naturally email the repositories owner
to ask them to upgrade and run reconcile).
(Robert Collins)
Features
- New
knitpack-experimental
repository format. This is interoperable with
the dirstate-tags
format but uses a smarter storage design that greatly
speeds up many operations, both local and remote. This new format can be
used as an option to the init
, init-repository
and upgrade
commands. (Robert Collins)
- For users of bzr-svn (and those testing the prototype subtree support) that
wish to try packs, a new
knitpack-subtree-experimental
format has also
been added. This is interoperable with the dirstate-subtrees
format.
(Robert Collins)
- New
reconfigure
command. (Aaron Bentley)
- New
revert --forget-merges
command, which removes the record of a pending
merge without affecting the working tree contents. (Martin Pool)
- New
bzr_remote_path
configuration variable allows finer control of
remote bzr locations than BZR_REMOTE_PATH environment variable.
(Aaron Bentley)
- New
launchpad-login
command to tell Bazaar your Launchpad
user ID. This can then be used by other functions of the
Launchpad plugin. (James Henstridge)
Improvements
bzr+https://
smart server across https now supported.
(John Ferlito, Martin Pool, #128456)
- Mutt is now a supported mail client; set
mail_client=mutt
in your
bazaar.conf and send
will use mutt. (Keir Mierle)
- New option
-c
/--change
for merge
command for cherrypicking
changes from one revision. (Alexander Belchenko, #141368)
- Show encodings, locale and list of plugins in the traceback message.
(Martin Pool, #63894)
- Experimental directory formats can now be marked with
experimental = True
during registration. (Ian Clatworthy)
Documentation
- New Bazaar in Five Minutes guide. (Matthew Revell)
- The hooks reference documentation is now converted to html as expected.
(Ian Clatworthy)
Bug Fixes
- Connection error reporting for the smart server has been fixed to
display a user friendly message instead of a traceback.
(Ian Clatworthy, #115601)
- Make sure to use
O_BINARY
when opening files to check their
sha1sum. (Alexander Belchenko, John Arbash Meinel, #153493)
- Fix a problem with Win32 handling of the executable bit.
(John Arbash Meinel, #149113)
bzr+ssh://
and sftp://
URLs that do not specify ports explicitly
no longer assume that means port 22. This allows people using OpenSSH to
override the default port in their ~/.ssh/config
if they wish. This
fixes a bug introduced in bzr 0.91. (Andrew Bennetts, #146715)
- Commands reporting exceptions can now be profiled and still have their
data correctly dumped to a file. For example, a
bzr commit
with
no changes still reports the operation as pointless but doing so no
longer throws away the profiling data if this command is run with
--lsprof-file callgrind.out.ci
say. (Ian Clatworthy)
- Fallback to FTP when paramiko is not installed and SFTP can’t be used for
tests/commands
so that the test suite is still usable without
paramiko.
(Vincent Ladeuil, #59150)
- Fix commit ordering in corner case. (Aaron Bentley, #94975)
- Fix long standing bug in partial commit when there are renames
left in tree. (Robert Collins, #140419)
- Fix selftest semi-random noise during HTTP related tests.
(Vincent Ladeuil, #140614)
- Fix typo in ftp.py making the reconnection fail on temporary errors.
(Vincent Ladeuil, #154259)
- Fix failing test by comparing real paths to cover the case where the TMPDIR
contains a symbolic link.
(Vincent Ladeuil, #141382).
- Fix log against smart server branches that don’t support tags.
(James Westby, #140615)
- Fix pycurl HTTP implementation by defining error codes from
pycurl instead of relying on an old curl definition.
(Vincent Ladeuil, #147530)
- Fix ‘unprintable error’ message when displaying BzrCheckError and
some other exceptions on Python 2.5.
(Martin Pool, #144633)
- Fix
Inventory.copy()
and add test for it. (Jelmer Vernooij)
- Handles default value for ListOption in cmd_commit.
(Vincent Ladeuil, #140432)
- HttpServer and FtpServer need to be closed properly or a listening socket
will remain opened.
(Vincent Ladeuil, #140055)
- Monitor the .bzr directory created in the top level test
directory to detect leaking tests.
(Vincent Ladeuil, #147986)
- The basename, not the full path, is now used when checking whether
the profiling dump file begins with
callgrind.out
or not. This
fixes a bug reported by Aaron Bentley on IRC. (Ian Clatworthy)
- Trivial fix for invoking command
reconfigure
without arguments.
(Rob Weir, #141629)
WorkingTree.rename_one
will now raise an error if normalisation of the
new path causes bzr to be unable to access the file. (Robert Collins)
- Correctly detect a NoSuchFile when using a filezilla server. (Gary van der
Merwe)
API Breaks
bzrlib.index.GraphIndex
now requires a size parameter to the
constructor, for enabling bisection searches. (Robert Collins)
CommitBuilder.record_entry_contents
now requires the root entry of a
tree be supplied to it, previously failing to do so would trigger a
deprecation warning. (Robert Collins)
KnitVersionedFile.add*
will no longer cache added records even when
enable_cache() has been called - the caching feature is now exclusively for
reading existing data. (Robert Collins)
ReadOnlyLockError
is deprecated; LockFailed
is usually more
appropriate. (Martin Pool)
- Removed
bzrlib.transport.TransportLogger
- please see the new
trace+
transport instead. (Robert Collins)
- Removed previously deprecated varargs interface to
TestCase.run_bzr
and
deprecated methods TestCase.capture
and TestCase.run_bzr_captured
.
(Martin Pool)
- Removed previous deprecated
basis_knit
parameter to the
KnitVersionedFile
constructor. (Robert Collins)
- Special purpose method
TestCase.run_bzr_decode
is moved to the test_non_ascii
class that needs it.
(Martin Pool)
- The class
bzrlib.repofmt.knitrepo.KnitRepository3
has been folded into
KnitRepository
by parameters to the constructor. (Robert Collins)
- The
VersionedFile
interface now allows content checks to be bypassed
by supplying check_content=False. This saves nearly 30% of the minimum
cost to store a version of a file. (Robert Collins)
- Tree’s with bad state such as files with no length or sha will no longer
be silently accepted by the repository XML serialiser. To serialise
inventories without such data, pass working=True to write_inventory.
(Robert Collins)
VersionedFile.fix_parents
has been removed as a harmful API.
VersionedFile.join
will no longer accept different parents on either
side of a join - it will either ignore them, or error, depending on the
implementation. See notes when upgrading for more information.
(Robert Collins)
Internals
bzrlib.transport.Transport.put_file
now returns the number of bytes
put by the method call, to allow avoiding stat-after-write or
housekeeping in callers. (Robert Collins)
bzrlib.xml_serializer.Serializer
is now responsible for checking that
mandatory attributes are present on serialisation and deserialisation.
This fixes some holes in API usage and allows better separation between
physical storage and object serialisation. (Robert Collins)
- New class
bzrlib.errors.InternalBzrError
which is just a convenient
shorthand for deriving from BzrError and setting internal_error = True.
(Robert Collins)
- New method
bzrlib.mutabletree.update_to_one_parent_via_delta
for
moving the state of a parent tree to a new version via a delta rather than
a complete replacement tree. (Robert Collins)
- New method
bzrlib.osutils.minimum_path_selection
useful for removing
duplication from user input, when a user mentions both a path and an item
contained within that path. (Robert Collins)
- New method
bzrlib.repository.Repository.is_write_locked
useful for
determining if a repository is write locked. (Robert Collins)
- New method on
bzrlib.tree.Tree
path_content_summary
provides a
tuple containing the key information about a path for commit processing
to complete. (Robert Collins)
- New method on XML serialisers, write_inventory_to_lines, which matches the
API used by knits for adding content. (Robert Collins)
- New module
bzrlib.bisect_multi
with generic multiple-bisection-at-once
logic, currently only available for byte-based lookup
(bisect_multi_bytes
). (Robert Collins)
- New helper
bzrlib.tuned_gzip.bytes_to_gzip
which takes a byte string
and returns a gzipped version of the same. This is used to avoid a bunch
of api friction during adding of knit hunks. (Robert Collins)
- New parameter on
bzrlib.transport.Transport.readv
adjust_for_latency
which changes readv from returning strictly the
requested data to inserted return larger ranges and in forward read order
to reduce the effect of network latency. (Robert Collins)
- New parameter yield_parents on
Inventory.iter_entries_by_dir
which
causes the parents of a selected id to be returned recursively, so all the
paths from the root down to each element of selected_file_ids are
returned. (Robert Collins)
- Knit joining has been enhanced to support plain to annotated conversion
and annotated to plain conversion. (Ian Clatworthy)
- The CommitBuilder method
record_entry_contents
now returns summary
information about the effect of the commit on the repository. This tuple
contains an inventory delta item if the entry changed from the basis, and a
boolean indicating whether a new file graph node was recorded.
(Robert Collins)
- The python path used in the Makefile can now be overridden.
(Andrew Bennetts, Ian Clatworthy)
Testing
- New transport implementation
trace+
which is useful for testing,
logging activity taken to its _activity attribute. (Robert Collins)
- When running bzr commands within the test suite, internal exceptions are
not caught and reported in the usual way, but rather allowed to propagate
up and be visible to the test suite. A new API
run_bzr_catch_user_errors
makes this behavior available to other users.
(Martin Pool)
- New method
TestCase.call_catch_warnings
for testing methods that
raises a Python warning. (Martin Pool)