External Compatibility Breaks
New Features
- New option --overwrite-tags for bzr pull and bzr push.
(Jelmer Vernooij, #681792)
Improvements
- Colocated branches can now be addressed using the 'co:NAME' rather than
the more complex 'file://.,branch=NAME'. (Jelmer Vernooij, #833665)
Bug Fixes
- "bzr missing" now shows tag names when displaying revision information.
(#559072, Neil Martinsen-Burrell)
- Implement ResponseFile.readline and ReponseFile.tell,
fixing some clones over HTTP. (Jelmer Vernooij, #963769)
Documentation
- Force format registration to avoid generate_docs.py traceback when the
registry is empty. (Vincent Ladeuil, #956860)
API Changes
Internals
Testing
- Fix test failures by removing a remaining reference to features.sphinx
which isn't needed anymore since we don't test the texinfo sphinx builder
anymore either. (Vincent Ladeuil)
This is the first beta for the 2.6 series, leading up to a 2.6.0 release in
August 2012.
This release includes ssl certificates verification from the urllib-based
http implementation turned on by default, fixes some UI issues around
colocated branches, documentation fixes and more.
This release includes all bugs fixed in previous series known at the time of
this release.
Beta releases are suitable for everyday use but may cause some
incompatibilities with plugins. Some plugins may need small updates to work
with 2.6b1.
External Compatibility Breaks
None.
Improvements
- Access to HTTPS URLs now uses the urrllib implementation by default.
For the old pycurl-based implementation, specify https+pycurl:// as
the URL scheme when accessing a HTTPS location.
(Jelmer Vernooij, #125055)
- Add short option alias -N for --no-recurse.
(Jelmer Vernooij, #945904)
- Avoid 'Invalid range access' errors when whole files are retrieved with
transport.http.get() . (Vincent Ladeuil, #924746)
- bzr rmbranch now supports removing colocated branches.
(Jelmer Vernooij, #920653)
- bzr rmbranch no longer removes active branches unless --force
is specified. (Jelmer Vernooij, #922953)
- bzr verify-signatures now shows a progress bar.
(Jelmer Vernooij)
- Two new command hooks, pre_command and post_command,
provide notification before and after a command has been run.
(Brian de Alwis, Jelmer Vernooij)
Bug Fixes
- Fix bzr config display for RegistryOption values.
(Vincent Ladeuil, #930182)
- Option values set on locked branches should be saved only when the branch
is finally unlocked. (Vincent Ladeuil, #948339)
Documentation
- Document "bzr lp-propose", "bzr register-branch" and
the other Launchpad plugin commands in bzr(1).
(Jelmer Vernooij, #843801, #163995)
- Generate ENVIRONMENT section in bzr(1) from known environment variable
list rather than hardcoding. (Jelmer Vernooij, #197618)
- Prevent lines of command descriptions starting with a dot to
accidentally be interpreted as a roff macro in bzr(1).
(Jelmer Vernooij, #711079)
- Properly format apostrophes in manual page. (Jelmer Vernooij, #234771)
API Changes
- GPGStrategy.do_verifications has been deprecated.
(Jelmer Vernooij)
- File ids in the Tree API can now be bytestring as previously,
or tuples of bytestrings.
(Jelmer Vernooij)
- mail_client now accepts a configuration stack object rather than
an old style Config object. (Jelmer Vernooij)
- New method Repository.verify_revision_signatures.
(Jelmer Vernooij)
- New configuration option class RegistryOption which is backed
onto a registry. (Jelmer Vernooij)
- New convenience API method WorkingTree.get_config_stack.
(Jelmer Vernooij)
- register_filter_stack_map and lazy_register_filter_stack_map
are noew deprecated. Instead, use filter_stacks_registry.register
and filter_stacks_registry.register_lazy.
(Jelmer Vernooij)
- Remove
branch.PullResult.__int__ deprecated in 2.3.0,
branch.PushResult.__int__ deprecated in 2.3.0,
branch.BranchFormat.get_default_format deprecated in 2.4.0,
branch.BranchFormat.get_formats deprecated in 2.4.0,
branch.BranchFormat.set_default_format deprecated in 2.4.0,
branch.BranchFormat.register_format deprecated in 2.4.0,
branch.BranchFormat.unregister_format deprecated in 2.4.0,
bzrdir.BzrDir.generate_backup_name deprecated in 2.3.0,
bzrdir.BzrProber.register_bzrdir_format deprecated in 2.4.0,
bzrdir.BzrProber.unregister_bzrdir_format deprecated in 2.4.0,
config.Config.get_editor deprecated in 2.4.0,
hooks.known_hooks_key_to_parent_and_attribute deprecated in 2.3,
hooks.Hooks.create_hook deprecated in 2.4,
inventory.Inventory.__contains__ deprecated in 2.4.0,
merge.Merge3Merger.scalar_three_way deprecated in 2.2.0,
merge.Merge3Merger.fix_root deprecated in 2.4.0,
transform.TreeTransformBase.has_named_child deprecated in 2.3.0,
transform.get_backup_name deprecated in 2.3.0,
transform._get_backup_name deprecated in 2.3.0,
workingtree.WorkingTreeFormat.get_default_format deprecated in 2.4.0,
workingtree.WorkingTreeFormat.register_format deprecated in 2.4.0,
workingtree.WorkingTreeFormat.register_extra_format deprecated in 2.4.0,
workingtree.WorkingTreeFormat.unregister_extra_format deprecated in 2.4.0,
workingtree.WorkingTreeFormat.get_formats deprecated in 2.4.0,
workingtree.WorkingTreeFormat.set_default_format deprecated in 2.4.0,
workingtree.WorkingTreeFormat.unregister_format deprecated in 2.4.0,
(Vincent Ladeuil)
- Remove deprecated Branch.set_revision_history and
Branch.revision_history methods and the set_rh
hook on Branch. (Jelmer Vernooij)
Internals
- Tree.path2id now once again accepts a list of path elements
in addition to a path. (Jelmer Vernooij)
- Turn config option expansion on by default. The only options for which
this should be disabled are templates which should already have used
conf.get(option, expand=False) or conf.get_user_option(option,
expand=False). (Vincent Ladeuil)
External Compatibility Breaks
New Features
Improvements
Bug Fixes
Documentation
API Changes
Internals
Testing
This is a bugfix release. Most of the bugs dealt with https and colocated
branches glitches. Upgrading is recommended for all users of earlier 2.5
releases.
External Compatibility Breaks
None.
Improvements
- bzr rmbranch now supports removing colocated branches.
(Jelmer Vernooij, #920653)
- bzr rmbranch no longer removes active branches unless --force
is specified. (Jelmer Vernooij, #922953)
Bug Fixes
- Connecting with HTTPS via HTTP now correctly uses the host name of the
destination rather than the proxy when checking certificates.
(Martin Packman, #944696)
- Fixed merge tool availability checking and invocation to search the
Windows App Path registry in addition to the PATH. (Gordon Tyler, #939605)
- Fixed problem with getting errors about failing to open /dev/tty when using
Bazaar Explorer to sign commits. (Mark Grandi, #847388)
- Fix UnicodeEncodeError when translated progress task messages contain
non-ascii text. (Martin Packman, #966934)
- Make sure configuration options can provide their own help topic.
(Jelmer Vernooij, #941672)
Documentation
- The alpha-quality texinfo sphinx builder has been deprecated. Sphinx >=
1.1.2 now provides a better one. Most of the documentation can now be
generated to the texinfo format with make texinfo-sphinx. This will
generate both the .texi files and the .info ones.
(Vincent Ladeuil, #940164)
Testing
- Add support for pyftpdlib >= 0.7.0 and drop support for previous pyftpdlib
versions. (Vincent Ladeuil, #956027)
- Run smoketest for setup.py isolated in a tempdir. (Martin Packman, #140874)
Codename: | Phillip |
2.5.0: | 2012-02-24 |
This release marks the start of a new long-term-stable series. From here, we
will only make bugfix releases on the 2.5 series (2.5.1, etc, and support it
until April 2017), while 2.6 will become our new development series.
This is a bugfix and polish release over the 2.4 series, with a large number
of bugs fixed (~170 for the 2.5 series alone). The 2.5 series provides a
faster smart protocol implementation for many operations, basic support for
colocated branches. We have started translating bzr with the 2.5 series:
https://translations.launchpad.net/bzr, more than 20 languages have already
been registered but these are the early days, contributions welcome.
Only a few bugfixes have been included since 2.5b6 so all known fixed bugs
are included here.
Users are encouraged to upgrade from the other stable series.
External Compatibility Breaks
None.
Improvements
- The names of colocated branches are used as branch nicks if no nick is
specified. (Aaron Bentley)
Bug Fixes
- Show locks in bzr info on control directories without a
repository. (Jelmer Vernooij, #936767)
- Disable ssl certificate verification on osx and windows until a native
access to the the root certificates is provided there.
(Vincent Ladeuil, #929179)
Testing
- Stop depending on the particular CPython ordering of dictionary keys
when testing the result of BzrDir.get_branches.
(Wouter van Heyst)
This is the sixth (and last (really)) beta of the 2.5 series, leading to a
2.5.0 release in March 2012. Beta releases are suitable for everyday use
but may cause some incompatibilities with plugins.
This introduces the support for colocated branches into the '2a' format in a
backward compatible way, fix more glitches in the colocated UI, verify https
certificates for the urllib https client implementation, fix some more
unicode issues and more.
All bugs fixed in previous series known at the time of this release are
included.
External Compatibility Breaks
None.
New Features
- Support for colocated branches is now available in the default
format ("2a"). (Jelmer Vernooij)
Improvements
- bzr switch -b in a standalone tree will now create a colocated branch.
(Jelmer Vernooij, #918197)
- bzr info now reports when there are present (but unused) colocated
branches. (Jelmer Vernooij, #891646)
- Checkouts can now be into target directories that already have
a control directory (but no branch or working tree).
(Jelmer Vernooij, #913980)
- Colocated branches can now have names including forward slashes, to
allow for namespaces. (Jelmer Vernooij, #907980)
- New HPSS call for BzrDir.get_branches. (Jelmer Vernooij, #894460)
- Checkouts of colocated branches are now always lightweight.
(Jelmer Vernooij, #918828)
Bug Fixes
- bzr branch now fetches revisions when branching into an empty
control directory. (Jelmer Vernooij, #905594)
- A sane default is provided for ssl.ca_certs which should points to the
Certificate Authority bundle for supported platforms.
(Vincent Ladeuil, #920455)
- bzr branch generates correct target branch locations again if not
specified. (Jelmer Vernooij, #919218)
- bzr send works on treeless branches again.
(Jelmer Vernooij, #921591)
- bzr version no longer throws a UnicodeDecodeError if the .bzr.log path
contains non-ascii characters. (Martin Packman, #312841)
- Support scripts that don't call bzrlib.initialize() but still call run_bzr().
(Vincent Ladeuil, #917733)
- Test for equality instead of object identity where ROOT_PARENT is concerned.
(Wouter van Heyst, #881142)
- urllib-based HTTPS client connections now verify the server certificate
validity as well as the hostname.
(Jelmer Vernooij, Vincent Ladeuil, #651161)
API Changes
- config.config_dir and related functions now always return paths as
unicode. (Martin Packman, #825826)
- ControlDir now has a new method set_branch_reference which can
be used for setting branch references. (Jelmer Vernooij)
- ControlDir.destroy_branch now raises NotBranchError rather than
NoSuchFile if the branch didn't exist. (Jelmer Vernooij, #921693)
Internals
- A new matcher RevisionHistoryMatches has been added. (Jelmer Vernooij)
- Add new module bzrlib.url_policy_open. (Jelmer Vernooij, #850843)
- MutableTree has two new hooks pre_transform and
post_transform that are called for tree transform operations.
(Jelmer Vernooij, #912084)
Testing
- Be more careful about closing open files for pypy interoperability.
(Wouter van Heyst)
This is the fifth (and last) beta of the 2.5 series, leading to a 2.5.0
release in February 2012. Beta releases are suitable for everyday use but
may cause some incompatibilities with plugins.
This release includes many improvements in the smart server, UI polish for
the colocated branches, enhancements to the config framework and more
internal uses, bug fixes related to unicode and locale support and more.
All bug fixed in previous series known at the time of this release are
included.
External Compatibility Breaks
- The '.bzr/branch/email' file is no longer read to determine the users'
identity. Instead, the 'email' setting in '.bzr/branch/branch.conf'
should be used. (Jelmer Vernooij, #903894)
New Features
- "bzr mkdir" now includes -p (--parents) option for recursively adding
parent directories.
(Jared Hance, Jelmer Vernooij, #253529)
- config.Option can now declare override_from_env, a list of
environment variables which, when set, that takes precedence over values
defined in configuration files. (Vincent Ladeuil, #907279)
Improvements
- New HPSS call for Repository.reconcile. (Jelmer Vernooij, #894455)
- Merge now has two new hooks pre_merge and post_merge
that are called before and after a merge and can make
additional modifications to the trees involved.
(Jelmer Vernooij, #906877)
- Override the value returned by sys.getfilesystemencoding() for the bzr
script to utf-8 when it would otherwise be ascii on a posix system. This
will mean bzr works with non-ascii files when no locale or an incorrect
locale is set. (Martin Packman, #794353)
- bzr branches now indicates the active colocated branch.
(Jelmer Vernooij, #891667)
- bzr push now suggests using :parent if there is a parent location
set. (Jelmer Vernooij)
- bzr send now only opens a single connection, rather than two,
to the target branch. (Jelmer Vernooij)
Bug Fixes
- Allow configuration option default value to be a python callable at
registration. (Vincent Ladeuil, #832064)
- bzr config will now display the section [DEFAULT] used in
bazaar.conf. (Vincent Ladeuil, #907268)
- Configuration stores can now provides a specific quoting mechanism. This
is required to workaround configobj conflating quoting and list values
automatic conversion. (Vincent Ladeuil, #906897)
- Create obsolete_packs directory when repacking if it does not
exist. (Jonathan Riddell, Jelmer Vernooij, #314314)
- Fallback to the slower bzr log implementation when displaying a range
of revisions whose ancestry is not obviously on the same developement
line. (Vincent Ladeuil, #904744)
- Make lazy imports resilient when resolved concurrently from multiple
threads. Now the stand-in object will behave as a proxy for the real object
after the initial access, rather than throwing. Assigning the object to
multiple names should still be avoided. (Martin von Gagern, #396819)
- Not setting gpg_signing_key or setting it to default will use the
user email (obtained from the email configuration option or its
default value). (Vincent Ladeuil, Jelmer Vernooij, #904550)
- Prevent spurious InconsistentDelta error when committing a move of a
non-ascii directory with contents. (Rory Yorke, #185211)
- Properly ignore 'n' in an option reference since this cannot be part of a
config option identifier. (Vincent Ladeuil, #902125)
- Make sure that the bzr probers are always registered when
bzrlib.workingtree is imported. (Jelmer Vernooij, #905218)
- Report mistake trying to move a removed file with a non-ascii name without
UnicodeEncodeError being raised. (Martin Packman, #898541)
- Safely unquote configuration values in weird edge cases (a section seen as
a dictionary which is not a supported use case for the configuration
stacks). (Vincent Ladeuil, #908050)
- Stop altering sys.platform on OSX when initialising the locale.
(Martin Packman, #570495)
- Uncommit no longer removes tags if they are part of the working
trees pending merges. (Jelmer Vernooij, #905462)
API Changes
- Config.signature_needed, Config.signing_policy,
Config.gpg_signing_key, Config.gpg_signing_command,
Config.checking_policy and Config.post_commit are now deprecated.
(Jelmer Vernooij)
- Repository.get_commit_builder now takes a config_stack
rather than a config argument. (Jelmer Vernooij)
- Scripts using bzrlib should now ensure setlocale is called on posix
platforms if they need a non-ascii user encoding. (Martin Packman)
- Send formats now accept a new optional argument submit_branch,
which can be None or a Branch object for the submit branch location.
(Jelmer Vernooij)
- VersionedFileRepository.add_revision no longer takes a config
argument. (Jelmer Vernooij)
Internals
- Add HPSS call for Branch.get_checkout_format. (Jelmer Vernooij, #894459)
- Add HPSS call for Repository.pack. (Jelmer Vernooij, #894461)
- Add HPSS calls for Repository.iter_files_bytes, speeding up
several commands including bzr export and bzr co --lightweight.
(Jelmer Vernooij, #608640)
- All bzr control directories, branch formats, repository formats and
working tree formats now support feature flags, which are
serialized in their respective format files. See
doc/developers/feature-flags.txt for details.
(Jelmer Vernooij)
- bzrlib.urlutils now includes quote and unquote functions,
rather than importing them from urllib. This prevents loading
of the socket, ssl and urllib modules for
local bzr operations. (Jelmer Vernooij)
- Configuration options can be SI units by using int_SI_from_unicode as
their convert_from_unicode helper. (Vincent Ladeuil)
- Configuration stacks can now use StartingPathMatcher to select the
sections matching a location while respecting the order chosen by the user
in the configuration file: from generic sections to specific
sections. (Vincent Ladeuil, #832046).
- Configuration stores can now save incremental changes by using
save_changes() instead of save(). This reduces the number or
required input/outputs and allows stores to be shared between
stacks. (Vincent Ladeuil)
- ControlDir now has a get_branches method that returns a dictionary
whose keys are the names of the branches and whose values are the
branches themselves. The active branch uses the key None.
(Neil Martinsen-Burrell)
- Helper osutils.path_from_environ added for extracting a unicode path
from an environment variable. (Martin Packman, #832028)
- Helper win32utils.get_environ_unicode added for avoiding encoding
problems with os.environ.get use. (Martin Packman, #262874)
- Lazy imports can now only be absolute. (Jelmer Vernooij)
- Merge3Mergers now have an optional other_branch argument
which contains the branch from which the other_tree
was obtained, if any. (Jelmer Vernooij)
- MutableTree now has a hook post_build_tree which is called after
a new mutable tree has been created. (Jelmer Vernooij, #912765)
- New HPSS call BzrDir.checkout_metadir. (Jelmer Vernooij, #894459)
- New HPSS call VersionedFileRepository.get_inventories,
speeding up various commands including bzr export,
bzr checkout and bzr cat. (Jelmer Vernooij, #608640)
- The ConfigCommandLineStore is now supported by bzr config and is
seen as single no-name section of configuration options. (Vincent Ladeuil)
Testing
- New matcher ContainsNoVfsCalls which filters a list of HPSS
calls for VFS requests. (Jelmer Vernooij)
- New MemoryStack class allows for diskless tests and locally injected
configuration stacks. Lower level tests for predefined set of options can
be written without setting up configuration files. (Vincent Ladeuil)
This is the fourth beta of the 2.5 series, leading to a 2.5.0 release in
February 2012. Beta releases are suitable for everyday use but may cause
some incompatibilities with plugins.
This release includes many improvements in the smart server, UI polish for
the colocated branches, optimizations for revision specifiers to avoid
history sized operations, enhancements to the config framework, bug fixes
related to unicode paths and more.
All bug fixed in previous series known at the time of this release are
included.
External Compatibility Breaks
None.
New Features
- Provides a po_merge plugin to automatically merge .po files with
msgmerge. See bzr help po_merge for details.
(Vincent Ladeuil, #884270)
Improvements
- bzr branch --stacked now only makes a single connection to the remote
server rather than three. (Jelmer Vernooij, #444293)
- bzr export --uncommitted will export the uncommitted tree.
(Jelmer Vernooij, #555613)
- bzr rmbranch can now remove colocated branches.
(Jelmer Vernooij, #831464)
- bzr status no longer shows shelves if files are specified.
(Francis Devereux)
- bzr switch now accepts colocated branch names to switch to.
(Jelmer Vernooij, #826814)
- Plugins can now register additional "location aliases".
(Jelmer Vernooij)
- Revision specifiers will now only browse as much history as they
need to, rather than grabbing the whole history unnecessarily in some
cases. (Jelmer Vernooij)
- When using bzr switch to switch to a sibling of the current
branch, the relative branch name should no longer be url-encoded.
(Jelmer Vernooij)
Bug Fixes
- A new section local option basename is available to help support some
bzr-pipeline workflows and more generally help mapping local paths to
remote ones. See bzr help configuration for more details.
(Vincent Ladeuil, #843211)
- Add HPSS call for looking up revision numbers from revision ids on
remote repositories. (Jelmer Vernooij, #640253)
- Add HPSS call for retrieving file contents from remote repositories.
Should improve performance for lightweight checkouts and exports of
from remote repositories. (Jelmer Vernooij, #368717, #762330, #608640)
- Allow lazy compiled patterns from bzrlib.lazy_regex to be
pickled. (Jelmer Vernooij, #893149)
- bzr info no longer shows empty output if only a control
directory is present. (Jelmer Vernooij, #159098)
- Cope with missing revision ids being specified to
Repository.gather_stats HPSS call. (Jelmer Vernooij, #411290)
- Fix test failures on windows related to locations.conf handling.
(Vincent Ladeuil, #892992)
- Fixed parsing of the timestamp given to commit --commit-time. Now
prohibits several invalid strings, reads the correct number of seconds,
and gives a better error message if the time zone offset is not given.
(Matt Giuca, #892657)
- Give meaningful file/line references when reporting deprecation warnings
for _CompatabilityThunkFeature based test features.
(Vincent Ladeuil, #897718)
- Make reporting of mistakes involving unversioned files with non-ascii
filenames work again without 'Unprintable exception' being shown.
(Martin Packman, #898408)
- Provide names for lazily registered hooks.
(Neil Martinsen-Burrell, #894609)
- Raise BadIndexKey exception in btree_index when a key is too large, fixing
an infinite recursion issue. (Shannon Weyrick, #720853)
- Resolve regression from colocated branch path handling, by ensuring that
unreserved characters are unquoted in URLs. (Martin Packman, #842223)
- Split segments from URLs for colocated branches without assuming the
combined form is valid. (Martin Packman, #842233)
- Support looking up revision numbers by revision id in empty branches.
(Jelmer Vernooij, #535031)
- Support verifying signatures on remote repositories.
(Jelmer Vernooij, #889694)
- Teach the bzr client how to reconnect if we get ConnectionReset
while making an RPC request. This doesn't handle all possible network
disconnects, but it should at least handle when the server is asked to
shutdown gracefully. (John Arbash Meinel, #819604)
- When a remote format is unknown, bzr will now print a single-line error
message rather than a backtrace. (Jelmer Vernooij, #687226)
API Changes
- BzrDir.open_branch and BranchFormat.open now take an optional
possible_transports argument. (Jelmer Vernooij)
- New method Transport.set_segment_parameter. (Jelmer Vernooij)
- Repository.verify_revision has been renamed to
Repository.verify_revision_signature. (Jelmer Vernooij)
- RevisionSpec.wants_revision_history now defaults to False and
is deprecated. The revs argument of
RevisionInfo.from_revision_id is now deprecated. (Jelmer Vernooij)
- Tree.get_file_by_path is now deprecated. Use Tree.get_file instead.
(Jelmer Vernooij, #666897)
- Some global options for use with commands have been removed, construct
an Option with the name instead. (Martin Packman)
- The unused exception HistoryMissing has been removed.
(Jelmer Vernooij)
Internals
- Add HPSS call for Repository.pack. (Jelmer Vernooij, #894461)
- bzr config uses the new configuration implementation.
(Vincent Ladeuil)
- Custom HPSS error handlers can now be installed in the smart server client
using the error_translators and no_context_error_translators
registries. (Jelmer Vernooij)
- New HPSS calls Repository.has_signature_for_revision_id,
Repository.make_working_trees, BzrDir.destroy_repository,
BzrDir.has_workingtree, Repository.get_physical_lock_status,
Branch.get_physical_lock_status,
Branch.put_config_file, Branch.break_lock,
BzrDir.destroy_branch, Repository.break_lock,
VersionedFileRepository.get_serializer_format,
Repository.all_revision_ids, Repository.start_write_group,
Repository.commit_write_group, Repository.abort_write_group
Repository.check_write_group, Repository.iter_revisions,
Repository.add_signature_revision_text and
Repository.get_revision_signature_text.
(Jelmer Vernooij)
- RemoteBranch.get_config_stack and RemoteBzrDir.get_config_stack
will now use HPSS calls where possible. (Jelmer Vernooij)
- The registry of merge types has been moved to merge from option but
merge.get_merge_type_registry remains as an accessor. (Martin Packman)
Testing
- Avoid failures in test_transform when OS error messages are localised.
(Martin Packman, #891582)
- Tests are now subject to a time limit: by default 300s, and 120s when
run from 'make check', controlled by the selftest.timeout
configuration option. This is currently not supported on Windows.
(Martin Pool)
This is the third beta of the 2.5 series, leading to a 2.5.0 release in
February 2012. Beta releases are suitable for everyday use but may cause
some incompatibilities with plugins.
This release includes log options for push and pull, more UI polish
for colocated branches, a better and more coherent implementation for UI
dialogs, enhancements to the config framework and more.
This release includes all bug fixed in previous series known at the time of
this release.
External Compatibility Breaks
None
New Features
- The log_format configuration can be used with -Olog_format=line to
change the format push and pull use to display the
revisions. I.e.: bzr pull -v -Olog_format=short will use the short
format instead of the default long one. (Vincent Ladeuil, #861472)
- The new config scheme allows an alternative syntax for the 'appenpath'
policy relying on option expansion and defining a new 'relpath' option
local to a section. Instead of using '<option>:policy=appendpath', the
option value can de defined as 'option=xxxx/{relpath}'.
(Vincent Ladeuil, #832013)
Improvements
- bzr info -v now shows the number of colocated branches
for control directories that support them.
(Jelmer Vernooij, #863285)
- bzr version-info now takes a --revision argument.
(Jelmer Vernooij, #238705)
- bzr revno now takes a --revision argument.
(Jelmer Vernooij, #870649)
- bzr serve now can serve from URLs rather than just from the
file system. I.e.: bzr serve -d lp:bzr or
bzr serve -d file:///data/bzr (Jelmer Vernooij)
- all input prompts are now char-based when possible, and can be forced to
line-based mode by setting the BZR_TEXTUI_INPUT environment variable
to 'line-based'. This replace the previous shelf UI only patch using
INSIDE_EMACS. (Benoît Pierre)
Bug Fixes
- bzr info now shows the master branch location too for
treeless local branches. (Jelmer Vernooij, #258355)
- bzr mkdir --quiet now does not print a line for every created
directory. (Martin von Gagern, #869915)
- bzr mv does not crash when attempting to move the root of a
branch. (Jonathan Riddell, #809728)
- bzr shelve now use UIFactory.choose for input handling, making
it usable when creating a custom UIFactory implementation. (Benoît
Pierre)
- bzr clean-tree now use UIFactory.get_boolean for confirmation
prompt, making it usable when using a custom UIFactory
implementation. (Benoît Pierre)
- If sending a crash through Apport fails report the Apport failure to
bzr.log rather than stderr. (Jonathan Riddell, #766735)
- bzr upgrade no longer treats 'already up-to-date' exceptions as
errors. (Benoît Pierre, #716560).
- bzr version-info no longer populates the clean state for custom
templates unless {clean} is explicitly asked for.
(Lawrence Mitchell, #882541)
- Fix finding the CPU count when using Python >= 2.6 on BSD-based systems.
(Jelmer Vernooij, #887151)
- WorkingTree.clone() now supports its revision_id being set
to the null revision. (Jelmer Vernooij, #876423)
- WorkingTree.pull can now pull NULL_REVISION.
(Jelmer Vernooij, #887556)
API Changes
- Branch.revision_history is now deprecated. (Jelmer Vernooij, #799519)
- Methods add and items of LRUCache and LRUSizeCache are
deprecated. Use normal dict-style access instead. (Martin Packman)
- New flag RepositoryFormat.supports_unreferenced_revisions which
indicates whether revisions can be present in a repository without
being referenced from e.g. a branch history at the same time.
(Jelmer Vernooij)
- UIFactory.choose has been added: prompt the user for a list of
choices. (Benoît Pierre)
Internals
- ControlDirFormat now has a new method supports_transport
which format implementations can use whether or not they can access
a control dir over a particular transport. (Jelmer Vernooij)
- BranchBuilder.build_commit now take parent_ids and
allow_leftmost_as_ghost arguments. (Jelmer Vernooij)
Testing
- Ensure TestCase instances are deallocated immediately after running where
possible. This greatly reduces the peak resource needs of a full test suite
run. The new -Euncollected_cases selftest flag will add failures if any
case which persists pasts its expected lifetime. (Martin Packman, #613247)
- Report exceptions from child processes during fork instead of swallowing the
error and reporting that everything went okay. (Martin Packman, #804130)
This is the second beta of the 2.5 series, leading to a 2.5.0 release in
February 2012. Beta releases are suitable for everyday use but may cause some
incompatibilities with plugins.
This release includes more filtering options for bzr log, idle
connections handling for bzr serve, a development-colo experimental
format to flesh out the colocated branches UI, better support for foreign
formats, enhancements to the config framework and more.
This release includes all bug fixed in previous series known at the time of
this release.
External Compatibility Breaks
None
New Features
- A new -O standard option (common to all commands) have been added. It
provides a value for a config option in the -Oname=value form that
takes precedence over all definitions found in config files. It can be
used multiple times to override different options.
(Vincent Ladeuil, #491196)
- bzr log now has an option called --omit-merges to omit
those commits that merged branches, i.e. those having more than one
parent.
In order to avoid confusion, the previous command line option
--include-merges has been renamed to --include-merged.
The old name of the command line option will still be accepted.
The name change also affects bzr missing.
(Martin von Gagern)
- bzr serve will now disconnect clients if they have not issued an RPC
request after 5minutes. On POSIX platforms, this will also happen for
bzr serve --inet. This can be overridden with the configuration
variable serve.client_timeout or in the command line parameter
bzr serve --client-timeout=X. Further, it is possible to request
bzr serve [--inet] to shutdown gracefully by sending SIGHUP. It will
finish the current request, and then close the connection.
(John Arbash Meinel, #824797, #795025)
- The new experimental format development-colo supports colocated
branches. This format will eventually be merged back into the 2a
format when it has stabilized and there is adequate UI support for
colocated branches.
(Jelmer Vernooij, #831481)
Improvements
- Fixed a bug where bzr tags -r x..y loaded the branch history once for
every revision in the range; it's now much faster. (Vincent Ladeuil, #857335)
- bzr info -v can now be run against branches that don't support
last_revision_info, in which case the branch information will simply
not be displayed. (Jelmer Vernooij)
Bug Fixes
- bzr shelve can now be used in emacs shells as the input handling is
turned into a line-based one when INSIDE_EMACS is set (which is the
case for all recent emacs versions). (Vincent Ladeuil, #856261)
- bzr tags can now be used against remote repositories that do
not provide access to the revision graph. (Jelmer Vernooij, #858942)
- bzr update PATH will stop if you seem to be asking it to update
anything less than a whole tree, because that's not supported by bzr's
concept that the whole tree has a single basis revision. Previously, it
would go ahead and update the whole tree, which was surprising.
(Martin Pool, #557886)
- Don't crash if bzrlib.initialize() has not been called while accessing
configs. (Vincent Ladeuil, #863401)
- Redirects between http and https no longer discard path information
in some cases. (Jelmer Vernooij, #853765)
- The --overwrite argument to bzr push and bzr pull no longer
reports all tags as changed. (Jelmer Vernooij, #845396)
- WorkingTree.get_file_mtime now raises NoSuchId if a file id is
specified that is unknown. (Jelmer Vernooij, #847435)
API Changes
- Branch.get_revision_delta has been deprecated. Use
Repository.get_revision_delta instead. (Jelmer Vernooij, #859712)
- Plugins that implement custom protocols for bzr serve should now
also take an argument timeout. This is used by the the bzr protocol
to close a connection if a client has been idle for more than X seconds.
(Default 5minutes). (John Arbash Meinel)
- Repository.fileids_altered_by_revision_ids has been moved to
VersionedFileRepository and is no longer part of the standard
Repository interface. (Jelmer Vernooij)
- The argument include_merges to missing.find_unmerged has
been renamed to include_merged. The old name is still supported
for now but will cause a deprecation warning. (Martin von Gagern)
- The new method ControlDirFormat.is_initializable() returns a boolean
indicating whether or not it is possible to use any of the
initialization methods of that format to create a new control dir.
(Jelmer Vernooij)
Internals
- Branch objects can now use a config stack with the newly introduced
get_config_stack(). Both get_config and get_config_stack can
be used for the same branch but it's recommended to stick to one for a
given option.
Testing
- Test scripts can now use bzr shelve and provide their input as
complete lines. (Vincent Ladeuil, #856261)
- Really corrupt the pack file without depending on a special length or value.
(Vincent Ladeuil, #807032)
This is the first beta of the 2.5 series, leading up to a 2.5.0
release in February 2012.
This release includes better support for gpg signing, better support for
i18n (mostly command help and error messages), more options to filter bzr
log output, more support for colocated branches ("location,branch=XXX"
syntax), better feedback on updated tags for various commands, faster
branching into an empty repository, enhancements to the config framework and
more.
Beta releases are suitable for everyday use but may cause some
incompatibilities with plugins. Some plugins may need small updates to work
with 2.5b1.
External Compatibility Breaks
None
New Features
A from_unicode parameter can be specified when registering a config
option. This implements boolean, integer and list config options when the
provided bool_from_store, int_from_store and list_from_store
are used for this parameter. (Vincent Ladeuil)
Accessing a packaging branch on Launchpad (eg, lp:ubuntu/bzr) now
checks to see if the most recent published source package version for
that project is present in the branch tags. This should help developers
trust whether the packaging branch is up-to-date and can be used for new
changes. The level of verbosity is controlled by the config item
launchpad.packaging_verbosity. It can be set to one of
- off
disable all checks
- minimal
only display if the branch is out-of-date
- short
also display single-line up-to-date and missing,
- all
(default) display multi-line content for all states
(John Arbash Meinel, #609187, #812928)
Add a config option gpg_signing_key for setting which GPG key should
be used to sign commits. Also default to using the gpg user identity
which matches user_email() as set by whoami.
(Jonathan Riddell, #68501)
An invalid parameter can be specified when registering a config option
to decide what should be done when invalid values are
encountered. 'warning' and 'error' will respectively emit a warning and
ignore the value or errors out. (Vincent Ladeuil)
bzr add now skips large files in recursive mode. The default "large"
size is 20MB, and is configurable via the add.maximum_file_size
option. A value of 0 disables skipping. Named items passed to add are
never skipped. (Shannon Weyrick, #54624)
bzr help configuration/<option> display the help for option for
all registered configuration options. (Vincent Ladeuil, #747050)
bzr log -m now matches message, author, committer and bugs instead
of just matching the message. --message keeps its original meaning,
while --match-message, --match-author, --match-committer and
--match-bugs match each of those fields. (Jacek Sieka)
config.Option can now declare default_from_env, a list of
environment variables to get a default value from. (Vincent Ladeuil)
config.NameMatcher can be used to implement config stores and stacks
that need to provide specific option values for arbitrary unique IDs (svn
repository UUIDs, etc). (Vincent Ladeuil, #843638)
New builtin bzr branches command, which lists all colocated branches
in a directory. (Jelmer Vernooij, #826820)
Relative local paths can now be specified in URL syntax by using the
"file:" prefix. (Jelmer Vernooij)
Report commits signed with expired keys in verify-signatures.
(Jonathan Riddell, #804254)
Translations are now enabled for command help, errors and globally
for any message using gettext given on output. (Jonathan Riddell,
INADA Naoki, #83941)
Improvements
- bzr add will now warn about nested subtrees that are skipped.
(Jelmer Vernooij, #187342)
- bzr commit -m '' can now be used to force an empty commit message.
Entering an empty commit message in the message editor still triggers
an error. (Jelmer Vernooij)
- bzr pull will now mention how many tags it has updated.
(Jelmer Vernooij, #164450)
- bzr tag no longer errors if a tag already exists but refers to the
same revision, and will mention when a tag has been updated
rather than created. (Jelmer Vernooij, #381203)
- bzr uncommit will now remove tags that refer to removed revisions.
The --keep-tags option can be used to prevent this behaviour.
(Jelmer Vernooij, #605814)
- Do not run i18n initialisation twice. (Jonathan Riddell)
- Install translation .mo files. (Jonathan Riddell)
- Locations printed by bzr upgrade are now formatted before display.
(Jelmer Vernooij)
- Repository.get_parent_map now estimates the size of the returned
content more accurately. This means that we get closer to the desired
64kB/request. For repositories converted from svn, this can be an
improvement of approx 5:1 in round trips to discover the whole history.
(John Arbash Meinel)
- Support a bugtracker option which is used by bzr commit --fixes
if no bug tracker was specified on the command line.
(Jelmer Vernooij, #334860)
- Use gettext.NullTranslations in i18n to allow use of i18n even when
translations are not turned on. (Jonathan Riddell)
Bug Fixes
- bzr commit now correctly reports missing files as "removed", not
"modified". (Jelmer Vernooij, #553955)
- bzr reconfigure will now allow multiple non-conflicting requests
in a single invocation, e.g. --branch and --use-shared.
(Martin von Gagern, #842993)
- A call to CHKInventory's filter-method will not result in a
DuplicateFileId error, if you move a subfolder and change a file in
that subfolder.
(Bastian Bowe, #809901)
- Branching from a stacked branch no longer does a get_parent_map
request for each revisions that is in the stacked-on repository while
determining what revisions need to be fetched. This mostly impacts
branching initialy into an empty shared repository when the source is
not the development focus. (John Arbash Meinel, #388269)
- Decode BZR_HOME with fs encoding on posix platforms to avoid unicode
errors. (Vincent Ladeuil, #822571)
- Fix fallout from URL handling changes in 2.5 that caused an IndexError to be
raised whenever a transport at the drive root was opened on windows.
(Martin [gz], #841322)
- Fixed loading of external merge tools from config to properly decode
command-lines which contain embedded quotes. (Gordon Tyler, #828803)
- Rather than an error being raised, a warning is now printed when the
current user does not have permission to read a configuration file.
(Jelmer Vernooij, #837324)
- The pull command will now always use separate connections for the
case where the destination is a heavyweight checkout of some remote
branch on the same host as the source branch.
(Martin von Gagern, #483661)
- TreeTransformBase.fixup_new_roots no longer forces trees to have a root, so
operations that use it, like merge, can now create trees without a root.
(Aaron Bentley)
Documentation
- Release instructions refreshed. (Vincent Ladeuil)
API Changes
- BranchFormat.initialize now takes a append_revisions_only
argument. (Jelmer Vernooij)
- Branch._get_checkout_format now takes a lightweight argument
which indicates if the format should be for a lightweight or a
heavyweight checkout. (Jelmer Vernooij)
- ControlDir.create_branch now takes a append_revisions_only argument.
(Jelmer Vernooij)
- New class URL in bzrlib.utils for managing parsed URLs.
(Jelmer Vernooij)
- New method Config.get_user_option_as_int_from_SI added for expanding a
value in SI format (i.e. "20MB", "1GB") into its integer equivalent.
(Shannon Weyrick)
- New method InterTree.file_content_matches which checks that
two files in different trees have the same contents.
(Jelmer Vernooij)
- New method Tree.get_file_verifier which allows tree implementations
to return non-sha1 checksums to verify files.
(Jelmer Vernooij, #720831)
- New methods get_transport_from_path and get_transport_from_url
have been added that only support opening from a path or a URL,
unlike get_transport. (Jelmer Vernooij)
- New registry OptionRegistry specialized for configuration options.
(Vincent Ladeuil)
- Remove AtomicFile.closed which has been deprecated in bzr 0.10.
(Vincent Ladeuil)
- Remove commands._builtin_commands, commands.shlex_split_unicode,
Command._maybe_expand_globs and Command.run_direct deprecated in
2.10 and 2.2.0. (Vincent Ladeuil)
- Remove diff.get_trees_and_branches_to_diff deprecated in 2.2.0.
- Remove log.calculate_view_revisions, log._filter_revision_range,
log.get_view_revisions which have been deprecated in bzr 2.1.0. Also
remove log.show_one_log which was never properly deprecated but wasn't
used and is easy to inline if needed. (Vincent Ladeuil)
- Remove trace.info, trace.error and trace.show_log_error
deprecated in 2.1.0. (Vincent Ladeuil)
- Remove TransportListRegistry.set_default_transport, as the concept of
a default transport is currently unused. (Jelmer Vernooij)
- Remove UIFactory.warn_cross_format_fetch and
UIFactory.warn_experimental_format_fetch in favor of
UIFactory.show_user_warning. (Jelmer Vernooij)
- Tags containers can now declare whether they support versioned
tags and whether tags can refer to ghost tags.
(Jelmer Vernooij)
- Tags.merge_to now returns a dictionary with the updated tags
and a set of conflicts, rather than just conflicts. (Jelmer Vernooij)
- There is a new class ContentFilterTree that provides a facade for
content filtering. The filtered parameter to export is deprecated
in favor of passing a filtered tree, and the specific exporter plugins
no longer support it.
(Martin Pool)
- Transport now has a _parsed_url attribute instead of
separate _user, _password, _port, _scheme, _host
and _path attributes. Proxies are provided for the moment but
may be removed in the future. (Jelmer Vernooij)
Internals
- A new debug flag hpss_client_no_vfs will now cause the HPSS client
to raise a HpssVfsRequestNotAllowed exception when a VFS request
is attempted. (Jelmer Vernooij)
- New method ControlDir._get_selected_branch which returns the
colocated branch selected using path segment parameters.
(Jelmer Vernooij, #380871)
Testing
- Blackbox tests (including test scripts) can be debugged interactively (see
bzrlib.debug.BzrPdb for details). (Vincent Ladeuil)
- BranchBuilder.build_snapshot now supports a "flush" action. This
cleanly and reliably allows tests using BranchBuilder to construct
branches that e.g. rename files out of a directory and unversion that
directory in the same revision. Previously some changes were impossible
due to the order that build_snapshot performs its actions.
(Andrew Bennetts)
- Don't require os.fdatasync to be defined on all supported OSes
(BSD-based OSes don't define it). (Vincent Ladeuil, #822649)
- Fix compatibility with testtools 0.9.12. (Jelmer Vernooij, #815423)
- LockDir can now be run when the local hostname is localhost.
(Jelmer Vernooij, #825994)
- ModuleAvailableFeature won't try to import already imported modules,
allowing it to be used for modules with side-effects.
(Vincent Ladeuil, #712474)
- Output time stamps while running make check to get better timings from
pqm. (Vincent Ladeuil, #837926)
- TestCaseWithMemoryTransport is faster now: _check_safety_net now
just compares the bytes in the dirstate file to its pristine state,
rather than opening the WorkingTree and calling last_revision().
This reduces the overall test suite time by about 10% on my laptop.
(Andrew Bennetts)
- Update TestCase.knownFailure to the testtools way of handling expected
failures to resolve Python 2.7 incompatibility. (Martin [gz], #607400)
External Compatibility Breaks
New Features
Improvements
Bug Fixes
- Cope with Unix filesystems, such as smbfs, where chmod gives 'permission
denied'. (Martin Pool, #606537)
- When the limbo or pending-deletion directories exist, typically
because of an interrupted tree update, but are empty, bzr no longer
errors out, because there is nothing for the user to clean up. Also,
errors in creation of these directories are no longer squelched.
(Martin Pool, #427773)
- During merges, when two entries end up using the same path for two
different file-ids (the same file being 'bzr added' in two different
branches) , 'duplicate' conflicts are created instead of 'content'
ones. This was previously leading to a 'Malformed tramsform' exception.
(Vincent Ladeuil, #880701)
- 'Malformed transform' exceptions are now recognized as internal errors
instead of user errors and report a traceback. This will reduce user
confusion as there is generally nothing users can do about them.
(Vincent Ladeuil, #880701)
- Prevent a traceback being printed to stderr when logging has problems and
accept utf-8 byte string without breaking. (Martin Packman, #714449)
- _Win32Stat object provides members st_uid and st_gid, those are present
in Python's os.stat object. These members required for external tools like
bzr-git and dulwich. (Alexander Belchenko, #967060)
Documentation
API Changes
Internals
Testing
- Account for slightly improved compression with newer versions of zlib in
bt.test_btree_index tests. (Martin Packman, #940453)
This is a bugfix release. Most of the bugs dealt with portability
issues. Upgrading is recommended for all users of earlier 2.4 releases.
External Compatibility Breaks
None.
Improvements
- Fixed a bug where bzr tags -r x..y loaded the branch history once for
every revision in the range; it's now much faster. (Vincent Ladeuil, #857335)
Bug Fixes
- Fixed an infinite loop when creating a repo at the root of the filesystem,
i.e. "/", due to posixpath.normpath() not collapsing 2 leading slashes into
one, thus respecting the POSIX standard, but making relpath() loop infinitely.
(Florian Vichot, #861008)
- Fixed loading of external merge tools from config to properly decode
command-lines which contain embedded quotes. (Gordon Tyler, #828803)
- Include declaration of 'changed' to avoid an UnboundLocalError in dirstate
pyrex code with new Cython versions. (Denys Duchier, #837221)
- Prevent several kinds of OverflowError and other fallout from failing to fit
stat fields into four bytes in dirstate pack_stat implementations.
(Martin Packman, #683191 #706957)
- Return early from create_delta_index_from_delta given tiny inputs. This
avoids raising a spurious MemoryError on certain platforms such as AIX.
(John Arbash Meinel, #856731)
Documentation
- Corrected documentation for bzr serve in the Admin Guide.
(Morten Bøgeskov, Martin Pool, #832576)
Testing
- Accept both old and new style testtools output in selftest tests.
(Jelmer Vernooij, Martin Packman, #815423)
- Fix the race for TestingThreadingTCPServer in
test_server_crash_while_responding. (Vincent Ladeuil, #869366)
- Really corrupt the pack file without depending on a special length or value.
(Vincent Ladeuil, #807032)
This is a bugfix release. Upgrading is recommended for all users of earlier
2.4 releases.
It includes fixes from previous stable releases and address some issues with
the test suite.
External Compatibility Breaks
New Features
Improvements
Bug Fixes
- config.LocationMatcher properly excludes unrelated sections.
(Vincent Ladeuil, #829237)
- dirstate.fdatasync and repository.fdatasync can now properly be
disabled. (Vincent Ladeuil, #824513)
- Disable os.fsync and os.fdatasync by default when running
bzr selftest. You can use --sync to re-enable them.
(John Arbash Meinel, #837293)
- Fix i18n use when no environment variables are set. (Jelmer Vernooij, #810701)
- Avoid UnicodeDecode error when reporting EINVAL from transports.
(IWATA Hidetaka, #829237)
Documentation
- Corrected documentation for BZR_PROGRESS_BAR.
(Dennis Benzinger, #735417)
API Changes
Internals
Testing
- The test suite should now be able to run under weird environments where
/etc/passwd doesn't contain the uid for the user running selftest
or where fakeroot is used but /root is inacessible.
(Vincent Ladeuil, #825027)
This release marks the start of a new long-term-stable series. From here, we
will only make bugfix releases on the 2.4 series (2.4.1, etc, and support it
until February 2013), while 2.5 will become our new development series.
This is a bugfix and polish release over the 2.3 series, with a large number
of bugs fixed (>150 for the 2.4 series alone), and some performance
improvements. Support for python 2.4 and 2.5 has been dropped, many large
working tree operations have been optimized as well as some stacked branches
operations.
Only bugfixes from other stables series have been included since 2.4b5 so
all known fixed bugs are included here.
Users are encouraged to upgrade from the other stable series.
External Compatibility Breaks
New Features
Improvements
Bug Fixes
A call to CHKInventory's filter-method will not result in a
DuplicateFileId error, if you move a subfolder and change a file in
that subfolder.
(Bastian Bowe, #809901)
Accessing a packaging branch on Launchpad (eg, lp:ubuntu/bzr) now
checks to see if the most recent published source package version for
that project is present in the branch tags. This should help developers
trust whether the packaging branch is up-to-date and can be used for new
changes. The level of verbosity is controlled by the config item
launchpad.packaging_verbosity. It can be set to one of
- off
disable all checks
- minimal
only display if the branch is out-of-date
- short
also display single-line up-to-date and missing,
- all
(default) display multi-line content for all states
(John Arbash Meinel, #609187, #812928)
Cope with not all Python versions having a clear method on
TestCase._type_equality_funcs.
(Martin [gz], Jelmer Vernooij, #809048)
Fetching tags when fetching the tip revision of a branch is now
controlled by the config setting branch.fetch_tags. The behavior has
been reverted to 2.3's not-fetching tagged revisions by default.
(John Arbash Meinel, #771184)
The fix for bug #513709 caused us to open a new connection when
switching a lightweight checkout that was pointing at a bound branch.
This isn't necessary because we know the master URL without opening it,
avoiding an extra SSH connection, etc.
(John Arbash Meinel, #812285)
Documentation
API Changes
Internals
Testing
- BranchBuilder.build_snapshot now supports a "flush" action. This
cleanly and reliably allows tests using BranchBuilder to construct
branches that e.g. rename files out of a directory and unversion that
directory in the same revision. Previously some changes were impossible
due to the order that build_snapshot performs its actions.
(Andrew Bennetts)
- TestCaseWithMemoryTransport is faster now: _check_safety_net now
just compares the bytes in the dirstate file to its pristine state,
rather than opening the WorkingTree and calling last_revision().
This reduces the overall test suite time by about 10% on my laptop.
(Andrew Bennetts)
This is the fifth (and last) beta of the 2.4 series leading to
2.4.0 release in August 2011. Beta releases are suitable for
everyday use but may cause some incompatibilities with plugins.
This release includes all bug fixed in previous series known at
the time of this release.
External Compatibility Breaks
None.
New Features
- New command verify-signatures to check if all commits or specified commits
have digital signatures from trusted keys. Requires python-gpgme to be
installed.
- New option --signatures for bzr log to display digital signature
verification results for each commit.
- Config option acceptable_keys to list which GPG keys are verified as trusted.
- Config option validate_signatures_in_log to always show signatures in
bzr log.
Improvements
- Branch.open is now about 3x faster (about 2ms instead of 6.5ms).
(Andrew Bennetts).
- Pack, dirstate, and index files are synced to persistent storage if
possible when writing finishes, to reduce the risk of problems caused by
a machine crash or similar problem. This can be turned off through the
dirstate.fdatasync and repository.fdatasync options, which can
be set in locations.conf or bazaar.conf. (Martin Pool,
#343427)
Bug Fixes
- Display a proper error message when a config file content cannot be
decoded as UTF-8 or when it cannot be parsed.
(Vincent Ladeuil, #502060, #688677, #797246)
- Generate a single conflict (instead of two) when merging a branch
modifying and renaming a file in a branch that deleted it (or vice-versa).
(Vincent Ladeuil, #688101)
- Give a more helpful message when the bzr executable doesn't match the
library. (This typically happens because of a misconfigured PYTHONPATH
or half-installed bzr.)
(Martin Pool, #804553)
- Properly load utf8-encoded config files. (Vincent Ladeuil, #799212)
- GraphThunkIdsToKeys.merge_sort now properly returns
keys rather than ids. (Jelmer Vernooij, #799677)
- TreeTransformBase.fixup_new_roots can now check that a tree root
is present. (Jelmer Vernooij, #801257)
API Changes
- New attributes WorkingTreeFormat.supports_versioned_directories and
RepositoryFormat.supports_versioned_directories.
(Jelmer Vernooij, #765815)
- The "revno" field type when using the python version-info format is now
a string (to handle dotted revnos) (Benoît Pierre, #796259)
Internals
- Start implementing localization, starting with command help text (but not
the command options themselves). This will allow bootstrapping the bzr
internationalization process. (Inada Naoki)
Testing
- Fix test failures when running as a homeless user (debian buildd). Tests
leaking into ${HOME}/.bzr.log should be detected properly now.
(Vincent Ladeuil, #798698)
This is the fourth beta of the 2.4 series, leading to a 2.4.0 release in
August 2011. Beta releases are suitable for everyday use but may cause some
incompatibilities with plugins.
This release includes all bug fixed in previous series known at the time of
this release.
External Compatibility Breaks
- Do not treat configuration option 'check_signatures = require' as if
it were 'create_signatures = always' (Jonathan Riddell)
New Features
- Hooks have been added for config stacks: get, set and remove
are called when an option is respectively read, modified or deleted. Also
added load and save hooks for config stores, called when the
stores are loaded or saved. (Vincent Ladeuil)
- New hook server_exception in bzrlib.smart.server to catch any
exception caused while running bzr serve.
(Jonathan Riddell, #274578)
- New hook set_commit_message in bzrlib.msgeditor to set a commit message
and revision properties. (Jonathan Riddell, #274578)
- Support -S as an alias for --short for the log and
missing commands. (Martin von Gagern, #38655)
Improvements
- bzr annotate can be run without setting whoami data first.
(Jonathan Riddell, #667408)
Bug Fixes
- Bazaar can now detect when a lock file is held by a dead process
originating from the same machine, and steal the lock after printing a
message to the user. This is off by default, for safety, but can be
turned on by setting the configuration variable locks.steal_dead to
True.
(Martin Pool, #220464)
- bzr version-info now works when the tree is on a dotted revno.
(Benoît Pierre, #796259)
- Credentials in the log output produced by -Dhttp are masked so users
can more freely post them in bug reports. (Vincent Ladeuil, #723074)
- Fix a race condition for server_started hooks leading to a spurious
test failure. (Vincent Ladeuil, #789167)
- Fix exporting subdirectory with --per-file-timestamps.
(Szilveszter Farkas, #795557)
- Handle files that get created but don't get used during TreeTransform.
open() can create a file, and still raise an exception before it
returns. So anything we might have created, make sure we destroy during
finalize(). (Martin [gz], #597686)
- pack_repo now uses Transport.move instead of
Transport.rename, deleting any existing targets even on SFTP.
(Martin von Gagern, #421776)
- Pass the build_mo command to the rest of the setup() calls in
setup.py. The bdist_wininst and py2exe code paths were failing
because build_mo became a required step that they didn't know about.
(John Arbash Meinel, #787122)
- Preserve existing root-id when merging an unrelated branch.
(Aaron Bentley, #806356)
- Properly avoid re-adding a file after it changes case on CICP
filesystems. (John Arbash Meinel, #798130)
- Reports the original error when an InvalidHttpResponse exception is
encountered to facilitate debug. (Vincent Ladeuil, #788530)
- Reports a non-existent file error when trying to merge in a file
that does not exist. (Jonathan Riddell, #330063)
- UIFactory.prompt, UIFactory.get_username,
UIFactory.get_password and UIFactory.get_boolean now require a
unicode prompt to be passed in. (Jelmer Vernooij, #592083)
- Support merging into the empty tree. (Aaron Bentley, #595328)
Documentation
- Improve documentation of bzr merge --force.
(Neil Martinsen-Burrell, #767307)
- Make docs for configuration options for digital signatures match
reality. (Jonathan Riddell)
- Add user-guide page on GPG signatures. (Jonathan Riddell)
API Changes
- Checking for a file id in a Tree or Inventory using in is now
deprecated. Instead, use has_id.
(Martin Pool)
- Exporters are now all exposed as generators, rather than as single-call
functions, so that calling code can take stream the output.
(Xaav, Martin Pool)
- Information about held lockdir locks returned from eg LockDir.peek is
now represented as a LockHeldInfo object, rather than a plain
Python dict.
(Martin Pool)
- Remove file_status function.
(Martin Pool)
- Repository.iter_reverse_revision_history is now deprecated.
Use Graph.iter_lefthand_ancestry instead.
(Jelmer Vernooij, #739481)
- Repository.get_ancestry has been deprecated. Use
Graph.iter_ancestry instead.
(Jelmer Vernooij, #784511)
Internals
- tools/check-newsbugs.py accepts a --browser option to open
corresponding launchpad pages in a browser. (Vincent Ladeuil)
Testing
- A ImportTariffTestCase base class has been added in
bzrlib.tests.test_import_tariff, which can be used for import tariff
tests in plugins. (Jelmer Vernooij, #793465)
- Fix deadlock in TestImportTariffs.test_simple_serve when stderr gets
more output than fits in the default buffer. This was happening on the
Windows buildslave, and could easily happen in other circumstances where
the default OS buffer size for pipes is small or the python -v
output is large. (Andrew Bennetts, #784802)
- Fix spurious test failure on OSX for WorkingTreeFormat2.
(Vincent Ladeuil, #787942)
- Re-target bb.test_merge.TestMerge.test_merge_reversed_revision_range
and rewrite it as a parametrized test to avoid unrelated failures.
(Vincent Ladeuil, #795456)
- Show log file contents from subprocesses started by
start_bzr_subprocess in test failure details. This may help diagnose
strange hangs and failures involving subprocesses. (Andrew Bennetts)
- Skip utextwrap tests when sphinx breaks text_wrap by an hostile
monkey-patch to textwrap.TextWrapper.wordsep_re.
(Vincent Ladeuil, #785098)
- Multiple selftest --exclude options are now combined instead of
overriding each other. (Vincent Ladeuil, #746991)
- Restore some FTPTransport test coverage by allowing pyftpdlib
0.6.0 to be used. Also restore medusa support while leaving it
disabled to make it easier to use if/when we can in the future.
(Vincent Ladeuil, #781140)
- TestImportTariffs no longer uses the real $HOME. This prevents it
from polluting $HOME/.bzr.log or being accidentally influenced by
user configuration such as aliases. It still runs with all the user's
plugins enabled, as intended.
(Vincent Ladeuil, Andrew Bennetts, #789505)
This is the third beta of the 2.4 series, leading to a 2.4.0 release in
August 2011. Beta releases are suitable for everyday use but may cause some
incompatibilities with plugins.
This release includes all bug fixed in previous series known at the time of
this release.
External Compatibility Breaks
- bzr-2.4 has officially dropped support for python2.4 and python2.5.
We will continue to maintain bzr-2.3 for people who still need to
use those versions of python. (John Arbash Meinel)
New Features
- The text compressor used for 2a repositories now has a tweakable
parameter that can be set in bazaar.conf.
bzr.groupcompress.max_entries_per_source default of 65536.
When doing compression, we build up an index of locations to match
against. Setting this higher will result in slightly better compression,
at a cost of more memory. Note that a value of 65k represents fully
sampling a 1MB file. So this only has an effect when compressing texts
larger than N*16 bytes. (John Arbash Meinel, #602614)
Improvements
- bzr branch --stacked from a smart server uses the network a little
more efficiently. For a simple branch it reduces the number of
round-trips by about 20%. (Andrew Bennetts)
- bzr log --line scales the width of the author field with the size of
the line. This means that the full author name is shown when the
environment variable BZR_COLUMNS=0. (Neil Martinsen-Burrell)
- bzr pull now properly triggers the fast
CHKInventory.iter_changes rather than the slow generic
inter-Inventory changes. It used to use a DirStateRevisionTree as
one of the source trees, which is faster when we have to read the whole
inventory anyway, but much slower when we can get just the delta out of
the repository. On a 70k record tree, this changes bzr pull from 28s
down to 17s. (John Arbash Meinel, #780677)
- Slightly reduced memory consumption when fetching into a 2a repository
by reusing existing caching a little better. (Andrew Bennetts)
- Speed up bzr status by a little bit when there are a couple of
modified files. We now track how many files we have seen that need
updating, and only rewrite the dirstate file if enough of them have
changed. The default is 10, and can be overridden by setting the branch
option "bzr.workingtree.worth_saving_limit".
(Ian Clatworthy, John Arbash Meinel, #380202)
- Speed up bzr uncommit. Instead of resetting the dirstate from
scratch, use update_basis_by_delta, computing the delta from the
repository. (John Arbash Meinel, #780544)
Bug Fixes
- All Tree types can now be exported as tar.*, zip or directories.
(Aaron Bentley)
- bzr merge --no-remember location never sets submit_branch.
(Vincent Ladeuil, #782169)
- bzr pull --no-remember location never sets
parent_location. bzr push --no-remember location never
sets push_location. bzr send --no-remember
submit_location public_location never sets submit_branch
nor public_branch. (Vincent Ladeuil)
- Conflicts involving non-ascii filenames are now properly reported rather
than failing with a UnicodeEncodeError. (Martin [GZ], #686161)
- Correct parent is now set when using 'switch -b' with bound branches.
(A. S. Budden, #513709)
- Fix bzr plugins regression in bzr 2.4 which resulted in a traceback
from writelines on ckj terminals. (Martin [GZ], #754082)
- WT.inventory and WT.iter_entries_by_dir() was not correctly
reporting subdirectories that were tree references (in formats that
supported them). (John Arbash Meinel, #764677)
- Merging into empty branches now gives an error as this is currently
not supported. (Jonathan Riddell, #242175)
- Do not show exception to user on pointless commit error.
(Jonathan Riddell #317357)
- WT.update_basis_by_delta no longer requires that the deltas match
the current WT state. This allows update_basis_by_delta to be used
by more commands than just commit. Updating with a delta allows us to
not load the whole inventory, which can take 10+s with large trees.
(Jonathan Riddell, John Arbash Meinel, #781168)
- bzr mv --after old_name new_name now works if "new_name" is newly
added. (Benoît Pierre)
Documentation
- Restore the workaround for option names including dots (--1.14) which was
disabled when we stopped listing --1.9 as a format.
(Vincent Ladeuil, #782289)
API Changes
- annotate_file has been deprecated in favor of
annotate_file_revision_tree. (Jelmer Vernooij, #775598)
- Branch.fetch now takes an optional limit argument.
(Andrew Bennetts, Jelmer Vernooij, #750175)
- Inter.get now raises NoCompatibleInter if there are no
compatible optimisers rather than an instance of the class it is called
on. (Jelmer Vernooij)
- Branch.push now takes a lossy argument.
Branch.lossy_push has been removed.
(Jelmer Vernooij)
- New method Repository.get_file_graph which can return the
per-file revision graph. (Jelmer Vernooij, #775578)
- The default implementation of Branch is now oriented to
storing the branch tip. Branch implementations which store the full
history should now subclass FullHistoryBzrBranch.
Branch._last_revision_info has been renamed to
Branch._read_last_revision_info (Jelmer Vernooij)
- Tree.__iter__ has been deprecated; use Tree.all_file_ids
instead. (Jelmer Vernooij)
- Tree.get_symlink_target now takes an optional path
argument. (Jelmer Vernooij)
Internals
- MutableTree.smart_add now uses inventory deltas.
(Jelmer Vernooij, #146165)
- Removed bzrlib.branch._run_with_write_locked_target as
bzrlib.cleanup provides the same functionality in a more general
way. (Andrew Bennetts)
Testing
- A test that was expected to fail but passes instead now counts as a failure
catching up with new testtools and subunit handling. (Martin [GZ], #654474)
- Make it easier for plugins to reuse the per_workingtree scenarios by
restoring the wt_scenarios helper that was accidentally deleted.
(Vincent Ladeuil, #783472)
- Removed test_breakin tests that were excessively prone to hanging,
did not work on Wine, and partly already disabled.
(Martin Pool, #408814, #746985)
- Windows locations are different and should be tested accordingly.
(Vincent Ladeuil, #788131)
This is the second beta of the 2.4 series, leading to a 2.4.0 release in
August 2011. Beta releases are suitable for everyday use but may cause some
incompatibilities with plugins.
This release includes all bug fixed in previous series known at the time of
this release.
External Compatibility Breaks
- Two command synonyms for bzr branch have been deprecated, to avoid
confusion and to allow the names to later be reused. The removed names
are: get and clone. (Martin Pool, #506265)
New Features
- bzr commit now supports a --lossy argument that can be used
to discard any data that can not be natively represented when committing
to a foreign VCS. (Jelmer Vernooij, #587721)
Improvements
- bzr merge in large trees is now significantly faster. On a 70k entry
tree, the time went from ~3min down to 30s. This also effects bzr pull
and bzr update since they use the same merge logic to update the
WorkingTree. (John Arbash Meinel, #759091)
- bzr revert now properly uses bzr status's optimized
iter_changes. This can be a significant performance difference (33s
to 5s on large trees). (John Arbash Meinel, #759096)
- Resolve lp:FOO urls locally rather than doing an XMLRPC request if
the user has done bzr launchpad-login. The bzr+ssh URLs were already
being handed off to the remote server anyway (xmlrpc has been mapping
lp:bzr to bzr+ssh://bazaar.launchpad.net/+branch/bzr, rather
than bzr+ssh://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev for a few
months now.) By doing it ourselves, we can cut out substantial startup
time. From Netherlands to London it was taking 368ms to do the XMLRPC
call as much as 2s from Sydney. You can test the local logic by using
-Dlaunchpad. (John Arbash Meinel, #397739)
- When building a new WorkingTree (such as during bzr co or
bzr branch) we now properly store the stat and hash of files that
are old enough. This saves a fair amount of time on the first
bzr status (on a 500MB tree, it saves about 30+s).
(John Arbash Meinel, #740932)
Bug Fixes
- Arguments that can't be decoded to unicode in the current posix locale give
a clearer error message without a traceback. (Martin [gz], #745712)
- bzrlib.log._DEFAULT_REQUEST_PARAMS is no longer accidentally
mutated by bzrlib.log._apply_log_request_defaults. In practice
these default values aren't relied on very often so this probably
wasn't causing any trouble. (Andrew Bennetts)
- bzr log now works on revisions which are not in the current branch.
(Matt Giuca, #241998)
- Don't rewrite the dirstate file when non-interesting changes have
occurred. This can significantly improve 'bzr status' times when there
are only small changes to a large tree.
(Ian Clatworthy, John Arbash Meinel, #380202)
- Lazy hooks are now reset between test runs. (Jelmer Vernooij, #745566)
- bzrlib.merge.Merge now calls iter_changes without
include_unversioned=True. This makes it significantly faster in many
cases, because it only looks at modified files, rather than building
information about all files. This can cause failures in other
TreeTransform code, because it had been expecting to know the names of
things which had not changed (such as parent directories). All cases we
know about so far have been fixed, but there may be fallout for edge
cases that we are missing. (John Arbash Meinel, #759091)
- SFTPTransport is more pro-active about closing file-handles. This
reduces the chance of having threads fail from async requests while
running the test suite. (John Arbash Meinel, #656170)
- Standalone bzr.exe installation on Windows: user can put additional python
libraries into site-packages subdirectory of the installation directory,
this might be required for "installing" extra dependencies for some plugins.
(Alexander Belchenko, #743256)
- transform.revert() has been updated to use
wt.iter_changes(basis_tree) rather than
basis_tree.iter_changes(wt). This allows the optimized code path to
kick in, improving bzr revert times significantly (33s to 4s on
large trees, 0.7s to 0.3s on small trees.) (John Arbash Meinel, #759096)
- TreeTransform.create_file/new_file can now take an optional sha1
parameter. If supplied, when the transform is applied, it will then call
self._tree._observed_sha1 for those files. This lets us update the
hash-cache for content that we create, preventing us from re-reading the
content in the next bzr status. (John Arbash Meinel, #740932)
Documentation
- Added a section about using a shared SSH account on a server for bzr+ssh
access. (Russell Smith)
- The documentation now recommends using SSH rather than SFTP in the
tutorials and the examples, because that will generally be much faster
and better in cases where it can be used. SFTP is still available and
mentioned as an alternative. (Martin Pool, #636712)
API Changes
- Branch.update_revisions has been made private and should no
longer be used by external users. Use Branch.pull or Branch.push
instead. (Jelmer Vernooij, #771765)
- Commands now have an invoked_as attribute, showing the name under
which they were called before alias expansion.
(Martin Pool)
- Hooks.create_hook is now deprecated in favour of Hooks.add_hook.
(Jelmer Vernooij)
- If you call bzrlib.initialize but forget to enter the resulting object
as a context manager, bzrlib will now be initialized anyhow.
(Previously simple programs calling bzrlib might find the library was
mysteriously silent.)
(Martin Pool)
- Inventory-specific functionality has been split out of Tree into
a new InventoryTree class. Tree instances no longer
necessarily provide an inventory attribute. (Jelmer Vernooij)
- Inventory-specific functionality has been split out of RevisionTree
into a new InventoryRevisionTree class. RevisionTree instances no
longer necessarily provide an inventory attribute. (Jelmer Vernooij)
- New method Hooks.uninstall_named_hook. (Jelmer Vernooij, #301472)
- revision_graph_can_have_wrong_parents is now an attribute
on RepositoryFormat rather than a method on Repository.
(Jelmer Vernooij)
- Testament now takes a tree rather than an
inventory. (Jelmer Vernooij, #762608)
- TestCase.failUnlessExists and failIfExists are deprecated in
favour of assertPathExists and assertPathDoesNotExist
respectively.
(Martin Pool)
- The revno parameter of log.LogRevision may now be None,
representing a revision which is not in the current branch.
(Matt Giuca, #241998)
- The various knit pack repository format classes have been moved
from bzrlib.repofmt.pack_repo to
bzrlib.repofmt.knitpack_repo. (Jelmer Vernooij)
- RevisionTree now has a new method get_file_revision.
(Jelmer Vernooij)
- WorkingTree no longer provides an inventory. Instead,
all inventory-related functionality is now on the subclass
InventoryWorkingTree that all native Bazaar working tree
implementations derive from. (Jelmer Vernooij)
Internals
- Added osutils.lstat and osutils.fstat. These are just the os
functions on Linux, but they are wrapped on Windows so that fstat
matches lstat results across all python versions.
(John Arbash Meinel)
- WorkingTree._observed_sha1 also updates the 'size' column. It
happened to be updated as a side-effect of commit, but if we start using
the function elsewhere we might as well do it directly.
(John Arbash Meinel)
Testing
- Stop using failIf, failUnless, failIfEqual, etc, that give
PendingDeprecationWarnings on Python2.7.
(Martin Pool, #760435)
This is the first beta of the 2.4 series, leading up to a 2.4.0
release in August 2011. Beta releases are suitable for everyday use
but may cause some incompatibilities with plugins. Some plugins may need
small updates to work with 2.4b1.
External Compatibility Breaks
(none)
New Features
- Added changelog_merge plugin for merging changes to Changelog files
in GNU format. See bzr help changelog_merge for details.
(Andrew Bennetts)
- Configuration options can now use references to other options in the same
file by enclosing them with curly brackets ({other_opt}). This makes it
possible to use, for example,
push_location=lp:~vila/bzr/config-{nickname} in branch.conf when
using a loom. During the beta period, the default behaviour is to disable
this feature. It can be activated by declaring bzr.config.expand = True
in bazaar.conf. (Vincent Ladeuil)
- External merge tools can now be configured in bazaar.conf. See
bzr help configuration for more information. (Gordon Tyler, #489915)
- The lp: directory service now supports Launchpad's QA staging.
(Jelmer Vernooij, #667483)
Improvements
- A new hidden command bzr repair-workingtree. This is a way to force
the dirstate file to be rebuilt, rather than using a bzr checkout
workaround. (John Arbash Meinel)
- Added a Branch.heads_to_fetch RPC to the smart server protocol.
This allows formats from plugins (such as looms) to efficiently tell the
client which revisions need to be fetched. (Andrew Bennetts)
- Branching, merging and pulling a branch now copies revisions named in
tags, not just the tag metadata. (Andrew Bennetts, #309682)
- bzr cat-revision no longer requires a working tree.
(Jelmer Vernooij, #704405)
- bzr export --per-file-timestamps for .tar.gz files will now
override the mtime for trees exported on Python 2.7 and later, which
expose the 'mtime' field in gzip files. This makes the output of
bzr export --per-file-timestamps for a particular tree
deterministic. (Jelmer Vernooij, #711226)
- bzr export --format=zip can now export to standard output,
like the other exporters can. (Jelmer Vernooij, #513752)
- bzr export can now create .tar.xz and .tar.lzma files.
(Jelmer Vernooij, #551714)
- Getting all entries from CHKInventory.iter_entries_by_dir() has been
sped up dramatically for large trees. Iterating by dir is not the best
way to load data from a CHK inventory, so it preloads all the items in
the correct order. (With the gcc-tree, this changes it (re)reading 8GB
of CHK data, down to just 150MB.) This has noticeable affects for things
like building checkouts, etc. (John Arbash Meinel, #737234)
Bug Fixes
- A MemoryError thrown on the server during a remote operation will now be
usefully reported, and other unexpected errors will include the class name.
(Martin [gz], #722416)
- bzr annotate -r-1 file will now properly annotate a deleted file.
(Andrew King, #537442)
- bzr export to zip files will now set a mode on directories.
(Jelmer Vernooij, #207253)
- bzr export to tgz files will only write out the basename of the
tarfile to the gzip file. (Jelmer Vernooij, #102234)
- bzr push --overwrite with an older revision specified will now correctly
roll back the target branch. (Jelmer Vernooij, #386576)
- bzr lp-propose can now propose merges against packaging branches on
Launchpad without requiring the target branch to be specified.
(Jelmer Vernooij, #704647)
- bzr lp-propose no longer requires a reviewer to be specified. It will
instead leave setting the reviewer up to Launchpad if it was not specified.
(Jelmer Vernooij, #583772)
- bzr pull will now exit with exit code 1 if there were tag conflicts.
(Jelmer Vernooij, #213185)
- bzr mv user errors no longer throw UnicodeEncodeError with non-ascii
paths, however they may still print junk if not on a UTF-8 terminal.
(Martin [gz], #707954)
- bzr reconfigure --unstacked now copies revisions (and their
ancestors) named in tags into the unstacked repository, not just the
ancestry of the branch's tip. (Andrew Bennetts, #401646)
- bzr serve no longer crashes when a server_started hook is installed and
IPv6 support is available on the system. (Jelmer Vernooij, #293697)
- bzr status will not rewrite the dirstate file if it only has
'trivial' changes. (Currently limited to dir updates and newly-added
files changing state.) This saves a bit of time for regular operations.
eg. bzr status in a 100k tree takes 1.4s to compute the status, but 1s
to re-save the dirstate file. (John Arbash Meinel, #765881)
- bzr tags will no longer choke on branches with ghost revisions in
their mainline and tags on revisions not in the branch ancestry.
(Jelmer Vernooij, #397556)
- bzr whoami will now display an error if both a new identity and
--email were specified. (Jelmer Vernooij, #680449)
- launchpadlib doesn't provide the uris module in some old versions.
(Vincent Ladeuil, #706835)
- Empty entries in the NO_PROXY variable are no longer treated as matching
every host.
(Martin Pool, #586341)
- Plugins incompatible with the current version of bzr no longer produce a
warning on every command invocation. Instead, a message is shown by
bzr plugins and in crash reports.
(#704195, Martin Pool)
- The "pretty" version of needs_read_lock and needs_write_lock now
preserves the identity of default parameter values.
(Andrew Bennetts, #718569)
- bzr dump-btree --raw no longer tracebacks on a B-Tree file
containing no rows. (Eric Siegerman, #715508)
- Fix bzr lp-mirror to work on command line branch URLs and branches
without an explicit public location. (Max Bowsher)
- On Python 2.6 and higher, use multiprocessing.cpu_count() to retrieve the
number of available processors. (Jelmer Vernooij, #693140)
API Changes
- Added Branch.heads_to_fetch method. Implementations of the Branch API
must now inherit or implement this method. (Andrew Bennetts, #721328)
- Added bzrlib.mergetools module with helper functions for working with
the list of external merge tools. (Gordon Tyler, #489915)
- All methods and arguments that were deprecated before 2.0
have been removed. (Jelmer Vernooij)
- Branch formats should now be registered on the format registry
(bzrlib.branch.format_registry) rather than using the class
methods on BranchFormat. (Jelmer Vernooij, #714729)
- Branch.set_revision_history is now deprecated.
(Jelmer Vernooij)
- BranchFormat.supports_leaving_lock() and
RepositoryFormat.supports_leaving_lock flags have been added.
(Jelmer Vernooij)
- Branch.fetch implementations must now accept an optional
fetch_tags keyword argument. (Andrew Bennetts)
- Branch.import_last_revision_info is deprecated. Use the
import_last_revision_info_and_tags method instead.
(Andrew Bennetts)
- Because it was too specific to BzrDir implementations,
ControlDir.sprout no longer has a default implementation; it now
raises NotImplementedError. (Jelmer Vernooij, #717937)
- bzrlib.deprecated_graph has been removed. bzrlib.graph
scales better tree and should be used instead.
(Jelmer Vernooij, #733612)
- ControlDirFormat.register_format has been removed. Instead,
Prober implementations should now implement a known_formats
method. (Jelmer Vernooij)
- ControlDirFormats can now provide a check_status method and
raise a custom exception or warning when an unsupported or deprecated
format is being opened. (Jelmer Vernooij, #731311)
- bzrlib.revionspec.dwim_revspecs is deprecated.
Use bzrlib.revisionspec.RevisionSpec_dwim.append_possible_revspec and
bzrlib.revisionspec.RevisionSpec_dwim.append_possible_lazy_revspec
instead. (Jelmer Vernooij, #721971)
- BzrDirFormat has a new attribute fixed_components that
indicates whether the components of the bzrdir can be upgraded
independent of the BzrDir. (Jelmer Vernooij)
- BzrProber.register_format and BzrProber.unregister_format are
now deprecated in favour of the BzrProber.formats format registry.
(Jelmer Vernooij)
- ControlDir implementations no longer have to provide the
get_branch_transport, get_workingtree_transport and
get_repository_transport methods. (Jelmer Vernooij, #730325)
- Converter has been moved from bzrlib.bzrdir to
bzrlib.controldir. (Jelmer Vernooij)
- Repository formats can now provide
_get_extra_interrepo_test_combinations in the same module
to provide extra test combinations for bzrlib.tests.per_repository.
(Jelmer Vernooij)
- Repository formats should now be registered on the format registry
(bzrlib.repository.format_registry) rather than using the class
methods on RepositoryFormat. (Jelmer Vernooij)
- Repository formats can now indicate they do not support the full
VersionedFiles API by setting the supports_full_versioned_files
attribute to False. A subset of the VersionedFiles API
(signatures and text graphs) still needs to be supported.
(Jelmer Vernooij)
- Repository formats have a new method is_deprecated that
implementations can override to return True to trigger a deprecation
warning. (Jelmer Vernooij)
- The revision_id parameter of
Repository.search_missing_revision_ids and
InterRepository.search_missing_revision_ids is deprecated. It is
replaced by the revision_ids parameter. (Andrew Bennetts)
- Working tree formats should now be registered on the format registry
(bzrlib.working_tree.format_registry) rather than using the class
methods on WorkingTreeFormat. (Jelmer Vernooij, #714730)
- Exporting may now be done with a generator
(bzrlib.export.get_export_generator) (Geoff/xaav, #791005)
Internals
- CatchingExceptionThread (formerly ThreadWithException) has been moved
out of the bzrlib.tests hierarchy to make it clearer that it can be used
outside of tests. This class makes it easier to track exceptions in threads
by catching them so they can be re-raised in the controlling thread. It's
available in the bzrlib.cethread module. (Vincent Ladeuil)
- Correctly propagate malloc failures from diff-delta.c code as MemoryError
so OOM conditions during groupcompress are clearly reported. This entailed a
change to several function signatures. (Martin [gz], #633336)
- HookPoint.lazy_hook and Hooks.install_named_lazy_hook can install
hooks for which the callable is loaded lazily. (Jelmer Vernooij)
Testing
- The Range parsing for HTTP requests will correctly parse incomplete ranges.
(Vincent Ladeuil, #731240)
External Compatibility Breaks
New Features
Improvements
Bug Fixes
- Cope cleanly with buggy HTTP proxies that close the socket in the middle
of a multipart response. (Martin Pool, #198646).
- cStringIO is now unconditionally imported in bzrlib.config.
(Jelmer Vernooij, #905361)
- Fix "Unprintable exception" error when a RetryWithNewPacks error is
displayed. (Andrew Bennetts)
Documentation
API Changes
Internals
Testing
Codename: | One and counting |
2.3.4: | 2011-07-14 |
This is a bugfix release. Upgrading is recommended for all users of earlier
2.3 releases.
This mainly fixes bug #786980 which blocked the SRU process for Ubuntu Natty.
External Compatibility Breaks
New Features
Improvements
- Tweak an RPC implementation for Repository.get_parent_map, it was
doing an inefficient small_set.difference_update(large_set) when we
can do small_set = small_set.difference(large_set). This speeds up
discovery time by about 10%. (John Arbash Meinel)
Bug Fixes
- Accept some differences for bound_location from the config files that
were leading to a 'ReadOnlyError: A write attempt was made in a read only
transaction' error. (Vincent Ladeuil, #786980)
- Don't fail with traceback if bzr serve is running as a service on Windows,
and there is no USERNAME, nor BZR_EMAIL or other whoami-related environment
variables set. (Alexander Belchenko, Bug #660174)
Documentation
- Updated the "Using stacked branches" section of the user guide to
describe committing to stacked branches and expanded its discussion of
pushing a stacked branch. (Andrew Bennetts)
API Changes
Internals
Testing
- Remove the deprecation decorators for failUnlessExists and
failIfExists. The deprecation "will" occur in 2.4, not
before. Providing the wrappers is enough as far as 2.3 is concerned.
(Vincent Ladeuil #794960)
This is a bugfix release. Upgrading is recommended for all users of earlier
2.3 releases.
This fixed a bug in the test suite triggered by python-2.7 deprecating some
tests helpers.
Testing
- Stop using failIf, failUnless, failIfEqual, etc, that give
PendingDeprecationWarnings on Python2.7.
(Martin Pool, #760435)
This is a bugfix release. Upgrading is recommended for all users of earlier
2.3 releases.
This was never released due to bug #760435 interrupting the release process by
breaking the test suite under python-2.7 on natty.
External Compatibility Breaks
None
Improvements
- Getting all entries from CHKInventory.iter_entries_by_dir() has been
sped up dramatically for large trees. Iterating by dir is not the best
way to load data from a CHK inventory, so it preloads all the items in
the correct order. (With the gcc-tree, this changes it (re)reading 8GB
of CHK data, down to just 150MB.) This has noticeable affects for things
like building checkouts, etc. (John Arbash Meinel, #737234)
Bug Fixes
- Bazaar now infers the default user email address on Unix from the local
account name plus the contents of /etc/mailname if that file exists.
In particular, this means that committing as root through etckeeper will
normally not require running bzr whoami first.
(Martin Pool, #616878)
- bzr merge --preview --pull should respect the --preview option
first, and not actually change the branch tip revision.
(John Arbash Meinel, Dennis Duchier, #760152)
- bzr push into a repository (that doesn't have a branch), will no
longer copy all revisions in the repository. Only the ones in the
ancestry of the source branch, like it does in all other cases.
(John Arbash Meinel, #465517)
- Fix UnboundLocalError: local variable 'lock_url' in wait_lock error,
especially while trying to save configuration from QBzr.
(Martin Pool, #733136)
- Fix "Unable to obtain lock" error when pushing to a bound branch if tags
had changed. Bazaar was attempting to open and lock the master branch
twice in this case. (Andrew Bennetts, #733350)
- Standalone bzr.exe installation on Windows: user can put additional python
libraries into site-packages subdirectory of the installation directory,
this might be required for "installing" extra dependencies for some plugins.
(Alexander Belchenko, #743256)
- When reporting a crash without apport, don't print the full list of
plugins because it's often too long.
(Martin Pool, #716389)
Testing
- FreeBSD8 has switched to python-2.7 which revealed a re-occurrence of a test
failure in the launchpad plugin. xmlrpclib.py on natty carries a patch
that is not in python-2.7 upstream and masked the issue. An additional fix
has been added in the interim
(<http://psf.upfronthosting.co.za/roundup/tracker/issue8194> should be fixed
in python > 2.7.1). (Vincent Ladeuil, #654733)
This is a bugfix release. Upgrading is recommended for all users of earlier
2.3 releases.
Bug Fixes
- Correctly resolve text conflicts for files in subdirs.
(Vincent Ladeuil, #715058)
- Fix "AssertionError: repository.user_url ... does not match URL from
server response" when reusing a smart transport.
(Andrew Bennetts, #726584)
- Restore proper logging of bytes transferred. We accidentally reset the
counter when commands finished before we logged the total transferred.
(John Arbash Meinel, #713258)
This release marks the start of another long-term-stable series. From here, we
will only make bugfix releases on the 2.3 series (2.3.1, etc, and support it
until August 2012), while 2.4 will become our new development series. The 2.1
and 2.2 series will also continue to get bugfixes. (Currently 2.0 is planned
to be EOLed circa September 2011 and will receive only critical bugfixes.)
This is a bugfix and polish release over the 2.2 series, with a large number
of bugs fixed (>130), and some performance improvements. Some features have
been enhanced including commits on stacked branches, upgrades of related
branches, shortcut URL schemes for ubuntu and debian on launchpad and better
conflict resolution.
Only bugfixes from other stables series have been included since 2.3b5 so all
known fixed bugs are included here.
Users are encouraged to upgrade from the other stable series.
This is the fifth and last beta of the 2.3 series, leading up to a 2.3.0
release in February. Beta releases are suitable for everyday use but may cause
some incompatibilities with plugins.
2.3b5 includes bug fixes for committing to stacked branches, smoother upgrades
of multiple branches, compatibility with python-2.7, full test suite passing
on Ubuntu Natty and windows, less round-trips for several smart server
operations, better support text conflicts resolve actions and some more.
All known fixed bugs in other series (2.0, 2.1, 2.2) are also included here.
External Compatibility Breaks
(none)
Improvements
- A redundant parent inventories calculation was removed from
fetch.py, as Repository.insert_stream already reports any
missing inventories. This removes at least one network roundtrip when
pushing to a stacked branch. (Andrew Bennetts)
- ControlDir.sprout no longer opens the target repository more than
once. This avoids some unnecessary IO, and removes a network roundtrip
when doing bzr branch to a smart server URL. (Andrew Bennetts)
- bzr modified now read-locks the working tree (and branch and
repository) just once. (Andrew Bennetts)
- bzr resolve now accepts --take-this and --take-other actions
for text conflicts. This replace the whole file with the content
designated by the action. This will ignore all differences that would
have been merge cleanly otherwise. (Vincent Ladeuil, #638451)
- bzr tags's "sort" argument now allows registering custom sort
methods using the bzrlib.tag.tag_sort_methods registry.
(Jelmer Vernooij, #701244)
- bt.test_http was breaking os.environ by erasing the values saved by
TestCase leading to bt.test_import_tariff failures.
(Vincent Ladeuil, #690563)
- upgrade now upgrades dependent branches when a shared repository is
specified. It also supports new options: --dry-run for showing what
will happen and --clean to remove the backup directory on successful
completion. (Ian Clatworthy, Matthew Fuller, #89830, #374734, #422450)
Bug Fixes
- Avoid leaking SSH subprocess communication socket into unrelated child
processes, which could cause bzr to hang on exit. (Max Bowsher, #696285)
- bzr break-lock on a corrupted lock file works correctly, rather than
raising a PermissionDenied error. We were accidentally holding open the
file we were trying to delete. (John Arbash Meinel, #659978)
- bzr update in a checkout of a readonly branch works again, without
trying to set the tags in the master branch. This had been broken by the
bug fix for bug #603395. (John Arbash Meinel, #701212)
- Per-transport tests now prefer to use Transport.get_bytes() rather
than Transport.get().read(). The SFTP code uses an async message to
close the file handle if you let the handle die from refcounting, while
it uses a synchronous message if you close it directly. This should help
prevent random test suite failures from race conditions.
(John Arbash Meinel, #681047)
- Stop using bzrlib.tuned_gzip.GzipFile. It is incompatible with
python-2.7 and was only used for Knit format repositories, which haven't
been recommended since 2007. The file itself will be removed in the next
release. (John Arbash Meinel)
- The BZR_COLUMNS environment variable can be set to 0 to indicate no
limitation on the width of the terminal. (Neil Martinsen-Burrell, #675652)
- Treat WSAECONNABORTED the same as WSAECONNRESET for the purposes of
considering a smart data stream as being interrupted. This fixes a
failure in the windows test suite, that was trying to ensure we cleanly
handled a server disconnect. (John Arbash Meinel, #581311, #686587)
- Unshelving changes that occur in a now-unversioned directory now restore
the directory properly rather than crashing.
(John Arbash Meinel, #389674)
- You are now able to commit directly to a stacked branch. Any needed
parent inventories will be filled in as part of the commit process.
(John Arbash Meinel, #375013)
Documentation
- Better document the rules to update the bzr freshmeat page when
doing a release. (Vincent Ladeuil, #690515)
API Changes
- Branch.sprout, BranchFormat.initalize and
ControlDir.create_branch now take an optional repository keyword
argument, and BranchFormat.open now takes an optional
found_repository keyword argument. These provide the repository
object for new branch object to use (for cases when the caller has
already opened that repository). Implementations of these APIs will
need to be updated to accept these arguments. (Andrew Bennetts)
- bzrlib.tuned_gzip.GzipFile is now deprecated and will be removed in
the bzr-2.4 series. Code that was using it can just use the python
stdlib gzip.GzipFile. (John Arbash Meinel)
Testing
- bzrlib.tests defines isolated_environ with the definitions of all
the environment variables the tests should care about. It also defines
override_os_environ and restore_os_environ to properly implement
isolation from os.environ for tests. bzrlib.tests now defines a
DocTestSuite class using this facility for all bzrlib
doctests. (Vincent Ladeuil, #321320)
- Catch exceptions related to bug #637821 during test cleanup to avoid
spurious failures. (Vincent Ladeuil, #686008).
- Check sphinx compatibility for tests requiring older sphinx versions.
(Vincent Ladeuil, #688072)
- test_onto_transport in the Launchpad plugin can now run with Python
2.7. (Vincent Ladeuil, #654733)
- TestCase._captureVar and TestCase._old_env have been deleted due to
bug #690563. Test writers are encouraged to use TestCase.overrideEnv
instead. (Vincent Ladeuil)
- TestDebuntuExpansions was escaping the test isolation by calling the
wrong base class setUp. (Vincent Ladeuil, #684662)
This is the fourth beta of the 2.3 series, leading up to a 2.3.0 release in
February. Beta releases are suitable for everyday use but may cause some
incompatibilities with plugins.
2.3b4 includes bug fixes for the config command and conflict
resolution. More changes were made for the test scripts handling to make it
easier to add reproducing recipes to bugs.
It also includes bug fixes from the 2.2.2 release as well as the bug fixes
in the upcoming 2.0.7, 2.1.4 and 2.2.3 releases. This means that all known
fixed bugs at the time of this release are included.
External Compatibility Breaks
(none)
Improvements
- Bazaar now caches a branch's tags while that branch is read-locked.
This removes 1 network roundtrip from most interactions with a remote
branch. (Andrew Bennetts)
- bzr config <option> will now display only the value itself so scripts
can use it to query the currently active configuration. Displaying several
options matching a given regular expression is now controlled via the
--all option. (Vincent Ladeuil, bug #670251)
- bzr resolve now reports the number of conflicts resolved and the
number of remaining conflicts. This provides a better feedback about the
whole resolution process. (Vincent Ladeuil)
- Read configuration files in $XDG_CONFIG_HOME/bazaar on Unix if there is
already a directory there. (Neil Martinsen-Burrell, #195397)
Bug Fixes
- Better message if there is an error while setting ownership of
.bazaar directory. (Parth Malwankar, #657553)
- bzr config properly displays list values. (Vincent Ladeuil, #672382)
- bzr config will now respect option policies when displaying the value
and display the definition sections when appropriate.
(Vincent Ladeuil, #671050)
- Don't create commit message files in the current directory to avoid nasty
interactions with emacs (which tries to establish the status of the file
during the commit which breaks on windows). (Vincent Ladeuil, #673637)
- bzr resolve --take-other <file> will not crash anymore if <file>
is involved in a text conflict (but the conflict is still not
resolved). (Vincent Ladeuil, #646961)
- Merge will now correctly locate a lca where there is a criss-cross merge
of a new root. (Gary van der Merwe, #588698)
- Report error if non-ASCII command option given. (Rory Yorke, #140563)
- tools/check-newsbug.py is now based on lp:hydrazine and no longer
crashes when encountering private bugs (they are just displayed as such).
(Vincent Ladeuil, #354985)
Internals
- BranchBuilder.build_snapshot now accepts parent_ids == [].
This can be used to create a new root in the graph. (Gary van der Merwe)
- Old repository development formats
RepositoryFormatCHK1 and RepositoryFormatCHK2 have been removed, and so
have the corresponding metadir format options development-rich-root,
development6-rich-root, and development7-rich-root.
Testing
- Add a null_output_matches_anything keyword argument with default False to
bzrlib.tests.script.ScriptRunner.run_script to specify that the command
output should not be checked (as opposed to expecting an empty output).
(Neil Martinsen-Burrell, #662509)
- Blank output section in scriptrunner tests no longer match any output.
Instead, use '...' as a wildcard if you don't care about the output.
(Martin Pool, #637830)
- Bump minimum testtools version required to run bzr selftest from 0.9.2
to 0.9.5 which will allow tests that need the fixed unicode handling to be
written. (Martin [gz])
- Introduce an overrideEnv() helper for tests that needs to change the
environment variables while respecting the isolation rules. Get rid of
TestCase._restoreEnvironment which is now useless.
(Vincent Ladeuil, #690563)
- Printing selftest results to a non-UTF-8 console will now escape characters
that can't be encoded rather than aborting the test run with an exception.
(Martin [gz], #633216)
External Compatibility Breaks
(none)
New Features
- Add --no-tree option to 'bzr push' and 'bzr init' for creating a
new or mirrored branch without working trees.
(Matthew Gordon, #506730)
- bzr config is a new command that displays the configuration options for
a given directory. It accepts a glob to match against multiple options at
once. It can also be used to set or delete a configuration option in any
configuration file. (Vincent Ladeuil)
- New shortcut URL schemes ubuntu: and debianlp: access source
branches on Launchpad. E.g. bzr branch ubuntu:foo gives you the source
branch for project foo in the current distroseries for Ubuntu while
bzr branch debianlp:lenny/foo gives you the source branch (on Launchpad)
for project foo in Debian Lenny.
(Barry Warsaw, #609186)
- Provide a configuration option "default_format" that controls the
default format for new branches created with bzr init.
(Neil Martinsen-Burrell, #484101)
Bug Fixes
- Always set PATH in start_bzr.bat on Windows. (Matthäus G. Chajdas, #470264)
- bzr status -r X..Y was failing because RevisionTree didn't implement
get_shelf_manager. (John Arbash Meinel, #662053)
- Correctly add directory contents when the name was previously added as a
normal file, rather than throwing AttributeError: children during
smart_add. (Martin [gz], #251864)
- Correctly handle the --directory option for all code paths of
resolve and shelve, this was previously ignored when paths were
provided as parameters. When both are provided, --directory becomes
the base directory for the other paths. (Vincent Ladeuil, #670851)
- Correctly set the Content-Type header when HTTP POSTing to comply
with stricter web frameworks. (Vincent Ladeuil, #665100)
- Don't force openssh to use protocol=2, since that is now the default.
(Neil Martinsen-Burrell, #561061)
- Fix KeyError: 'port' when getting the stored password for an HTTP URL.
(Martin Pool, #654684)
- Make bzr tag --quiet really quiet. (Neil Martinsen-Burrell, #239523)
- Missing files (files bzr add'ed and then OS deleted) are now shown in bzr
status output. (Rory Yorke, #134168)
- NotBranchError no longer allows errors from calling
bzrdir.open_repository() to propagate. This is unhelpful at best,
and at worst can trigger infinite loops in callers. (Andrew Bennetts)
- The branch.tags.merge_to(target_branch) API used by plugins such as
bzr-builddeb now propagates changes to the master branch of the
target branch (if there is one). This makes it consistent with the
other tag APIs. (Andrew Bennetts, #603395)
- Windows installers no longer requires the Microsoft vcredist to be
installed. (Martin [gz], Gary van der Merwe, #632465)
Documentation
- Add documentation of the ability to edit hunks when shelving.
(Neil Martinsen-Burrell, #517660)
- Be more specific about the meaning of revision ranges for bzr diff.
(Neil Martinsen-Burrell, #247282)
- Document the comment character in the .bzrignore file, including a
workaround for ignore patterns that begin with #.
(Neil Martinsen-Burrell, #631515)
API Changes
- Add bzrlib.pyutils module with helper functions for some Python
tasks such as resolving a dotted name to a Python object
(get_named_object). (Andrew Bennetts)
- bzrlib.tests.ForwardingResult no longer exists. Use
testtools.ExtendedToOriginalDecorator instead. (Andrew Bennetts)
- known_hooks_key_to_parent_and_attribute in bzrlib.hooks has been
deprecated in favour of known_hooks.key_to_parent_and_attribute in
the same module. (Andrew Bennetts)
Internals
- tools/fixed-in.py find a bug in NEWS from its number or a regexp
matching the news entry and display the corresponding release, date, fix
authors and the news entry itself. (Vincent Ladeuil)
Testing
- Blank output section in scriptrunner tests no longer match any output.
Instead, use '...' as a wildcard if you don't care about the output.
(Martin Pool, #637830)
- bzr test-script script is a new command that runs a shell-like script
from an the script file. (Vincent Ladeuil)
- Fix spurious test failures on babune related to the http pipe cleanup and
get rid of some 'bytes left on the HTTP socket' useless log messages.
(Vincent Ladeuil, #655557)
- bzrlib.tests.per_workingtree.TestCaseWithWorkingTree.make_branch_builder
respects its relpath parameter. (Vincent Ladeuil)
External Compatibility Breaks
- The bzr tags command sorts tag names using a natural sort by
default (so tag2 sorts before tag10). The previous default was
strictly "asciibetical". That behavior is still available as bzr tags
--sort=alpha. (Neil Martinsen-Burrell, #640760)
- BzrDir.generate_backup_name has been deprecated and replaced by a
private method. osutils.available_backup_name provides an extensible
replacement. This allowed the deprecation of
bzrlib.transform.get_backup_name,
bzrlib.transform._get_backup_name and
bzrlib.transform.TreeTransformBase.has_named_child.
(Vincent Ladeuil)
New Features
- Add mainline revision specifier, which selects the revision that
merged a specified revision into the mainline. (Aaron Bentley)
- Add annotate revision specifier, which selects the revision that
introduced a specified line of a file. (Aaron Bentley)
- Add -Dmem_dump debug flag, which uses meliae to dump memory to
a file upon an out of memory error.
(Karl Bielefeldt, #551391)
- bzr status now displays a summary of existing shelves after
the other status information. This is done using a post_status
hook.
(Parth Malwankar, #403687)
- GNU lsh is now a supported lsh client; just set BZR_SSH to 'lsh'.
Also, bzr will recognize if the 'ssh' comand is a symlink to lsh.
(Matthew Gordon, #374700)
- The pull and update commands now take a --show-base
option that, in the case of conflicts, shows the base revision text.
(Rory Yorke, #202374)
Improvements
- bzr break-lock --force breaks the lock without prompting. (Before
using this, make sure the process holding the lock really is dead.)
(Martin Pool, #397315)
- bzr remove now takes a --no-backup option for when you don't want it
to backup anything, just delete it. This option used to be called --force
which is now deprecated.
(Marius Kruger, #400554)
- When using the pycurl client module, Bazaar shows some of the text from
HTTP server error messages.
(Martin Pool, #656667)
Bug Fixes
- Don't force openssh to use protocol=2, since that is now the default.
(Neil Martinsen-Burrell, #561061)
- Fix signature of RemoteBzrDir.create_workingtree to match that of its
superclass. (Neil Martinsen-Burrell, Martin Pool, #524627)
- Fix traceback with python-2.7's xmlrpclib
(Toshio Kuratomi, #612096)
- Print junk rather than throwing a UnicodeDecodeError from bzr version-info
when using the rio format (with non-ascii information) on a non-utf-8
terminal. (Andrej A Antonov, #518609)
- Treat all IO, OS, and socket errors consistently when establishing
SSH/SFTP connections via a subprocess. (Andrew Bennetts)
- unshelve --preview now can show diff in a non-ascii encoding.
(Andrej A Antonov, #518916)
- Deleting a versioned directory can leave orphans: unversioned files that
were present don't have a parent anymore. The
bzr.transform.orphan_policy configuration option controls the bzr
behaviour: conflict (the default) leave the orphans in place and
create a conflict for the directory, move create orphans named
<file>.~#~ in a bzr-orphans directory at the root of the working
tree. (Vincent Ladeuil, #323111)
Improvements
Documentation
- Correct the documentation for setting up the smart server with Apache.
(Neil Martinsen-Burrell, #311518)
- Fix rst typos in bzrlib/help_topics/en/conflict-types.txt.
(Vincent Ladeuil, #660943)
- Provide more detailed help on the Launchpad plugin at "bzr help
plugins/launchpad". (Neil Martinsen-Burrell, #589379)
- Suggest bzr revert for restoring locally deleted files in help text
for bzr update. (John C Barstow, #191466)
API Changes
- WorkingTree methods pull, update, and _update_tree
now have an optional argument, show_base, which is by default
False. This is flag is ultimately passed to merge.merge_inner
in each case. (Rory Yorke, #202374)
Internals
- Small change to GroupCompressBlock to work more in terms of 'chunks'
rather than 'content' for its compressed storage. (John Arbash Meinel)
- When running bzr selftest --subunit the subunit stream will no
longer include the "log" information for tests which are considered to
be 'successes' (success, xfail, skip, etc) (John Arbash Meinel)
Testing
- Add a new simpler way to generate multiple test variations, by setting
the scenarios attribute of a test class to a list of scenarios
descriptions, then using load_tests_apply_scenarios. (See the testing
guide and bzrlib.tests.scenarios.) Simplify test_http using this.
(Martin Pool, #597791)
- Add tests/ssl_certs/ca.crt to the required test files list. Test
involving the pycurl https test server fail otherwise when running
selftest from an installed version. (Vincent Ladeuil, #651706)
- Fix tests that failed when run under LANG=C.
(Andrew Bennetts, #632387)
- Skip tests that needs a bzr source tree when there isn't one. This is
needed to successfully run the test suite for installed versions.
(Vincent Ladeuil, #644855).
- Skip the tests that requires respecting the chmod bits when running as root.
(Vincent Ladeuil, #646133)
- Suppress the "maximum recursion depth exceeded in __subclasscheck__"
warning on stderr emitted during test_dict_deepnested in
bzrlib/tests/test__bencode.py. (Andrew Bennetts)
- Use tests.TestCaseInTempDir for tests that requires disk resources.
(Vincent Ladeuil, #650001)
This is the first beta of the 2.3 series, leading up to a 2.3.0
release in January or February. Beta releases are suitable for everyday use
but may cause some incompatibilities with plugins. Some plugins may need
small updates to work with 2.3b1.
2.3b1 includes some performance improvements in both speed and memory
consumption, some preliminary support for generating a texinfo version of
the doc and better support for launchpad. Many changes were made to make
our test suite more robust as well as numerous documentation fixes. It
improves the common infrastructure for dealing with colocated named
branches and foreign branches. We plan to continue with these themes
through the 2.3 series.
It also includes bug fixes for 2.0.6, 2.1.3 and 2.2.1 and over 40 fixes of
its own.
External Compatibility Breaks
(none)
New Features
- Added pre_status and post_status hooks. This allows plugins
to register custom handlers which will be invoked before/after the
standard status output is displayed. (Parth Malwankar)
- bzr break-lock --config [location] can now break config files
locks. (Vincent Ladeuil, #525571)
- bzrlib.config.LockableConfig is a base class for config files that
needs to be protected against multiple writers. All methods that
change a configuration variable value must be decorated with
@needs_write_lock (set_option() for example).
(Vincent Ladeuil, #525571)
- The lp: prefix will now use your known username (from
bzr launchpad-login) to expand ~ to your username. For example:
bzr launchpad-login user && bzr push lp:~/project/branch will now
push to lp:~user/project/branch. (John Arbash Meinel)
- New development format development8-subtree which is similar to the
2a format and adds subtree support. (Jelmer Vernooij)
Improvements
- Allow using both --using and --diff-options.
(Matthäus G. Chajdas, #234708)
- Allow using non-integer bug ID with generic bug trackers.
(Alexandre Garnier, #440472)
- bzr remove now just backs up changed files instead of exiting,
forcing you to choose to either keep or delete them. Bazaar will now delete
the files if they can easily be recovered using revert, otherwise they
will be backed up (adding an extension of the form .~#~).
(Marius Kruger, #400554)
- bzr revert and bzr status are up to 15% faster on large trees
with many changes by not repeatedly building a list of all file-ids.
(Andrew Bennetts)
- Decrease memory consumption when many chk index pages are loaded. (Such
as during bzr co or bzr ls -R of a large tree.) Often we need to
read many chk pages because the individual chk map nodes will be spread
randomly. Peak memory for 'bzr ls -R' on a large tree dropped from 396MB
down to 247MB, expect even more significant savings on 64-bit platforms.
(John Arbash Meinel)
- Decrease peak memory during bzr send. The old code was caching all
text content and all inventory strings for all revisions before
computing the diffs. Now we only cache as long as there is a child that
will need them. Sending 2000 bzr revisions drops from 1.2GB peak to
256MB peak. (John Arbash Meinel, #614576)
- DirState internals use a little bit less memory. For bzr.dev it
drops the memory from 1MB down to about 800kB. And replaces a few
thousand tuples and sets with StaticTuple. (John Arbash Meinel)
- Inventory entries now consume less memory (on 32-bit Ubuntu file entries
have dropped from 68 bytes to 40, and directory entries from 120 bytes
to 48). (Andrew Bennetts)
- Reduce peak memory by one copy of compressed text when writing to pack
repositories.
(John Arbash Meinel, #566940)
- When building new working trees, default to reading from the repository
rather than the source tree unless explicitly requested. (via
--files-from and --hardlink for bzr branch and
bzr checkout. Generally, 2a format repositories extract
content faster than seeking and reading content from another tree,
especially in cold-cache situations. (John Arbash Meinel, #607298)
- Add __pycache__ to the default ignores file. Future releases of
Python will use this directory to store bytecodes.
(Andrea Corbellini, #626687)
Bug Fixes
- Additional merges after an unrelated branch has been merged with its
history no longer crash when deleted files are involved.
(Vincent Ladeuil, John Arbash Meinel, #375898)
- bzr add SYMLINK/FILE now works properly when the symlink points to a
previously-unversioned directory within the tree: the directory is
marked versioned too.
(Martin Pool, #192859)
- bzr clean-tree issues a warning if it is unable to delete a file
due to errno.EACCES instead of exiting with an error on Windows.
(Parth Malwankar, #430785)
- bzr commit SYMLINK now works, rather than trying to commit the
target of the symlink.
(Martin Pool, John Arbash Meinel, #128562)
- bzr ignore PATTERNS exits with error if a bad pattern is supplied.
InvalidPattern exception error message now shows faulting
regular expression.
(Parth Malwankar #300062)
- bzr upgrade now creates the backup.bzr directory with the same
permissions as .bzr directory on a POSIX OS.
(Parth Malwankar, #262450)
- CommitBuilder now uses the committer instead of _config.username to generate
the revision-id. (Aaron Bentley, #614404)
- Configuration files in ${BZR_HOME} are now written in an atomic
way which should help avoid problems with concurrent writers.
(Vincent Ladeuil, #525571)
- CommitBuilder now uses the committer instead of _config.username to generate
the revision-id. (Aaron Bentley, #614404)
- Configuration files in ${BZR_HOME} are now protected against
concurrent writers by using a lock. (Vincent Ladeuil, #525571)
- Cope with Microsoft FTP Server and VSFTPd that return reply '250
Directory created' when mkdir succeeds. (Martin Pool, #224373)
- decode parameter to get() method in FtpTransport and GioTransport classes
is deprecated. (Alexander Belchenko)
- Don't print internal object name when print an invalid revision spec
error. (Neil Martinsen-Burrell, #598701)
- Don't traceback when a lockdir's held/info file is corrupt (e.g.
contains only NUL bytes). Instead warn the user, and allow bzr
break-lock to remove it. (Andrew Bennetts, #619872)
- EPIPE can be raised during test server shutdown. This happened on
gentoo only so far. (Vincent Ladeuil, #627277)
- Errors occurring during HTTP(S) test server starts should now be
handled cleanly. (Vincent Ladeuil, #392402)
- Fix AttributeError on parent.children when adding a file under a
directory that was a symlink in the previous commit.
(Martin Pool, #192859)
- Fix AttributeError: 'NoneType' object has no attribute 'close' in
_close_ssh_proc when using bzr+ssh://. This was causing
connections to pre-1.6 bzr+ssh servers to fail, and causing warnings on
stderr in some other circumstances. (Andrew Bennetts, #633745)
- Fix spurious paramiko warning on hardy by ensuring that selftest
properly remove its warning filter. (Vincent Ladeuil, #625686)
- Fix AttributeError on parent.children when adding a file under a
directory that was a symlink in the previous commit.
(Martin Pool, #192859)
- Fix AttributeError: 'NoneType' object has no attribute 'close' in
_close_ssh_proc when using bzr+ssh://. This was causing
connections to pre-1.6 bzr+ssh servers to fail, and causing warnings on
stderr in some other circumstances. (Andrew Bennetts, #633745)
- Fix a problem in bzr's Makefile that meant syntax errors in some
parts of bzr's source code could cause make check-nodocs to
incorrectly return an exit code of 0.
(Vincent Ladeuil, #626667)
- HTTP/1.1 test servers now set a Content-Length header to comply
with pedantic HTTP/1.1 clients. (Vincent Ladeuil, #568421)
- Most of the leaked threads during selftest are now fixed, allowing the
full test suite to pass on gentoo.
(Vincent Ladeuil, #392127)
- Only call setlocale in the bzr startup script on posix systems. This
avoids an issue with the newer windows C runtimes used by Python 2.6 and
later which can mangle bytestrings printed to the console.
(Martin [gz], #631350)
- PathNotChild should not give a traceback.
(Martin Pool, #98735)
- Prevent CHKMap.apply_delta from generating non-canonical CHK maps,
which can result in "missing referenced chk root keys" errors when
fetching from repositories with affected revisions.
(Andrew Bennetts, #522637)
- Raise ValueError instead of a string exception.
(John Arbash Meinel, #586926)
- Repositories accessed via a smart server now reject being stacked on a
repository in an incompatible format, as is the case when accessing them
via other methods. This was causing fetches from those repositories via
a smart server (e.g. using bzr branch) to receive invalid data.
(Andrew Bennetts, #562380)
- Selftest with versions of subunit that support stopTestRun will no longer
error. This error was caused by 2.0 not being updated when upstream
python merged the end of run patch, which chose stopTestRun rather than
done. (Robert Collins, #571437)
- Stop AttributeError: 'module' object has no attribute 'ElementTree'
being thrown from xml_serializer on certain cElementTree setups.
(Martin [gz], #254278)
- strace test-helper tests cope with the new Ubuntu policy of not allowing
users to attach to their own processes by default.
(Martin Pool, #626679)
- Test classes like TestCase, TestLoader, and TestSuite should
be available from bzrlib.tests.*. They used to be, but were
accidentally removed. (John Arbash Meinel, #627438)
- Transport.stat on a symlink, including a transport pointing directly
to a symlink, now returns information about the symlink.
(Martin Pool)
- Upgrading or fetching from a non-rich-root repository to a rich-root
repository (e.g. from pack-0.92 to 2a) no longer fails with
'Inter1and2Helper' object has no attribute 'source_repo'. This was
a regression from Bazaar 2.1. (Andrew Bennetts, #636930)
Documentation
- Added a builder/writer sphinx extension that can generate texinfo files. The
generated files are syntactically correct but the info navigation nodes
needs more work. (Vincent Ladeuil, #219334)
- First tests defined for sphinx, including a new bzrlib.tests.features.sphinx
to make the tests conditional.
(Vincent Ladeuil)
- Fix a lot of references in the docs to the old http://bazaar-vcs.org to
the new http://bazaar.canonical.com or http://wiki.bazaar.canonical.com
(John Arbash Meinel, #617503)
API Changes
When passing a file to UTF8DirReader make sure to close the current
directory file handle after the chdir fails. Otherwise when passing many
filenames into a command line bzr status we would leak descriptors.
(John Arbash Meinel, #583486)
ControlDirFormat and ControlDir have been split out of BzrDirFormat
and BzrDir, respectively. ControlDirFormat
and ControlDir should be used as the base classes for new non-.bzr
implementations.
BzrDirFormat.register_control_format has been renamed to
ControlDirFormat.register_format.
BzrDirFormat.register_server_control_format has been removed.
Probing for control directories is now done by separate objects derived
from bzrlib.controldir.Prober and registered using
bzrlib.controldir.ControlDirFormat.register_prober or
bzrlib.controldir.ControlDirFormat.register_server_prober.
BzrDirFormat.probe_transport has been moved onto Prober.
BzrDirFormat.register_format has been renamed to
BzrProber.register_bzrdir_format.
bzrlib.bzrdir.network_format_registry has been moved to
bzrlib.controldir.
(Jelmer Vernooij)
bzrlib.transform.TreeTransformBase.final_kind,
bzrlib.transform.TreeTransform.tree_kind and
bzrlib.transform.TransformPreview.tree_kind now return None instead
of raising NoSuchFile. (Vincent Ladeuil)
BzrError subclasses no longer support the name "message" to be used
as an argument for __init__ or in _fmt format specification as this
breaks in some Python versions. errors.LockError.__init__ argument
is now named "msg" instead of earlier "message".
(Parth Malwankar, #603461)
Configuration files should now use the from_string constructor rather
than the file parameter of the _get_parser method. The later has
been deprecated. from_string also accept a save=True parameter to
have the configuration file immediately written to disk.
(Vincent Ladeuil)
Deprecate treating a PushResult and PullResult as an integer for the
relative change in revno.
(Martin Pool)
FileInWrongBranch is deprecated in favour of PathNotChild and no
longer raised.
(Martin Pool)
IniBaseConfig objects should now use the from_string constructor
the rather than the file parameter of the _get_parser method. The
later has been deprecated. (Vincent Ladeuil)
InventoryEntry instances now raise AttributeError if you try to assign
to attributes that are irrelevant to that kind of entry. e.g. setting
symlink_target on an InventoryFile will fail. It is still okay to
read those attributes on any kind of InventoryEntry. The complete list
of affected attributes is: executable, text_id, text_sha1,
text_size (only valid for kind == file); symlink_target (only
valid for kind == link); and reference_revision (only valid for kind
== tree-reference). (Andrew Bennetts)
InventoryEntry objects no longer have _put_in_tar or
_put_on_disk methods. (Andrew Bennetts)
The get_filename parameter in the config.IniBaseConfig
constructor has been deprecated, use the file_name parameter instead.
(Vincent Ladeuil)
tree_files and internal_tree_files are now deprecated in favor of
WorkingTree.open_containing_paths.
(Martin Pool)
Internals
- Remove used and broken code path in BranchInitHookParams.__repr__.
(Andrew Bennetts)
Testing
- Avoid spurious failures in ssh tests: wait for the SSH server to
actually finish, rather than just waiting for it to negotiate the key
exchange. (John Arbash Meinel, #626876)
- build_tree_contents can create symlinks.
(Martin Pool, John Arbash Meinel)
- Catch socket errors to avoid
bt.test_sftp_transport.SSHVendorBadConnection.test_bad_connection_ssh
random failures. (Vincent Ladeuil, #601804)
- HTTP test servers will leak less threads (and sockets) and will not hang on
AIX anymore. (Vincent Ladeuil, #405745)
- On platforms that don't support forking give a nice error message saying so
when bzr selftest --parallel=fork is used. (Martin [gz], #528730)
- Rearrange thread leak detection code to eliminate global state and make it
possible to extend the reporting. (Martin [gz], #633462)
- The old bzr selftest --benchmark option has been removed.
<https://launchpad.net/bzr-usertest> is an actively-maintained
macrobenchmark suite.
(Martin Pool)
- The test suite now simply holds log files in memory, rather than writing them
out to disk and then reading them back in and deleting them.
(Andrew Bennetts)
- The way bzr selftest --parallel generates N partitions of tests to
run in parallel has changed. Instead of splitting the list of tests at
N-1 points, it distributes the tests one-by-one into the partitions in a
round robin fashion. This reduces the total time to run the tests in
parallel because a series of slow tests in the test suite will be
distributed evenly among the parallel test suites, rather than slowing
down just one suite. (Andrew Bennetts)
- Tracebacks from a parameterized test are no longer reported against every
parameterization of that test. This was done by adding a hack to
bzrlib.tests.clone_test so that it no longer causes
testtools.TestCase instances to share a details dict.
(Andrew Bennetts, #625574)
Compatibility Breaks
New Features
Bug Fixes
Improvements
Documentation
API Changes
Internals
Testing
This is a bugfix release. One regression introduced in 2.2b1 has been fixed
for some rare conflict resolutions. Also a warning is now emmitted when
branching an out-of-date ubuntu packaging branch. Upgrading is recommended
for all users on earlier 2.2 releases.
Compatibility Breaks
None.
Bug Fixes
- Correctly handle bzr log and get_known_graph_ancestry on a
doubly-stacked branch.
(James Westby, Martin Pool, #715000)
- Don't crash while merging and encountering obscure path conflicts
involving different root-ids. (Vincent Ladeuil, #805809)
Internals
- Fixed bug in the bundled copy of ConfigObj with quoting of triple quotes
in the value string. Fix suggested by ConfigObj's author Michael Foord.
(Alexander Belchenko, #710410)
This is a bugfix release. Only one bug has been fixed, a regression from 2.2.3
involving only certain operations with launchpad. Upgrading is recommended for
all users on earlier 2.2 releases.
Bug Fixes
- Fix communications with the Launchpad web service when using
launchpadlib >= 1.5.5. This was a latent bug in bzr's communication
with Launchpad's production instance, which only became a problem when
the default instance was switched from edge to production in bzr 2.2.3.
(Max Bowsher, #707075)
This is a bugfix release. Upgrading is recommended for all users
on earlier 2.2 releases.
Compatibility Breaks
- Launchpad has announced that the edge.launchpad.net instance is
deprecated and may be shut down in the future
<http://blog.launchpad.net/general/edge-is-deprecated>. Bazaar has therefore
been updated in this release to talk to the main (launchpad.net) servers,
rather than the edge ones. (Vincent Ladeuil, #583667)
Bug Fixes
- Avoid UnicodeDecodeError in bzr add with multiple files under a non-ascii
path on windows from symlink support addition. (Martin [gz], #686611)
- Correctly resolve content (and path) conflicts for files in subdirs.
(Vincent Ladeuil, #660935)
- Don't probe for a repository from within NotBranchError.__repr__,
because this can cause knock-on errors at awkward times.
(Andrew Bennetts, #687653)
- Fix a crash during RepositoryPackCollection.pack caused by a
concurrent repository pack operation. This was particularly affecting
bzr-svn users. (Andrew Bennetts, #701940)
- https access works again with recent versions of python2.7.
(Vincent Ladeuil, #693880)
- RevisionTree.is_executable no longer returns None for directories and
symlinks. Instead, it returns False, like other Trees and methods.
(Aaron Bentley, #681885)
This is a bugfix release. None of these bugfixes are critical, but upgrading
is recommended for all users on earlier 2.2 releases.
Bug Fixes
- bzr resolve --take-other <file> will not crash anymore if <file>
is involved in a text conflict (but the conflict is still not
resolved). (Vincent Ladeuil, #646961)
- Commit in a bound branch or heavyweight checkout now propagates tags
(e.g. from a merge) to the master branch (and informs the user if there
is a conflict). (Andrew Bennetts, #603395)
- Correctly set the Content-Type header when HTTP POSTing to comply
with stricter web frameworks. (Vincent Ladeuil, #665100)
- NotBranchError no longer allows errors from calling
bzrdir.open_repository() to propagate. This is unhelpful at best,
and at worst can trigger infinite loops in callers. (Andrew Bennetts)
- Skip tests that needs a bzr source tree when there isn't one. This is
needed to succesfully run the test suite for installed versions.
(Vincent Ladeuil, #644855).
- Skip the tests that requires respecting the chmod bits when running as
root. Including the one that wasn't present in 2.1.
(Vincent Ladeuil, #646133)
- Using bzr with lp: URLs behind an HTTP proxy should work.
(Robert Collins, #558343)
- Windows installers no longer requires the Microsoft vcredist to be
installed.
(Martin [gz], Gary van der Merwe, #632465)
- Close leaked socket to SSH subprocesses, which caused dput sftp uploads
to hang. (Max Bowsher, #659590)
Testing
- Add tests/ssl_certs/ca.crt to the required test files list. Test
involving the pycurl https test server fail otherwise when running
selftest from an installed version. (Vincent Ladeuil, #651706)
- Fix tests that failed when run under LANG=C.
(Andrew Bennetts, #632387)
This is a bugfix release which also includes bugfixes from 2.0.6 and
2.1.3. None are critical, but upgrading is recommended for all users on
earlier 2.2 releases.
Bug Fixes
- Additional merges after an unrelated branch has been merged with its
history no longer crash when deleted files are involved.
(Vincent Ladeuil, John Arbash Meinel, #375898)
- bzr add SYMLINK/FILE now works properly when the symlink points to a
previously-unversioned directory within the tree: the directory is
marked versioned too.
(Martin Pool, #192859)
- bzr commit SYMLINK now works, rather than trying to commit the
target of the symlink.
(Martin Pool, John Arbash Meinel, #128562)
- bzr upgrade now creates the backup.bzr directory with the same
permissions as .bzr directory on a POSIX OS.
(Parth Malwankar, #262450)
- CommitBuilder now uses the committer instead of _config.username to generate
the revision-id. (Aaron Bentley, #614404)
- Configuration files in ${BZR_HOME} are now written in an atomic
way which should help avoid problems with concurrent writers.
(Vincent Ladeuil, #525571)
- Cope with Microsoft FTP server that returns reply '250 Directory
created' when mkdir succeeds. (Martin Pool, #224373)
- Don't traceback trying to unversion children files of an already
unversioned directory. (Vincent Ladeuil, #494221)
- Don't traceback when a lockdir's held/info file is corrupt (e.g.
contains only NUL bytes). Instead warn the user, and allow bzr
break-lock to remove it. (Andrew Bennetts, #619872)
- Fix AttributeError on parent.children when adding a file under a
directory that was a symlink in the previous commit.
(Martin Pool, #192859)
- Fix AttributeError: 'NoneType' object has no attribute 'close' in
_close_ssh_proc when using bzr+ssh://. This was causing
connections to pre-1.6 bzr+ssh servers to fail, and causing warnings on
stderr in some other circumstances. (Andrew Bennetts, #633745)
- Only call setlocale in the bzr startup script on posix systems. This
avoids an issue with the newer windows C runtimes used by Python 2.6 and
later which can mangle bytestrings printed to the console.
(Martin [gz], #631350)
- Prevent CHKMap.apply_delta from generating non-canonical CHK maps,
which can result in "missing referenced chk root keys" errors when
fetching from repositories with affected revisions.
(Andrew Bennetts, #522637)
- Raise ValueError instead of a string exception.
(John Arbash Meinel, #586926)
- Reduce peak memory by one copy of compressed text.
(John Arbash Meinel, #566940)
- Repositories accessed via a smart server now reject being stacked on a
repository in an incompatible format, as is the case when accessing them
via other methods. This was causing fetches from those repositories via
a smart server (e.g. using bzr branch) to receive invalid data.
(Andrew Bennetts, #562380)
- Selftest with versions of subunit that support stopTestRun will no longer
error. This error was caused by 2.0 not being updated when upstream
python merged the end of run patch, which chose stopTestRun rather than
done. (Robert Collins, #571437)
- Stop AttributeError: 'module' object has no attribute 'ElementTree'
being thrown from xml_serializer on certain cElementTree setups.
(Martin [gz], #254278)
- Upgrading or fetching from a non-rich-root repository to a rich-root
repository (e.g. from pack-0.92 to 2a) no longer fails with
'Inter1and2Helper' object has no attribute 'source_repo'. This was
a regression from Bazaar 2.1. (Andrew Bennetts, #636930)
- When passing a file to UTF8DirReader make sure to close the current
directory file handle after the chdir fails. Otherwise when passing many
filenames into a command line bzr status we would leak descriptors.
(John Arbash Meinel, #583486)
Internals
- Remove used and broken code path in BranchInitHookParams.__repr__.
(Andrew Bennetts)
Testing
- build_tree_contents can create symlinks.
(Martin Pool, John Arbash Meinel)
- Tracebacks from a parameterized test are no longer reported against every
parameterization of that test. This was done by adding a hack to
bzrlib.tests.clone_test so that it no longer causes
testtools.TestCase instances to share a details dict.
(Andrew Bennetts, #625574)
Codename: | La Hulpe |
2.2: | 2010-08-06 |
This release marks the start of another long-term-stable series. From
here, we will only make bugfix releases on the 2.2 series (2.2.1, etc),
while 2.3 will become our new development series. The 2.0 and 2.1 series
will also continue to get bugfixes. (Currently 2.0 is planned to be
supported for another 6 months.)
This is primarily a bugfix and polish release over the 2.1 series, with
a large number of bugs fixed (>120), and some performance improvements.
There are some compatibility changes in this release. For users of bzrlib
as a library, we now request that they call bzrlib.initialize and use
the returned context manager appropriately. For commandline users we no
longer guess user identity for bzr commit, users must specify their
identity using bzr whoami (you don't need to specify your identity for
readonly operations).
Users are encouraged to upgrade from the other stable series.
Compatibility Breaks
- BzrError subclasses no longer support the name "message" to be used
as an argument for __init__ or in _fmt format specification as this
breaks in some Python versions. errors.LockError.__init__ argument
is now named "msg" instead of earlier "message".
(Parth Malwankar, #603461)
- The old bzr selftest --benchmark option has been removed.
<https://launchpad.net/bzr-usertest> is an actively-maintained
macrobenchmark suite.
(Martin Pool)
Bug Fixes
- bzr ignore PATTERNS exits with error if a bad pattern is supplied.
InvalidPattern exception error message now shows faulting
regular expression.
(Parth Malwankar #300062)
- Configuration files in ${BZR_HOME} are now written in an atomic
way which should help avoid problems with concurrent writers.
(Vincent Ladeuil, #525571)
- Don't traceback trying to unversion children files of an already
unversioned directory. (Vincent Ladeuil, #494221)
- HTTP/1.1 test servers now set a Content-Length header to comply
with pedantic HTTP/1.1 clients. (Vincent Ladeuil, #568421)
- Progress bars prefer to truncate the text message rather than the
counters. The spinner is shown between the network transfer indicator
and the progress message. Progress bars are correctly cleared off when
they finish. (Martin Pool, #611127)
- Recursive binding for checkouts is now detected by bzr. A clear error
message is shown to the user. (Parth Malwankar, #405192)
Improvements
- Add bzrlib.merge.MergeIntoMerger, which can merge part or all of a
tree, and works with unrelated branches. (Andrew Bennetts)
- Add py2exe windows target bzrw.exe. This allow for starting a Bazaar
GUI with out have a console open in the background.
(Gary van der Merwe, #433781)
Documentation
- bzr help patterns now explains case insensitive patterns and
points to Python regular expression documentation.
(Parth Malwankar, #594386)
API Changes
- Delete ProgressTask.note, which was deprecated in 2.1.
Testing
- Unit test added to ensure that "message" is not uses as a format variable
name in BzrError subclasses as this conflicts with some Python versions.
(Parth Malwankar, #603461)
Codename: | Monkey Magic |
2.2b4: | 2010-07-10 |
This fourth and final beta in the 2.2 series now stabilizes the internal
APIs. Plugin authors are recommended to ensure their releases are
compatible, so that 2.2rc1 can be a true release candidate, containing
stable and compatible plugin versions.
For users of bzrlib as a library, one of the primary changes is to request
that they call bzrlib.initialize and use the returned context manager
appropriately.
Better interaction with bzr-loom to make sure branching from a loom
even over a smart server still yields a local loom. Not to mention lots of
bugfixes over 2.2b3.
Compatibility Breaks
- bzrlib library users now need to call __enter__ and __exit__ on
the result of bzrlib.initialize. This change was made when fixing
the bad habit recent bzr versions have had of leaving progress bars
behind on the screen. That required calling another function before
exiting the program, and it made sense to provide a full context
manager at the same time. (Robert Collins)
- The bzr front end now requires a bzrlib.ui.ui_factory which is a
context manager in the Python 2.5 and above sense. The bzrlib base class
is such a manager, but third party UI factories which do not derive from
bzrlib.ui.UIFactory will be incompatible with the command line front
end.
- URLs like foo:bar/baz are now always parsed as a URL with scheme "foo"
and path "bar/baz", even if bzr does not recognize "foo" as a known URL
scheme. Previously these URLs would be treated as local paths.
(Gordon Tyler)
New Features
- Support --directory option for a number of additional commands:
conflicts, merge-directive, missing, resolve, shelve, switch,
unshelve, whoami. (Martin von Gagern, #527878)
Bug Fixes
- bzr branch to a new repository with a default stacking policy no
longer transfers the full history unnecessarily.
(Andrew Bennetts, #597942)
- bzr init does not recursively scan directory contents anymore
leading to faster init for directories with existing content.
(Martin [gz], Parth Malwankar, #501307)
- bzr log --exclude-common-ancestry is now taken into account for
linear ancetries. (Vincent Ladeuil, #575631)
- bzr log -r branch:REMOTE can now properly log the remote branch,
rather than trying to fetch the data locally and failing because of a
readonly error. (Martin von Gagern, #149270)
- bzr pull now works when a lp: URL is explicitly defined as the parent
or pull location in locations.conf or branch.conf.
(Gordon Tyler, #534787)
- bzr reconfigure --unstacked now works with branches accessed via a
smart server. (Andrew Bennetts, #551525)
- BzrDir.find_branches should ignore branches with missing repositories.
(Marius Kruger, Robert Collins)
- BzrDir.find_bzrdirs should ignore dirs that raises PermissionDenied.
(Marius Kruger, Robert Collins)
- Ensure that wrong path specifications in BZR_PLUGINS_AT display
proper error messages. (Vincent Ladeuil, #591215)
- Explicitly removing --profile-imports option from parsed command-line
arguments on Windows, because bzr script does the same.
(Alexander Belchenko, #588277)
- Fetching was slightly confused about the best code to use and was
using a new code path for all branches, resulting in more lookups than
necessary on old branches. (Robert Collins, #593515)
- Final fix for 'no help for command' issue. We now show a clean message
when a command has no help, document how to set help more clearly, and
test that all commands available to the test suite have help.
(Robert Collins, #177500)
- Invalid patterns supplied to Globster or lazy_regex now raise
InvalidPattern exception showing clear error message to the user.
(Parth Malwankar #300062)
- Progress output is cleaned up when exiting. (Aaron Bentley)
- Raise ValueError instead of a string exception.
(John Arbash Meinel, #586926)
- Relative imports in plugins are now handled correctly when using
BZR_PLUGINS_AT. (Vincent Ladeuil, #588959)
- ScriptRunner now strips off leading indentation from test scripts,
which previously caused "SyntaxError: No command for line".
(Martin Pool)
- Show unicode filenames in diff headers using terminal encoding.
(Alexander Belchenko, Bug #382699)
NOTE for Windows users: If user need to save diff to file then user need to
change encoding of the terminal to ANSI encoding with command chcp XXX
(e.g. chcp 1251 for Russian Windows).
- URL displayed for use with break-lock when smart server sees lock
contention are now valid. Default timeout for lock contention retry is
now 30 seconds instead of 300 seconds.
(Parth Malwankar, #250451)
- walkdirs now raises a useful message when the filenames are not using
the filesystem encoding. (Eric Moritz, #488519)
- Enable debugging of bzr on windows with pdb and other tools. This was
broken because we call GetCommandLineW on windows. The fix adjusts the
command line we get to be the same length as sys.argv.
(Jason Spashett, Alexander Belchenko, #587868)
Improvements
- Bazaar now reads data from SSH connections more efficiently on platforms
that provide the socketpair function, and when using paramiko.
(Andrew Bennetts, #590637)
- Branch.copy_content_into is now a convenience method dispatching to
a InterBranch multi-method. This permits bzr-loom and other
plugins to intercept this even when a RemoteBranch proxy is in use.
(Robert Collins, #201613)
- Branch formats can now be loaded lazily by registering a
MetaDirBranchFormatFactory rather than an actual format. This will
cause the named format class to be loaded only when an enumeration of
formats is needed or when the format string for the object is
encountered. (Robert Collins, Jelmer Vernooij)
- The encoding that bzr uses to output things other than file content can
now be overridden via the output_encoding configuration option.
(Martin Pool, #340394)
- Use lazy imports in bzrlib/merge.py so that plugins like news_merge
do not cause modules to be loaded unnecessarily just because the plugin
registers a merge hook. This improves bzr rocks time by about 25%
in a default installation (with just the core plugins).
(Andrew Bennetts)
Documentation
- Added regression tag to our tags list. (Robert Collins)
- Improved our release checklist to have a bit less churn and leave things
ready-to-go for the next action (including other people doing
development). (Robert Collins)
- Remove obsolete discussion of PQM in documentation about how to
contribute to Bazaar. (Martin Pool, #588444)
API Changes
- bzrlib.branch.InterBranch._get_branch_formats_to_test now returns
an iterable of format pairs, rather than just a single pair, permitting
InterBranch objects that work with multiple permutations to be
comprehensively tested. (Robert Collins)
- bzrlib.lsprof.profile will no longer silently generate bad threaded
profiles when concurrent profile requests are made. Instead the profile
requests will be serialised. Reentrant requests will now deadlock.
(Robert Collins)
- bzrlib.knit.KnitSequenceMatcher, which has been deprecated since
2007, has been deleted. Use PatienceSequenceMatcher from
bzrlib.patiencediff instead. (Andrew Bennetts)
- bzrlib.re_compile_checked is now deprecated. Caller should handle
bzrlib.errors.InvalidPattern exception thrown by re.match in
case the default error message not suitable for the use case.
(Parth Malwankar)
- bzrlib.tests.blackbox.ExternalBase is deprecated. It provided only
one method check_output, and we now recommend checking command
output using run_script. (Martin Pool)
- bzrlib.transport.ssh.SSHVendor.connect_ssh now returns an object
that implements the interface of bzrlib.transport.ssh.SSHConnection.
Third-party implementations of SSHVendor may need to be updated
accordingly. Similarly, any code using SSHConnection directly will
need to be updated. (Andrew Bennetts)
- The constructor of bzrilb.smart.medium.SmartSSHClientMedium has
changed to take an SSHParams instance (replacing many individual
values). (Andrew Bennetts)
Internals
- bzrlib.osutils.get_terminal_encoding will now only mutter its
selection when explicitly requested; this avoids many duplicate calls
being logged when helpers, wrappers and older code that manually calls
it are executed it is now logged deliberately by the ui setup code.
(Robert Collins)
- Improved bzrlib.urlutils to handle lp:foo/bar URLs. (Gordon Tyler)
- bzrlib._c_static_tuple.StaticTuple now implements __sizeof__, so
that sys.getsizeof and other memory analysis tools will report more
accurate results. (Andrew Bennetts)
- The symbol_versioning module can now cleanup after itself -
suppress_deprecation_warnings now returns a cleanup function.
(Robert Collins)
Testing
- Add bzrlib.tests.fixtures to hold code for setting up objects
to test. (Martin Pool)
- test_import_tariff now respects BZR_PLUGINS_AT and BZR_PLUGINS_DISABLE.
(Vincent Ladeuil, #595587)
This third beta in the 2.2 series brings with it all the goodness of 2.1.2
and 2.0.6 (though it preceeds 2.0.6 slightly). Of particular note for
users are compatibility fixes with bzr 1.5 and below servers, a hopeful
end to the EINTR errors caused by SIGWINCH interactions, a shiny new
bash completion script and bzr will no longer guess at identity details -
it was too unreliable in reality. Use bzr whoami on every new install.
For developers we have some API changes which may impact plugins as well
as a bunch of our regular improvements to internal clarity and test
support.
Compatibility Breaks
- An API break has been made to the lock_write method of Branch and
Repository objects; they now return branch.BranchWriteLockResult
and repository.RepositoryWriteLockResult objects. This makes
changing the API in future easier and permits some cleaner calling code.
The lock_read method has also changed from having no defined return
value to returning LogicalLockResult objects.
(Robert Collins)
- bzr does not try to guess the username as username@hostname
and requires it to be explictly set. This can be set using bzr
whoami. (Parth Malwankar, #549310)
- bzrlib.commands.Command will now raise ValueError during
construction if there is no __doc__ set. (Note, this will be reverted in
2.2b4) (Robert Collins)
- The source tree no longer contains a contrib/zsh/_bzr completion
script. The new file contrib/zsh/README suggests alternatives.
(Martin von Gagern, #560030)
New Features
- bzr commit accepts -p (for "patch") as a shorter name for
--show-diff.
(Parth Malwankar, #571467)
- bzr ignore now supports a --default-rules option that displays
the default ignore rules used by bzr. The flag --old-default-rules
is no longer supported by ignore.
(Parth Malwankar, #538703)
- bzr pack now supports a --clean-obsolete-packs option that
can save disk space by deleting obsolete pack files created during the
pack operation.
(Parth Malwankar, #304320)
- New command line option --authors to bzr log allows users to
select which of the apparent authors and committer should be
included in the log. Defaults depend on format. (Martin von Gagern, #513322)
- Support --directory option for a number of additional commands:
added, annotate, bind, cat, cat-revision, clean-tree, deleted,
export, ignore, ignored, lookup-revision, ls, modified, nick,
re-sign, unbind, unknowns.
(Martin von Gagern, #527878)
- The bash_completion plugin from the bzr-bash-completion project has
been merged into the tree. It provides a bash-completion command and
replaces the outdated contrib/bash/bzr script with a version
using the plugin. (Martin von Gagern, #560030)
- A new transport based on GIO (the Gnome I/O library) provides access to
Samba shares, WebDAV using gio+smb and gio+dav. It is also possible to
use gio for some already existing transport methods as gio+file,
gio+sftp, gio+ftp.
(Mattias Eriksson)
Bug Fixes
- Alias information shown by bzr help is now accurate. This
was showing an internal object name for some plugin aliases.
(Parth Malwankar, #584650)
- .bazaar, .bazaar/bazaar.conf and .bzr.log inherit user and
group ownership from the containing directory. This allow bzr to work
better with sudo.
(Martin <gzlist@googlemail.com>, Parth Malwankar, #376388)
- bzr clean-tree should not delete nested bzrdirs. Required for proper
support of bzr-externals and scmproj plugins.
(Alexander Belchenko, bug #572098)
- bzr ignore will no longer add duplicate patterns to .bzrignore.
(Gordon Tyler, #572092)
- bzr log --exclude-common-ancestry -r X..Y displays the revisions that
are part of Y ancestry but not part of X ancestry (aka the graph
difference).
(Vincent Ladeuil, #320119)
- bzr lp-propose which was switched to use production Launchpad API
servers a few commits ago has been reverted to use edge: there is a
problem with using production which isn't trivially obvious, so we've
filed a bug to track it, and until thats fixed will be using edge.
(Robert Collins, #583667)
- bzr rm should not refuse to delete directories which contained a file
which has been moved elsewhere in the tree after the previous commit.
(Marius Kruger, Daniel Watkins, #129880)
- bzr selftest --parallel=fork wait for its children avoiding zombies.
(Vincent Ladeuil, #566670)
- bzr selftest should not use ui.note() since it's not unicode safe.
(Vincent Ladeuil, #563997)
- CommitBuilder refuses to create revisions whose trees have no root.
(Aaron Bentley)
- Do not register a SIGWINCH signal handler, instead just poll for the
terminal width as needed. This avoids the "Interrupted System Call"
problems that occur on POSIX with all currently released versions of
Python.
(Andrew Bennetts, #583941)
- Don't mention --no-strict when we just issue the warning about unclean trees.
(Vincent Ladeuil, #401599)
- Fixed AssertionError when accessing smart servers running Bazaar
versions before 1.6.
(Andrew Bennetts, #528041)
- Improved progress bar for fetch (2a format only). Bazaar now shows an
estimate of the number of records to be fetched vs actually fetched.
(Parth Malwankar, #374740, #538868)
- Reduce peak memory by one copy of compressed text.
(John Arbash Meinel, #566940)
- RemoteBranch.lock_write raises ReadOnlyError if called during a
read lock, rather than causing an AttributeError.
(Andrew Bennetts, Danilo Segan, #582781)
- Selftest was failing with testtools 0.9.3, which caused an
AssertionError raised from a cleanUp to be reported as a Failure, not an
Error, breaking on of our test hygiene tests.
(Robert Collins, Vincent Ladeuil).
- set_user_option with a dict on remote branches no longer fails with
an AttributeError. There is a new Branch.set_config_option_dict RPC
to support this efficiently.
(Andrew Bennetts, #430382)
- Show the filenames when a file rename fails so that the error will be
more comprehensible.
(Martin Pool, #491763)
- Support Pyrex 0.9.9, required changing how we handle exceptions in Pyrex.
(John Arbash Meinel, #582656)
- Unicode characters in aliases are now handled correctly and do not cause
UnicodeEncodeError exception. (Parth Malwankar, #529930)
- Unicode commit messages that are the same as a file name no longer cause
UnicodeEncodeError. ui.text.show_warning now handles unicode
messages.
(Parth Malwankar, #563646)
- When passing a file to UTF8DirReader make sure to close the current
directory file handle after the chdir fails. Otherwise when passing many
filenames into a command line bzr status we would leak descriptors.
(John Arbash Meinel, #583486)
Improvements
- append_revisions_only will now be interpreted as a boolean and a
warning emitted if illegal values are used. Note that for projects
that needs to maintain compatibility with previsous bzr versions,
only 'True' and 'False' strings must be used (previous versions of
bzr will interpret all strings differing from 'True'
(case-sensitive) as false.
(Brian de Alwis, Vincent Ladeuil)
- bzr ls now supports short options for existing long options.
-k/--kind, -i/--ignored, -u/--unknown and -0/--null.
(Parth Malwankar, #181124)
- Config.get_user_option_as_bool will now warn if a value cannot
be interpreted as a boolean.
(Vincent Ladeuil)
- The all-in-one Windows installer will now be built with docstrings stripped
from the library zip, reducing the size and slightly improving cold startup
time. Bundled plugins are unchanged for the moment, but if adding other new
plugins to an all-in-one installation, ensure they are compiled and
installed with -O1 or help may not work. (Martin [gz])
API Changes
- Added bzrlib.merge.PerFileMerger, a more convenient way to write
some kinds of merge_file_content hook functions.
(Andrew Bennetts)
- BzrDir, Branch, Repository and WorkingTree now all support user_url,
user_transport, control_url and control_transport members pointing
respectively to the directory containing the .bzr control directory,
and to the directory within .bzr used for the particular component.
All of them inherit from ControlComponent which provides default
implementations.
(Martin Pool)
- Lock methods on Tree, Branch and Repository are now
expected to return an object which can be used to unlock them. This reduces
duplicate code when using cleanups. The previous 'tokens's returned by
Branch.lock_write and Repository.lock_write are now attributes
on the result of the lock_write. repository.RepositoryWriteLockResult
and branch.BranchWriteLockResult document this. (Robert Collins)
- Repository.refresh_data may now be called in a write group on
pack-based repositories. Older repositories will still raise an error
in this case. Subclasses of Repository can still override
Repository._refresh_data, but are now responsible for raising
bzrlib.repository.IsInWriteGroupError if they do not support
refresh_data during a write group.
(Andrew Bennetts, #574236)
Internals
- chk_map._bytes_to_text_key is now an optimized function to extract
the (file-id, revision-id) key from a CHKInventory entry. This can
potentially shave 5-10% time off during a large fetch. Related to bug
#562666. (John Arbash Meinel)
- log._get_info_for_log_files now takes an add_cleanup callable.
(Robert Collins)
- _remember_remote_is_before no longer raises AssertionError when
suboptimal network behaviour is noticed; instead it just mutters to the
log file (and warns the user if they have set the hpss debug flag).
This was causing unnecessary aborts for performance bugs that are minor
at worst.
(Andrew Bennetts, #528041)
- Permit bzr to run under python -OO which reduces the size of bytecode
files loaded from disk. To ensure docstrings needed for help are never
stripped, the prefix __doc__ = should now be used.
(Martin <gzlist@googlemail.com>)
- No longer require zlib headers to build extensions, and remove the need
for seperate copy of zlib library on windows.
(John Arbash Meinel, Martin <gzlist@googlemail.com>, #566923)
Testing
Added bzrlib.tests.matchers as a place to put matchers, along with
our first in-tree matcher. See the module docstring for details.
(Robert Collins)
- bzr selftest --parallel=subprocess now works correctly on win32.
(Gordon Tyler, #551332)
Workaround Crypto.Random check leading to spurious test
failures on Lucid, FreeBSD and gentoo.
(Vincent Ladeuil, #528436)
New class ExecutableFeature for checking the availability of
executables on the PATH. Migrated from bash_completion plugin.
(Martin von Gagern)
This is a somewhat early second beta of the 2.2 series, to fix a python2.4
incompatibility in the 2.2b1 release. It also includes a swag of
performance, usability and correctness improvements: test feedback on all
of these would be welcome.
New Features
- bzr diff now supports a --format option, which can be used to
select alternative diff formats. (Jelmer Vernooij, #555994)
Bug Fixes
- bzr dpush, bzr push and bzr send will now issue a warning
instead of failing when dirty trees are involved. The corresponding
dpush_strict, push_strict and send_strict should be set to
True explicitly to get the previous behaviour.
(Vincent Ladeuil, #519319)
- bzr export to tar file does not fail if any parent directory
contains unicode characters. This works around upstream Python bug
http://bugs.python.org/issue8396 .
(Parth Malwankar, #413406)
- bzr switch does not die if a ConfigurableFileMerger is used.
(Aaron Bentley, #559436)
- bzr update when a pending merge in the working tree has been merged
into the master branch will no longer claim that old commits have become
pending merges. (Robert Collins, #562079)
- bzrlib.mutabletree.MutableTree.commit will now support a passed in
config as in previous versions of bzrlib. (Robert Collins)
- Fix glitch in the warning about unclean trees display.
(Vincent Ladeuil, #562665)
- Fixed Python2.4 incompatibilities in the bzr2.2b1 source tarball.
(Martin Pool)
- Help messages generated by RegistryOption.from_kwargs list the
switches in alphabetical order, rather than in an undefined order.
(Martin von Gagern, #559409)
- Make sure the ExecutablePath and InterpreterPath are set in
Apport crash reports, to avoid "This problem report applies to a program
which is not installed any more" error.
(Martin Pool, James Westby, #528114)
- Reset siginterrupt flag to False every time we handle a signal
installed with set_signal_handler(..., restart_syscall=True) (from
bzrlib.osutils. Reduces the likelihood of "Interrupted System Call"
errors compared to registering signal.signal directly.
(Andrew Bennetts)
- When invoked with a range revision, bzr log doesn't show revisions
that are not part of the Y revisions ancestry anymore when invoked with
-rX..Y.
(Vincent Ladeuil, #474807)
- Properly handle param_name attribute for ListOption.
(Martin von Gagern, #387117)
Improvements
- bzr commit will prompt before using a commit message that was
generated by a template and not edited by the user.
(Robert Collins, #530265)
- bzr diff read-locks the trees and branches only once, saving about
10-20ms on bzr diff in a bzr.dev tree.
(Andrew Bennetts)
- bzr missing read-locks the branches only once.
(Andrew Bennetts)
- bzr pull locks the branches and tree only once.
(Andrew Bennetts)
- Index lookups in pack repositories search recently hit pack files first.
In repositories with many pack files this can greatly reduce the
number of files accessed, the number of bytes read, and the number of
read calls. An incremental pull via plain HTTP takes half the time and
bytes for a moderately large repository. (Andrew Bennetts)
- Index lookups only re-order the indexes when the hit files aren't
already first. Reduces the cost of reordering
(John Arbash Meinel, #562429)
- Less code is loaded at startup. (Cold-cache start time is about 10-20%
less.)
(Martin Pool, #553017)
API Changes
- bzrlib.diff.get_trees_and_branches_to_diff is deprecated. Use
get_trees_and_branches_to_diff_locked instead.
(Andrew Bennetts)
- TreeTransform.commit supports the full set of commit parameters, and
auto-determines branch nick if not supplied. (Aaron Bentley)
Internals
- bzrlib.commands.Command.run_direct is no longer needed - the pre
2.1 method of calling run() to perform testing or direct use via the API
is now possible again. As part of this, the _operation attribute on
Command is now transient and only exists for the duration of run().
(Robert Collins)
This is the first beta of the 2.2 series, leading up to a 2.2.0
release in July or August. Beta releases are suitable for everyday use
but may cause some incompatibilities with plugins. Some plugins may need
small updates to work with 2.2b1.
2.2b1 includes some changes to make merge conflicts easier to understand
and resolve. It also removes some old unnecessary code, and loads
somewhat less code at startup. It starts adding a common infrastructure
for dealing with colocated named branches, which can be implemented in
various ways in either bzr native or foreign formats. On Ubuntu and
other platforms with the apport bug-reporting library, there's an easier
path to report problems with bzr. We plan to continue with these themes
through the 2.2 series.
Over thirty bugs have been fixed, including in the log command, exporting
to tarballs, restarting interrupted system calls, portability of compiled
extensions, making backups during upgrade, and locking on FTP.
Compatibility Breaks
- BTreeGraphIndex can now take an offset to indicate that the data starts
somewhere other than then beginning of the file. (John Arbash Meinel)
- Deleted very old hidden commands versionedfile-list,
weave-plan-merge, weave-merge-text.
(Martin Pool)
- Repository.get_inventory_sha1() and Repository.get_revision_xml()
have been removed. (Jelmer Vernooij)
- Repository.get_revision_inventory() has been removed in favor of
Repository.get_inventory(). (Jelmer Vernooij)
- All test servers have been moved out of the bzrlib.transport hierarchy to
bzrlib.tests.test_server except for MemoryServer, ChrootServer and
PathFilteringServer. bzrlib users may encounter test failures that can
be fixed by updating the related imports from bzrlib.transport.xxx to
bzrlib.tests.test_server.
(Vincent Ladeuil)
- BranchReferenceFormat.initialize() now takes an optional name argument
as its second parameter, for consistency with the initialize() method of
other formats. (Jelmer Vernooij)
New Features
- Added bzr remove-branch command that can remove a local or remote
branch. (Jelmer Vernooij, #276295)
- bzr export now takes an optional argument --per-file-timestamps
to set file mtimes to the last timestamp of the last revision in which
they were changed rather than the current time. (Jelmer Vernooij)
- If the Apport crash-reporting tool is available, bzr crashes are now
stored into the /var/crash apport spool directory, and the user is
invited to report them to the developers from there, either
automatically or by running apport-bug. No information is sent
without specific permission from the user. (Martin Pool, #515052)
- Parsing of command lines, for example in diff --using, no longer
treats backslash as an escape character on Windows.
(Gordon Tyler, #392428)
- Plugins can be disabled by defining BZR_DISABLE_PLUGINS as
a list of plugin names separated by ':' (';' on windows).
(Vincent Ladeuil, #411413)
- Plugins can be loaded from arbitrary locations by defining
BZR_PLUGINS_AT as a list of name@path separated by ':' (';' on
windows). This takes precedence over BZR_PLUGIN_PATH for the
specified plugins. This is targeted at plugin developers for punctual
needs and not intended to replace BZR_PLUGIN_PATH.
(Vincent Ladeuil, #82693)
- Tag names can now be determined automatically by automatic_tag_name
hooks on Branch if they are not specified on the command line.
(Jelmer Vernooij)
- Tree-shape conflicts can be resolved by providing --take-this and
--take-other to the bzr resolve command. Just marking the conflict
as resolved is still accessible via the --done default action.
(Vincent Ladeuil)
- Merges can be proposed on Launchpad with the new lp-propose-merge command.
(Aaron Bentley, Jonathan Lange)
Bug Fixes
Added docstring for Tree.iter_changes
(John Arbash Meinel, #304182)
Allow additional arguments to
RemoteRepository.add_inventory_by_delta(). (Jelmer Vernooij, #532631)
Allow exporting a single file using bzr export.
(Michal Junák, #511987)
Allow syscalls to automatically restart when TextUIFactory's
SIGWINCH handler is invoked, avoiding EINTR errors during blocking
IO, which are often poorly handled by Python's libraries and parts of
bzrlib. (Andrew Bennetts, #496813)
Avoid infinite recursion when probing for apport.
(Vincent Ladeuil, #516934)
Avoid malloc(0) in patiencediff, which is non-portable.
(Martin Pool, #331095)
Avoid truncating svn URLs.
(Martin Pool, Martin von Gagern, #545185)
bzr add will not add conflict related files unless explicitly required.
(Vincent Ladeuil, #322767, #414589)
bzr dump-btree now works on *.cix and *.six files. Those
indices do not have reference lists, so dump-btree will simply show
None instead. (Andrew Bennetts, #488607)
bzr help will no longer trigger the get_missing_command hook when
doing a topic lookup. This avoids prompting (like 'no command plugins/loom,
did you mean log?') when getting help. In future we may trigger the hook
deliberately when no help topics match from any help index.
(Robert Collins, #396261)
bzr log -n0 -r..A.B.C should not crash but just consider the None
revspec as representing the first revision of the branch.
(Vincent Ladeuil, #519862)
bzr remove-tree can now remove multiple working trees.
(Jared Hance, Andrew Bennetts, #253137)
bzr resolve --take-this and --take-other now correctly renames
the kept file on content conflicts where one side deleted the file.
(Vincent Ladeuil, #529968)
bzr upgrade now creates the backup.bzr directory with the same
permissions as .bzr directory on a POSIX OS.
(Parth Malwankar, #262450)
bzr upgrade now names backup directory as backup.bzr.~N~ instead
of backup.bzr. This directory is ignored by bzr commands such as
add.
(Parth Malwankar, #335033, #300001)
Cope with non-utf8 characters inside .bzrignore.
(Jason Spashett, #183504)
Correctly interpret "451 Rename/move failure: Directory not empty" from
FTP servers while trying to take a lock.
(Martin Pool, #528722)
DirStateRevisionTree.kind() was returning wrong result when 'kind'
changes occured between the workingtree and one of its parents.
(Vincent Ladeuil, #535547)
Fix log to better check ancestors even if merged revisions are involved.
(Vincent Ladeuil, #476293)
Loading a plugin from a given path with BZR_PLUGINS_AT doesn't depend
on os.lisdir() order and is now reliable.
(Vincent Ladeuil, #552922).
Many IO operations that returned EINTR were retried even if it
wasn't safe to do so via careless use of until_no_eintr. Bazaar now
only retries operations that are safe to retry, and in some cases has
switched to operations that can be retried (e.g. sock.send rather than
sock.sendall).
(Andrew Bennetts, Martin <gzlist@googlemail.com>, #496813)
Path conflicts now support --take-this and --take-other even when a
deletion is involved.
(Vincent Ladeuil, #531967)
Network transfer amounts and rates are now displayed in SI units according
to the Ubuntu Units Policy <https://wiki.ubuntu.com/UnitsPolicy>.
(Gordon Tyler, #514399)
Support kind markers for socket and fifo filesystem objects. This
prevents bzr status --short from crashing when those files are
present. (John Arbash Meinel, #303275)
- bzr mkdir DIR will not create DIR unless DIR's parent is a versioned
directory. (Parth Malwankar, #138600)
SSH child processes will now ignore SIGQUIT on nix systems so breaking into
the debugger won't kill the session.
(Martin <gzlist@googlemail.com>, #162502)
Tolerate patches with leading noise in bzr-handle-patch.
(Toshio Kuratomi, Martin Pool, #502076)
update -r now supports updating to revisions that are not on
mainline (i.e. it supports dotted revisions).
(Parth Malwankar, #517800)
Use first apparent author not committer in GNU Changelog format.
(Martin von Gagern, #513322)
API Changes
- bzrlib.merge_directive._BaseMergeDirective has been renamed to
bzrlib.merge_directive.BaseMergeDirective and is now public.
(Jelmer Vernooij)
- BranchFormat.initialize now takes an optional name of the colocated
branch to create. (Jelmer Vernooij)
- BzrDir.get_branch_transport now takes an optional name of the
colocated branch to open. (Jelmer Vernooij)
- Added bzrlib.osutils.set_signal_handler, a convenience function that
can set a signal handler and call signal.siginterrupt(signum,
False) for it, if the platform and Python version supports it.
(Andrew Bennetts, #496813)
- New bzrlib.initialize is recommended for programs using bzrlib to
run when starting up; it sets up several things that previously needed
to be done separately.
(Martin Pool, #507710)
- Exporters now support a per_file_timestamps argument to write out the
timestamp of the commit in which a file revision was introduced.
(Jelmer Vernooij)
- New method BzrDir.list_branches() that returns a sequence of branches
present in a control directory. (Jelmer Vernooij)
- New method Repository.get_known_graph_ancestry().
(Jelmer Vernooij, #495502)
- New transport methods readlink, symlink and hardlink.
(Neil Santos)
- Remove unused CommandFailed exception.
(Martin Pool)
Internals
- bzrlib.branchbuilder.BranchBuilder.build_snapshot now accepts a
message_callback in the same way that commit does. (Robert Collins)
- bzrlib.builtins.Commit.run raises bzrlib.errors.BoundBranchOutOfDate
rather than bzrlib.errors.BzrCommandError when the bound branch is out
of date. (Gary van der Merwe)
- bzrlib.commands.run_bzr is more extensible: callers can supply the
functions to load or disable plugins if they wish to use a different
plugin mechanism; the --help, --version and no-command name code paths
now use the generic pluggable command lookup infrastructure.
(Robert Collins)
- bzrlib.errors.BoundBranchOutOfDate has a new field extra_help
which can be set to add extra help to the error. (Gary van der Merwe)
- New method Branch.automatic_tag_name that can be used to find the
tag name for a particular revision automatically. (Jelmer Vernooij)
- The methods BzrDir.create_branch(), BzrDir.destroy_branch() and
BzrDir.open_branch() now take an optional name argument.
(Jelmer Vernooij)
Testing
- bzr now has a .testr.conf file in its source tree configured
appropriately for running tests with Testrepository
(https://launchpad.net/testrepository). (Robert Collins)
- Documentation about testing with subunit has been tweaked.
(Robert Collins)
- Known failures has been added for resolve --take-other on ParentLoop
conflicts. This reflects bug #537956 without fixing it.
(Vincent Ladeuil)
- New bzrlib.tests.test_import_tariff can make assertions about what
Python modules are loaded, to guard against startup time or library
dependency regressions.
(Martin Pool)
- PQM will now run with subunit output. To analyze a PQM error use
tribunal, or cat log | subunit-filter | subunit2pyunit. (Robert Collins)
- Stop sending apport crash files to .cache in the directory from
which bzr selftest was run. (Martin Pool, #422350)
- Tests no longer fail if "close() called during concurrent
operation on the same file object" occurs when closing the log file
(which can happen if a thread tries to write to the log file at the
wrong moment). An warning will be written to stderr when this
happens, and another warning will be written if the log file could not
be closed after retrying 100 times. (Andrew Bennetts, #531746)
Compatibility Breaks
New Features
Bug Fixes
Accessing a packaging branch on Launchpad (eg, lp:ubuntu/bzr) now
checks to see if the most recent published source package version for
that project is present in the branch tags. This should help developers
trust whether the packaging branch is up-to-date and can be used for new
changes. The level of verbosity is controlled by the config item
launchpad.packaging_verbosity. It can be set to one of
- off
disable all checks
- minimal
only display if the branch is out-of-date
- short
also display single-line up-to-date and missing,
- all
(default) display multi-line content for all states
(John Arbash Meinel, #609187, #812928)
Improvements
Documentation
API Changes
Internals
Testing
The fourth release in our 2.1 series addresses some user-inconvenience bugs.
None are critical, but upgrading is recommended for all users on earlier 2.1
releases.
Compatibility Breaks
- Launchpad has announced that the edge.launchpad.net instance is
deprecated and may be shut down in the future
<http://blog.launchpad.net/general/edge-is-deprecated>. Bazaar has therefore
been updated in this release to talk to the main (launchpad.net) servers,
rather than the edge ones. (Vincent Ladeuil, #583667)
Bug Fixes
- Avoid UnicodeDecodeError in bzr add with multiple files under a non-ascii
path on windows from symlink support addition. (Martin [gz], #686611)
- Skip tests that needs a bzr source tree when there isn't one. This is
needed to succesfully run the test suite for installed versions.
(Vincent Ladeuil, #644855).
- Skip the tests that requires respecting the chmod bits when running as root.
(Vincent Ladeuil, #646133)
- Using bzr with lp: URLs behind an HTTP proxy should work.
(Robert Collins, #558343)
Improvements
Documentation
API Changes
Internals
Testing
Codename: | Do run run |
2.1.3: | 2010-09-17 |
The third release in our 2.1 series addresses several user-inconvenience bugs
(and includes the fixes done in 2.0.6). None are critical, but upgrading is
recommended for all users on earlier 2.1 releases.
Bug Fixes
- Additional merges after an unrelated branch has been merged with its
history no longer crash when deleted files are involved.
(Vincent Ladeuil, John Arbash Meinel, #375898)
- bzr add SYMLINK/FILE now works properly when the symlink points to a
previously-unversioned directory within the tree: the directory is
marked versioned too.
(Martin Pool, #192859)
- bzr commit SYMLINK now works, rather than trying to commit the
target of the symlink.
(Martin Pool, John Arbash Meinel, #128562)
- bzr upgrade now creates the backup.bzr directory with the same
permissions as .bzr directory on a POSIX OS.
(Parth Malwankar, #262450)
- Configuration files in ${BZR_HOME} are now written in an atomic
way which should help avoid problems with concurrent writers.
(Vincent Ladeuil, #525571)
- Don't traceback trying to unversion children files of an already
unversioned directory. (Vincent Ladeuil, #494221)
- Don't traceback when a lockdir's held/info file is corrupt (e.g.
contains only NUL bytes). Instead warn the user, and allow bzr
break-lock to remove it. (Andrew Bennetts, #619872)
- Fix AttributeError on parent.children when adding a file under a
directory that was a symlink in the previous commit.
(Martin Pool, #192859)
- Prevent CHKMap.apply_delta from generating non-canonical CHK maps,
which can result in "missing referenced chk root keys" errors when
fetching from repositories with affected revisions.
(Andrew Bennetts, #522637)
- Raise ValueError instead of a string exception.
(John Arbash Meinel, #586926)
- Reduce peak memory by one copy of compressed text.
(John Arbash Meinel, #566940)
- Repositories accessed via a smart server now reject being stacked on a
repository in an incompatible format, as is the case when accessing them
via other methods. This was causing fetches from those repositories via
a smart server (e.g. using bzr branch) to receive invalid data.
(Andrew Bennetts, #562380)
- Selftest with versions of subunit that support stopTestRun will no longer
error. This error was caused by 2.0 not being updated when upstream
python merged the end of run patch, which chose stopTestRun rather than
done. (Robert Collins, #571437)
- Stop AttributeError: 'module' object has no attribute 'ElementTree'
being thrown from xml_serializer on certain cElementTree setups.
(Martin [gz], #254278)
- When passing a file to UTF8DirReader make sure to close the current
directory file handle after the chdir fails. Otherwise when passing many
filenames into a command line bzr status we would leak descriptors.
(John Arbash Meinel, #583486)
Testing
- build_tree_contents can create symlinks.
(Martin Pool, John Arbash Meinel)
This release fixes two critical networking issues with older servers and
with interrupted system call errors when pushing or pulling. We recommend
upgrading to anyone running a 2.1.x version of bzr.
Bug Fixes
- bzr clean-tree should not delete nested bzrdirs. Required for proper
support of bzr-externals and scmproj plugins.
(Alexander Belchenko, bug #572098)
- bzr switch does not die if a ConfigurableFileMerger is used.
(Aaron Bentley, #559436)
- Do not register a SIGWINCH signal handler, instead just poll for the
terminal width as needed. This avoids the "Interrupted System Call"
problems that occur on POSIX with all currently released versions of
Python.
(Andrew Bennetts, #583941)
- Fixed AssertionError when accessing smart servers running Bazaar
versions before 1.6.
(Andrew Bennetts, #528041)
- Reset siginterrupt flag to False every time we handle a signal
installed with set_signal_handler(..., restart_syscall=True) (from
bzrlib.osutils. Reduces the likelihood of "Interrupted System Call"
errors compared to registering signal.signal directly.
(Andrew Bennetts)
- Reduce peak memory by one copy of compressed text.
(John Arbash Meinel, #566940)
- Support Pyrex 0.9.9, required changing how we handle exceptions in Pyrex.
(John Arbash Meinel, #582656)
- When passing a file to UTF8DirReader make sure to close the current
directory file handle after the chdir fails. Otherwise when passing many
filenames into a command line bzr status we would leak descriptors.
(John Arbash Meinel, #583486)
Internals
- _remember_remote_is_before no longer raises AssertionError when
suboptimal network behaviour is noticed; instead it just mutters to the
log file (and warns the user if they have set the hpss debug flag).
This was causing unnecessary aborts for performance bugs that are minor
at worst.
(Andrew Bennetts, #528041)
This is a small bugfix release. Upgrading is recommended for anyone
running 2.1.0 or earlier.
Bug Fixes
- Allow syscalls to automatically restart when TextUIFactory's
SIGWINCH handler is invoked, avoiding EINTR errors during blocking
IO, which are often poorly handled by Python's libraries and parts of
bzrlib. (Andrew Bennetts, #496813)
- Avoid malloc(0) in patiencediff, which is non-portable.
(Martin Pool, #331095)
- Fix plugin packaging on Windows. (Ian Clatworthy, #524162)
- Fix stub SFTP test server to call os.getcwdu().
(Vincent Ladeuil, #526221, #526353)
- Fixed CHM generation by moving the NEWS section template into
a separate file. (Ian Clatworthy, #524184)
- Merge correctly when this_tree is not a WorkingTree. (Aaron Bentley)
- Register SIGWINCH handler only when creating a TextUIFactory; avoids
problems importing bzrlib from a non-main thread.
(Elliot Murphy, #521989)
- Repositories accessed via a smart server now reject being stacked on a
repository in an incompatible format, as is the case when accessing them
via other methods. This was causing fetches from those repositories via
a smart server (e.g. using bzr branch) to receive invalid data.
(Andrew Bennetts, #562380)
- Standardize the error handling when creating a new StaticTuple
(problems will raise TypeError). (Matt Nordhoff, #457979)
- Warn if pyrex is too old to compile the new SimpleSet and
StaticTuple extensions, rather than having the build fail randomly.
(John Arbash Meinel, #449776)
Documentation
- Added a link to the Desktop Guide. (Ian Clatworthy)
- Added What's New in Bazaar 2.1 document. (Ian Clatworthy)
- Drop Google Analytics from the core docs as they caused problems
in the CHM files. (Ian Clatworthy, #502010)
API Changes
- Added bzrlib.osutils.set_signal_handler, a convenience function that
can set a signal handler and call signal.siginterrupt(signum,
False) for it, if the platform and Python version supports it.
(Andrew Bennetts, #496813)
Codename: | Strasbourg |
2.1.0: | 2010-02-11 |
This release marks our second long-term-stable series. The Bazaar team
has decided that we will continue to make bugfix-only 2.0.x and 2.1.x
releases, along with 2.2 development releases.
This is a fairly incremental update, focusing on polish and bugfixing.
There are no changes for supported disk formats. Key updates include
reduced memory consumption for many operations, a new per-file merge
hook, ignore patterns can now include '!' to exclude files, globbing
support for all commands on Windows, and support for addressing home
directories via bzr+ssh://host/~/ syntax.
Users are encouraged to upgrade from the 2.0 stable series.
Bug Fixes
- Don't require testtools to use SFTP.
(Vincent Ladeuil, #516183)
- Fix "AttributeError in Inter1and2Helper" during fetch.
(Martin Pool, #513432)
- bzr update performs the two merges in a more logical order and will stop
when it encounters conflicts.
(Gerard Krol, #113809)
- Give a better error message when doing bzr bind in an already bound
branch. (Neil Martinsen-Burrell, #513063)
- Ignore KeyError from remove_index during _abort_write_group
in a pack repository, which can happen harmlessly if the abort occurs during
finishing the write group. Also use bzrlib.cleanup so that any
other errors that occur while aborting the individual packs won't be
hidden by secondary failures when removing the corresponding indices.
(Andrew Bennetts, #423015)
- Set the mtime of files exported to a directory by bzr export all to
the same value to avoid confusing make and other date-based build
systems. (Robert Collins, #515631)
Improvements
- Fetching into experimental formats will now print a warning. (Jelmer
Vernooij)
API Changes
- Repository.deserialise_inventory has been renamed to
Repository._deserialise_inventory to indicate it is private.
(Jelmer Vernooij)
- Repository.get_inventory_xml has been renamed to
Repository._get_inventory_xml to indicate it is private.
(Jelmer Vernooij)
- Repository.serialise_inventory has been renamed to
Repository._serialise_inventory to indicate it is private.
- Using the bzrlib.chk_map module from within multiple threads at the
same time was broken due to race conditions with a module level page
cache. This shows up as a KeyError in the bzrlib.lru_cache code with
bzrlib.chk_map in the backtrace, and can be triggered without using
the same high level objects such as bzrlib.repository.Repository
from different threads. chk_map now uses a thread local cache which may
increase memory pressure on processes using threads.
(Robert Collins, John Arbash Meinel, #514090)
- The new merge_file_content should now be ok with tests to avoid
regressions.
(Vincent Ladeuil, #515597)
Internals
- Use bzrlib.cleanup rather than less robust try/finally
blocks in several places in bzrlib.merge. This avoids masking prior
errors when errors like ImmortalPendingDeletion occur during cleanup
in do_merge.
(Andrew Bennetts, #517275)
API Changes
- The remove_index method of
bzrlib.repofmt.pack_repo.AggregateIndex no longer takes a pack
argument. This argument was always ignored.
(Andrew Bennetts, #423015)
Codename: | after the bubbles |
2.1.0rc2: | 2010-01-29 |
This is a quick-turn-around to update a small issue with our new per-file
merge hook. We expect no major changes from this to the final 2.1.0.
API Changes
- The new merge_file_content hook point has been altered to provide a
better API where state for extensions can be stored rather than the
too-simple function based approach. This fixes a performance regression
where branch configuration would be parsed per-file during merge. As
part of this the included news_merger has been refactored into a base
helper class bzrlib.merge.ConfigurableFileMerger.
(Robert Collins, John Arbash Meinel, #513822)
Codename: | the 'new' stable |
2.1.0rc1: | 2009-01-21 |
This is the first stable release candidate for Bazaar's 2.1 series. From
this point onwards, the 2.1 series will be considered stable (as the 2.0
series) and only bugfixes are expected to be incorporated. The dozen or so
bugfixes in the 2.0.4 release are also included in this release (along
with more than 15 more bugfixes). Some of the interesting features are
support for per-file merge hooks, bzr unshelve --preview, support
for using ! in ignore files to exclude files from being ignored, a small
memory leak was squashed, and many ObjectNotLocked errors were fixed.
This looks to be a very good start for a new stable series.
New Features
- Add bug information to log output when available.
(Neil Martinsen-Burrell, Guillermo Gonzalez, #251729)
- Added merge_file_content hook point to Merger, allowing plugins
to register custom merge logic, e.g. to provide smarter merging for
particular files.
- Bazaar now includes the news_merge plugin. It is disabled by
default, to enable it add a news_merge_files option to your
configuration. Consult bzr help news_merge for more information.
(Andrew Bennetts)
- bzr branch now takes a --bind option. This lets you
branch and bind all in one command. (Ian Clatworthy)
- bzr switch now takes a --revision option, to allow switching to
a specific revision of a branch. (Daniel Watkins, #183559)
- bzr unshelve --preview can now be used to show how a patch on the
shelf would be applied to the working tree.
(Guilherme Salgado, #308122)
- bzr update now takes a --revision argument. This lets you
change the revision of the working tree to any revision in the
ancestry of the current or master branch. (Matthieu Moy, Mark Hammond,
Martin Pool, #45719)
- -Dbytes can now be used to display the total number of bytes
transferred for the current command. This information is always logged
to .bzr.log for later inspection. (John Arbash Meinel)
- New ignore patterns. Patterns prefixed with '!' are exceptions to
ignore patterns and take precedence over regular ignores. Such
exceptions are used to specify files that should be versioned which
would otherwise be ignored. Patterns prefixed with '!!' act as regular
ignore patterns, but have highest precedence, even over the '!'
exception patterns. (John Whitley, #428031)
- The supress_warnings configuration option has been introduced to disable
various warnings (it currently only supports the format_deprecation
warning). The new option can be set in any of the following locations:
bazaar.conf, locations.conf and/or branch.conf.
(Ted Gould, Matthew Fuller, Vincent Ladeuil)
Bug Fixes
- Always show a message if an OS error occurs while trying to run a
user-specified commit message editor.
(Martin Pool, #504842)
- bzr diff will now use the epoch when it is unable to determine
the timestamp of a file, if the revision it was introduced in is a
ghost. (Jelmer Vernooij, #295611)
- bzr switch -b can now create branches that are located using directory
services such as lp:, even when the branch name doesn't contain a
'/'. (Neil Martinsen-Burrell, #495263)
- bzr unshelve has improved messages about what it is doing.
(Neil Martinsen-Burrell, #496917)
- Concurrent autopacking is more resilient to already-renamed pack files.
If we find that a file we are about to obsolete is already obsoleted, we
do not try to rename it, and we leave the file in obsolete_packs.
The code is also fault tolerant if a file goes missing, assuming that
another process already removed the file.
(John Arbash Meinel, Gareth White, #507557)
- Fix "Too many concurrent requests" in reconcile when network connection
fails. (Andrew Bennetts, #503878)
- Fixed a side effect mutation of RemoteBzrDirFormat._network_name
that caused some tests to fail when run in a non-default order.
Probably no user impact. (Martin Pool, #504102)
- Fixed ObjectNotLocked error in bzr cat -rbranch:../foo FILE.
(Andrew Bennetts, #506274)
- FTP transports support Unicode paths by encoding/decoding them as utf8.
(Vincent Ladeuil, #472161)
- Listen to the SIGWINCH signal to update the terminal width.
(Vincent Ladeuil, #316357)
- Progress bars are now hidden when --quiet is given.
(Martin Pool, #320035)
- SilentUIFactory now supports make_output_stream and discards
whatever is written to it. This un-breaks some plugin tests that
depended on this behaviour.
(Martin Pool, #499757)
- When operations update the working tree, all affected files should end
up with the same mtime. (eg. when versioning a generated file, if you
update the source and the generated file together, the generated file
should appear up-to-date.)
(John Arbash Meinel, Martin <gzlist>, #488724)
Improvements
- Added add_cleanup and cleanup_now to bzrlib.command.Command.
All the builtin commands now use add_cleanup rather than
try/finally blocks where applicable as it is simpler and more
robust. (Andrew Bennetts)
- All except a small number of storage formats are now hidden, making
the help for numerous commands far more digestible. (Ian Clatworthy)
- Attempts to open a shared repository as a branch (e.g. bzr branch
path/to/repo) will now include "location is a repository" as a hint in
the error message. (Brian de Alwis, Andrew Bennetts, #440952)
- Push will now inform the user when they are trying to push to a foreign
VCS for which roundtripping is not supported, and will suggest them to
use dpush. (Jelmer Vernooij)
- The version of bzr being run is now written to the log file.
(__monty__, #257170)
- Transport network activity indicator is shown more of the time when
Bazaar is doing network IO.
(Martin Pool)
Documentation
- Add documentation on creating merges with more than one parent.
(Neil Martinsen-Burrell, #481526)
- Better explain the --uncommitted option of merge.
(Neil Martinsen-Burrell, #505088)
- Improve discussion of pending merges in the documentation for
revert. (Neil Martinsen-Burrell, #505093)
- Improved help for bzr send.
(Martin Pool, Bojan Nikolic)
- There is a System Administrator's Guide in doc/en/admin-guide,
including discussions of installation, relevant plugins, security and
backup. (Neil Martinsen-Burrell)
- The conflicts help topic has been renamed to conflict-types.
(Ian Clatworthy)
- The User Reference is now presented as a series of topics.
Many of the included topics have link and format tweaks applied.
(Ian Clatworthy)
API Changes
- Added cachedproperty decorator to bzrlib.decorators.
(Andrew Bennetts)
- Many test features were renamed from FooFeature to foo_feature
to be consistent with instances being lower case and classes being
CamelCase. For the features that were more likely to be used, we added a
deprecation thunk, but not all. (John Arbash Meinel)
- Merger classes (such as Merge3Merger) now expect a this_branch
parameter in their constructors, and provide this_branch as an
attribute. (Andrew Bennetts)
- The Branch hooks pre_change_branch_tip no longer masks exceptions raised
by plugins - the original exceptions are now preserved. (Robert Collins)
- The Transport Server.tearDown method is now renamed to
stop_server and setUp to start_server for consistency with
our normal naming pattern, and to avoid confusion with Python's
TestCase.tearDown. (Martin Pool)
- WorkingTree.update implementations must now accept a revision
parameter.
Internals
- Added BzrDir.open_branchV3 smart server request, which can receive
a string of details (such as "location is a repository") as part of a
nobranch response. (Andrew Bennetts, #440952)
- New helper osutils.UnicodeOrBytesToBytesWriter which encodes unicode
objects but passes str objects straight through. This is used for
selftest but may be useful for diff and other operations that generate
mixed output. (Robert Collins)
- New exception NoRoundtrippingSupport, for use by foreign branch
plugins. (Jelmer Vernooij)
Testing
- bzrlib.tests.permute_for_extension is a helper that simplifies
running all tests in the current module, once against a pure python
implementation, and once against an extension (pyrex/C) implementation.
It can be used to dramatically simplify the implementation of
load_tests. (John Arbash Meinel)
- bzrlib.tests.TestCase now subclasses testtools.testcase.TestCase.
This permits features in testtools such as getUniqueInteger and
getUniqueString to be used. Because of this, testtools version 0.9.2 or
newer is now a dependency to run bzr selftest. Running with versions of
testtools less than 0.9.2 will cause bzr to error while loading the test
suite. (Robert Collins)
- Shell-like tests now support the command "mv" for moving files. The
syntax for mv file1 file2, mv dir1 dir2 and mv file dir is
supported. (Neil Martinsen-Burrell)
- The test progress bar no longer distinguishes tests that 'errored' from
tests that 'failed' - they're all just failures.
(Martin Pool)
Codename: | san francisco airport |
2.1.0b4: | 2009-12-14 |
The fourth beta release in the 2.1 series brings with it a significant
number of bugfixes (~20). The test suite is once again (finally) "green"
on Windows, and should remain that way for future releases. There are a
few performance related updates (faster upgrade and log), and several UI
tweaks. There has also been a significant number of tweaks to the runtime
documentation. 2.1.0b4 include everything from the 2.0.3 release.
Compatibility Breaks
- The BZR_SSH environmental variable may now be set to the path of a secure
shell client. If currently set to the value ssh it will now guess the
vendor of the program with that name, to restore the old behaviour that
indicated the SSH Corporation client use sshcorp instead as the magic
string. (Martin <gzlist@googlemail.com>, #176292)
New Features
- bzr commit now has a --commit-time option.
(Alexander Sack, #459276)
- -Dhpss now increases logging done when run on the bzr server,
similarly to how it works on the client. (John Arbash Meinel)
- New option bzr unshelve --keep applies the changes and leaves them
on the shelf. (Martin Pool, Oscar Fuentes, #492091)
- The BZR_COLUMNS envrionment variable can be set to force bzr to
respect a given terminal width. This can be useful when output is
redirected or in obscure cases where the default value is not
appropriate. Pagers can use it to get a better control of the line
lengths.
(Vincent Ladeuil)
- The new command bzr lp-mirror will request that Launchpad update its
mirror of a local branch. This command will only function if launchpadlib
is installed.
(Jonathan Lange)
Bug Fixes
- After renaming a file, the dirstate could accidentally reference
source\\path rather than source/path on Windows. This might be a
source of some dirstate-related failures. (John Arbash Meinel)
- bzr commit now detects commit messages that looks like file names
and issues a warning.
(Gioele Barabucci, #73073)
- bzr ignore / no longer causes an IndexError. (Gorden Tyler, #456036)
- bzr log -n0 -rN should not return revisions beyond its merged revisions.
(#325618, #484109, Marius Kruger)
- bzr merge --weave and --lca will now create .BASE files for
files with conflicts (similar to --merge3). The contents of the file
is a synthesis of all bases used for the merge.
(John Arbash Meinel, #40412)
- bzr mv --quiet really is quiet now. (Gordon Tyler, #271790)
- bzr serve is more clear about the risk of supplying --allow-writes.
(Robert Collins, #84659)
- bzr serve --quiet really is quiet now. (Gordon Tyler, #252834)
- Fix bug with redirected URLs over authenticated HTTP.
(Glen Mailer, Neil Martinsen-Burrell, Vincent Ladeuil, #395714)
- Interactive merge doesn't leave branch locks behind. (Aaron Bentley)
- Lots of bugfixes for the test suite on Windows. We should once again
have a test suite with no failures on Windows. (John Arbash Meinel)
- osutils.terminal_width() obeys the BZR_COLUMNS environment
variable but returns None if the terminal is not a tty (when output is
redirected for example). Also fixes its usage under OSes that doesn't
provide termios.TIOCGWINSZ. Make sure the corresponding tests runs on
windows too.
(Joke de Buhr, Vincent Ladeuil, #353370, #62539)
(John Arbash Meinel, Vincent Ladeuil, #492561)
- Terminate SSH subprocesses when no references to them remain, fixing
subprocess and file descriptor leaks. (Andrew Bennetts, #426662)
- The --hardlink option of bzr branch and bzr checkout now
works for 2a format trees. Only files unaffected by content filters
will be hardlinked. (Andrew Bennetts, #408193)
- The new glob expansion on Windows would replace all \ characters
with / even if it there wasn't a glob to expand, the arg was quoted,
etc. Now only change slashes if there is something being glob expanded.
(John Arbash Meinel, #485771)
- Use our faster KnownGraph.heads() functionality when computing the
new rich-root heads. This can cut a conversion time in half (mysql from
13.5h => 6.2h) (John Arbash Meinel, #487632)
- When launching a external diff tool via bzr diff --using, temporary files
are no longer created, rather, the path to the file in the working tree is
passed to the external diff tool. This allows the file to be edited if the
diff tool provides for this. (Gary van der Merwe, #490738)
- The launchpad-open command can now be used from a subdirectory of a
branch, not just from the root of the branch.
(Neil Martinsen-Burrell, #489102)
Improvements
- bzr log is now faster. (Ian Clatworthy)
- bzr update provides feedback on which branch it is up to date with.
(Neil Martinsen-Burrell)
- bzr upgrade from pre-2a to 2a can be significantly faster (4x).
For details see the xml8 patch and heads() improvements.
(John Arbash Meinel)
- bzrlib.urlutils.local_path_from_url now accepts
'file://localhost/' as well as 'file:///' URLs on POSIX. (Michael
Hudson)
- The progress bar now shows only a spinner and per-operation counts,
not an overall progress bar. The previous bar was often not correlated
with real overall operation progress, either because the operations take
nonlinear time, or because at the start of the operation Bazaar couldn't
estimate how much work there was to do. (Martin Pool)
Documentation
- Lots of documentation tweaks for inline help topics and command help
information.
API Changes
- bzrlib.textui (vestigial module) removed. (Martin Pool)
- The Launchpad plugin now has a function login which will log in to
Launchpad with launchpadlib, and load_branch which will return the
Launchpad Branch object corresponding to a given Bazaar Branch object.
(Jonathan Lange)
Internals
- New test Feature: ModuleAvailableFeature. It is designed to make it
easier to handle what tests you want to run based on what modules can be
imported. (Rather than lots of custom-implemented features that were
basically copy-and-pasted.) (John Arbash Meinel)
- osutils.timer_func() can be used to get either time.time() or
time.clock() when you want to do performance timing.
time.time() is limited to 15ms resolution on Windows, but
time.clock() gives CPU and not wall-clock time on other platforms.
(John Arbash Meinel)
- Several code paths that were calling Transport.get().read() have
been changed to the equalivent Transport.get_bytes(). The main
difference is that the latter will explicitly call file.close(),
rather than expecting the garbage collector to handle it. This helps
with some race conditions on Windows during the test suite and SFTP
tests. (John Arbash Meinel)
Testing
- TestCaseWithMemoryTransport no longer sets $HOME and $BZR_HOME to
unicode strings. (Michael Hudson, #464174)
Codename: | after sprint recovery |
2.1.0b3: | 2009-11-16 |
This release was pushed up from its normal release cycle due to a
regression in python 2.4 compatibility in 2.1.0b2. Since this regression
was caught before 2.1.0b2 was officially announced, the full changelog
includes both 2.1.0b3 and 2.1.0b2 changes.
Highlights of 2.1.0b3 are: new globbing code for all commands on Windows,
the test suite now conforms to python's trunk enhanced semantics (skip,
etc.), and bzr info -v will now report the correct branch and repo
formats for Remote objects.
New Features
- Users can define a shelve editor to provide shelf functionality at a
granularity finer than per-patch-hunk. (Aaron Bentley)
Bug Fixes
- Fix for shell completion and short options. (Benoît PIERRE)
- Fix bzr --profile-imports with Python 2.6. (Martin Pool)
- Hooks daughter classes should always call the base constructor.
(Alexander Belchenko, Vincent Ladeuil, #389648)
- Improve "Binary files differ" hunk handling. (Aaron Bentley, #436325)
- On Windows, do glob expansion at the command-line level (as is usually
done in bash, etc.) This means that all commands get glob expansion
(bzr status, bzr add, bzr mv, etc). It uses a custom command line
parser, which allows us to know if a given section was quoted. It means
you can now do bzr ignore "*.py".
(John Arbash Meinel, #425510, #426410, #194450)
- Sanitize commit messages that come in from the '-m' flag. We translate
'rn' => 'n' and a plain 'r' => 'n'. The storage layer doesn't
allow those because XML store silently translate it anyway. (The parser
auto-translates rn => n in ways that are hard for us to catch.)
- Show correct branch and repository format descriptions in
bzr info -v on a smart server location. (Andrew Bennetts, #196080)
- The fix for bug #186920 accidentally broke compatibility with python
2.4. (Vincent Ladeuil, #475585)
- Using Repository.get_commit_builder().record_iter_changes() now
correctly sets self.inv_sha1 to a sha1 string and
self.new_inventory to an Inventory instance after calling
self.finish_inventory(). (Previously it accidently set both values
as a tuple on self.inv_sha1. This was missed because
repo.add_revision ignores the supplied inventory sha1 and recomputes
the sha1 from the repo directly. (John Arbash Meinel)
- Shelve command refuse to run if there is no real terminal.
(Alexander Belchenko)
- Avoid unnecessarily flushing of trace file; it's now unbuffered at the
Python level. (Martin Pool)
Documentation
- Include Japanese translations for documentation (Inada Naoki)
- New API ui_factory.make_output_stream to be used for sending bulk
(rather than user-interaction) data to stdout. This automatically
coordinates with progress bars or other terminal activity, and can be
overridden by GUIs.
(Martin Pool, 493944)
Internals
- Some of the core groupcompress functionality now releases the GIL before
operation. Similar to how zlib and bz2 operate without the GIL in the
core compression and decompression routines. (John Arbash Meinel)
Testing
- -Dhpssvfs will now trigger on RemoteBzrDir._ensure_real, providing
more debugging of VFS access triggers. (Robert Collins)
- KnownFailure is now signalled to ExtendedTestResult using the same
method that Python 2.7 uses - addExpectedFailure. (Robert Collins)
- --parallel=fork is now compatible with --subunit.
(Robert Collins, Vincent Ladeuil, #419776)
- Reporting of failures shows test ids not descriptions and thus shows
parameterised tests correctly. (Robert Collins)
- TestNotApplicable is now handled within the TestCase.run method rather
than being looked for within ExtendedTestResult.addError. This
provides better handling with other TestResult objects, degrading to
sucess rather than error. (Robert Collins)
- The private method _testConcluded on ExtendedTestResult has been
removed - it was empty and unused. (Robert Collins)
- UnavailableFeature is now handled within the TestCase.run method rather
than being looked for within addError. If the Result object does not
have an addNotSupported method, addSkip is attempted instead, and
failing that addSuccess. (Robert Collins)
- When a TestResult does not have an addSkip method, skipped tests are now
reported as successful tests, rather than as errors. This change is
to make it possible to get a clean test run with a less capable
TestResult. (Robert Collins)
Codename: | a load off my mind |
2.1.0b2: | 2009-11-02 |
This is our second feature-filled release since 2.0, pushing us down the
path to a 2.1.0. Once again, all bugfixes in 2.0.2 are present in 2.1.0b2.
Key highlights in this release are: improved handling of
failures-during-cleanup for commit, fixing a long-standing bug with
bzr+http and shared repositories, all lp: URLs to be resolved
behind proxies, and a new StaticTuple datatype, allowing us to reduce
memory consumption (50%) and garbage collector overhead (40% faster) for
many operations.
- A new --concurrency option has been added as well as an associated
BZR_CONCURRENCY environment variable to specify the number of
processes that can be run concurrently when running bzr selftest. The
command-line option overrides the environment variable if both are
specified. If none is specified. the number of processes is obtained
from the OS as before. (Matt Nordhoff, Vincent Ladeuil)
Bug Fixes
- bzr+http servers no longer give spurious jail break errors when
serving branches inside a shared repository. (Andrew Bennetts, #348308)
- Errors during commit are handled more robustly so that knock-on errors
are less likely to occur, and will not obscure the original error if
they do occur. This fixes some causes of TooManyConcurrentRequests
and similar errors. (Andrew Bennetts, #429747, #243391)
- Launchpad URLs can now be resolved from behind proxies.
(Gordon Tyler, Vincent Ladeuil, #186920)
- Reduce the strictness for StaticTuple, instead add a debug flag
-Dstatic_tuple which will change apis to be strict and raise errors.
This way, most users won't see failures, but developers can improve
internals. (John Arbash Meinel, #471193)
- TreeTransform.adjust_path updates the limbo paths of descendants of adjusted
files. (Aaron Bentley)
- Unicode paths are now handled correctly and consistently by the smart
server. (Andrew Bennetts, Michael Hudson, #458762)
Improvements
- When reading index files, we now use a StaticTuple rather than a
plain tuple object. This generally gives a 20% decrease in peak
memory, and can give a performance boost up to 40% on large projects.
(John Arbash Meinel)
- Peak memory under certain operations has been reduced significantly.
(eg, 'bzr branch launchpad standalone' is cut in half)
(John Arbash Meinel)
Documentation
- Filtered views user documentation upgraded to refer to format 2a
instead of pre-2.0 formats. (Ian Clatworthy)
API Changes
- Remove deprecated CLIUIFactory. (Martin Pool)
- UIFactory now has new show_error, show_message and
show_warning methods, which can be hooked by non-text UIs.
(Martin Pool)
Internals
- Added bzrlib._simple_set_pyx. This is a hybrid between a Set and a
Dict (it only holds keys, but you can lookup the object located at a
given key). It has significantly reduced memory consumption versus the
builtin objects (1/2 the size of Set, 1/3rd the size of Dict). This is
used as the interning structure for StaticTuple objects.
(John Arbash Meinel)
- bzrlib._static_tuple_c.StaticTuple is now available and used by
the btree index parser and the chk map parser. This class functions
similarly to tuple objects. However, it can only point to a limited
collection of types. (Currently StaticTuple, str, unicode, None, bool,
int, long, float, but not subclasses). This allows us to remove it from
the garbage collector (it cannot be in a cycle), it also allows us to
intern the objects. In testing, this can reduce peak memory by 20-40%,
and significantly improve performance by removing objects from being
inspected by the garbage collector. (John Arbash Meinel)
- GroupCompressBlock._ensure_content() will now release the
zlib.decompressobj() when the first request is for all of the
content. (Previously it would only be released if you made a request for
part of the content, and then all of it later.) This turns out to be a
significant memory savings, as a zstream carries around approx 260kB
of internal state and buffers. (For branching bzr.dev this drops peak
memory from 382MB => 345MB.) (John Arbash Meinel)
- When streaming content between 2a format repositories, we now clear
caches from earlier versioned files. (So 'revisions' is cleared when we
start reading 'inventories', etc.) This can have a significant impact on
peak memory for initial copies (~200MB). (John Arbash Meinel)
Codename: | While the cat is away |
2.1.0b1: | 2009-10-14 |
This is the first development release in the new split "stable" and
"development" series. As such, the release is a snapshot of bzr.dev
without creating a release candidate first. This release includes a
fair amount of internal changes, with deprecated code being removed,
and several new feature developments. People looking for a stable code
base with only bugfixes should focus on the 2.0.1 release. All bugfixes
present in 2.0.1 are present in 2.1.0b1.
Highlights include support for bzr+ssh://host/~/homedir style URLs,
finer control over the plugin search path via extended BZR_PLUGIN_PATH
syntax, visible warnings when extension modules fail to load, and improved
error handling during unlocking.
New Features
Bazaar can now send mail through Apple OS X Mail.app.
(Brian de Alwis)
bzr+ssh and bzr paths can now be relative to home directories
specified in the URL. Paths starting with a path segment of ~ are
relative to the home directory of the user running the server, and paths
starting with ~user are relative to the home directory of the named
user. For example, for a user "bob" with a home directory of
/home/bob, these URLs are all equivalent:
- bzr+ssh://bob@host/~/repo
- bzr+ssh://bob@host/~bob/repo
- bzr+ssh://bob@host/home/bob/repo
If bzr serve was invoked with a --directory argument, then no
home directories outside that directory will be accessible via this
method.
This is a feature of bzr serve, so pre-2.1 clients will
automatically benefit from this feature when bzr on the server is
upgraded. (Andrew Bennetts, #109143)
Extensions can now be compiled if either Cython or Pyrex is available.
Currently Pyrex is preferred, but that may change in the future.
(Arkanes)
Give more control on BZR_PLUGIN_PATH by providing a way to refer to or
disable the user, site and core plugin directories.
(Vincent Ladeuil, #412930, #316192, #145612)
Bug Fixes
- Bazaar's native protocol code now correctly handles EINTR, which most
noticeably occurs if you break in to the debugger while connected to a
bzr+ssh server. You can now can continue from the debugger (by typing
'c') and the process continues. However, note that pressing C-in the
shell may still kill the SSH process, which is bug 162509, so you must
sent a signal to the bzr process specifically, for example by typing
kill -QUIT PID in another shell. (Martin Pool, #341535)
- bzr add in a tree that has files with \r or \n in the
filename will issue a warning and skip over those files.
(Robert Collins, #3918)
- bzr dpush now aborts if uncommitted changes (including pending merges)
are present in the working tree. The configuration option dpush_strict
can be used to set the default for this behavior.
(Vincent Ladeuil, #438158)
- bzr merge and bzr remove-tree now requires --force if pending
merges are present in the working tree.
(Vincent Ladeuil, #426344)
- Clearer message when Bazaar runs out of memory, instead of a MemoryError
traceback. (Martin Pool, #109115)
- Don't give a warning on Windows when failing to import _readdir_pyx
as it is never built. (John Arbash Meinel, #430645)
- Don't restrict the command name used to run the test suite.
(Vincent Ladeuil, #419950)
- FTP transports were built differently when the kerberos python module was
present leading to obscure failures related to ASCII/BINARY modes.
(Vincent Ladeuil, #443041)
- Network streams now decode adjacent records of the same type into a
single stream, reducing layering churn. (Robert Collins)
- PreviewTree behaves correctly when get_file_mtime is invoked on an unmodified
file. (Aaron Bentley, #251532)
- Registry objects should not use iteritems() when asked to use items().
(Vincent Ladeuil, #430510)
- Weave based repositories couldn't be cloned when committers were using
domains or user ids embedding '.sig'. Now they can.
(Matthew Fuller, Vincent Ladeuil, #430868)
Improvements
- Revision specifiers can now be given in a more DWIM form, without
needing explicit prefixes for specifiers like tags or revision id's.
See bzr help revisionspec for full details. (Matthew Fuller)
- Bazaar gives a warning before exiting, and writes into .bzr.log, if
compiled extensions can't be loaded. This typically indicates a
packaging or installation problem. In this case Bazaar will keep
running using pure-Python versions, but this may be substantially
slower. The warning can be disabled by setting
ignore_missing_extensions = True in bazaar.conf.
See also <https://answers.launchpad.net/bzr/+faq/703>.
(Martin Pool, #406113, #430529)
- Secondary errors that occur during Branch.unlock and Repository.unlock
no longer obscure the original error. These methods now use a new
decorator, only_raises. This fixes many causes of
TooManyConcurrentRequests and similar errors.
(Andrew Bennetts, #429747)
Documentation
- Describe the new shell-like test feature. (Vincent Ladeuil)
- Help on hooks no longer says 'Not deprecated' for hooks that are
currently supported. (Ian Clatworthy, #422415)
API Changes
- bzrlib.user_encoding has been removed; use
bzrlib.osutils.get_user_encoding instead. (Martin Pool)
- bzrlib.tests now uses stopTestRun for its TestResult
subclasses - the same as python's unittest module. (Robert Collins)
- diff._get_trees_to_diff has been renamed to
diff.get_trees_and_branches_to_diff. It is now a public API, and it
returns the old and new branches. (Gary van der Merwe)
- bzrlib.trace.log_error, error and info have been deprecated.
(Martin Pool)
- MutableTree.has_changes() does not require a tree parameter anymore. It
now defaults to comparing to the basis tree. It now checks for pending
merges too. Merger.check_basis has been deprecated and replaced by the
corresponding has_changes() calls. Merge.compare_basis,
Merger.file_revisions and Merger.ensure_revision_trees have also
been deprecated.
(Vincent Ladeuil, #440631)
- ProgressTask.note is deprecated.
(Martin Pool)
Internals
- Added -Drelock debug flag. It will note a message every time a
repository or branch object is unlocked then relocked the same way.
(Andrew Bennetts)
- BTreeLeafParser.extract_key has been tweaked slightly to reduce
mallocs while parsing the index (approx 3=>1 mallocs per key read).
This results in a 10% speedup while reading an index.
(John Arbash Meinel)
- The bzrlib.lsprof module has a new class BzrProfiler which makes
profiling in some situations like callbacks and generators easier.
(Robert Collins)
Testing
- Passing --lsprof-tests -v to bzr selftest will cause lsprof output to
be output for every test. Note that this is very verbose! (Robert Collins)
- Setting BZR_TEST_PDB=1 when running selftest will cause a pdb
post_mortem to be triggered when a test failure occurs. (Robert Collins)
- Shell-like tests can now be written. Code in bzrlib/tests/script.py ,
documentation in developers/testing.txt for details.
(Vincent Ladeuil)
- Some tests could end up with the same id, that was dormant for
a long time.
(Vincent Ladeuil, #442980)
- Stop showing the number of tests due to missing features in the test
progress bar. (Martin Pool)
- Test parameterisation now does a shallow copy, not a deep copy of the test
to be parameterised. This is not expected to break external use of test
parameterisation, and is substantially faster. (Robert Collins)
- Tests that try to open a bzr dir on an arbitrary transport will now
fail unless they have explicitly permitted the transport via
self.permit_url. The standard test factories such as self.get_url
will permit the URLs they provide automatically, so only exceptional
tests should need to do this. (Robert Collins)
- The break-in test no longer cares about clean shutdown of the child,
instead it is happy if the debugger starts up. (Robert Collins)
- The full test suite is expected to pass when the C extensions are not
present. (Vincent Ladeuil, #430749)
Compatibility Breaks
- Launchpad has announced that the edge.launchpad.net instance is
deprecated and may be shut down in the future
<http://blog.launchpad.net/general/edge-is-deprecated>. Bazaar has therefore
been updated in this release to talk to the main (launchpad.net) servers,
rather than the edge ones. (Vincent Ladeuil, #583667)
New Features
Bug Fixes
- Avoid spurious ValueErrors when autopacking a subset of the repository,
and seeing a revision without its related inventory
(John Arbash Meinel, #437003)
- Avoid UnicodeDecodeError in bzr add with multiple files under a non-ascii
path on windows from symlink support addition. (Martin [gz], #686611)
- Fix activity reporting for pycurl when using https with some
implementations of curl. (Vincent Ladeuil, #614713)
Improvements
Documentation
API Changes
Internals
Testing
The sixth release in our 2.0 series addresses several user-inconvenience
bugs. None are critical, but upgrading is recommended for all users on
earlier 2.0 releases.
Bug Fixes
- Additional merges after an unrelated branch has been merged with its
history no longer crash when deleted files are involved.
(Vincent Ladeuil, John Arbash Meinel, #375898)
- bzr add SYMLINK/FILE now works properly when the symlink points to a
previously-unversioned directory within the tree: the directory is
marked versioned too.
(Martin Pool, #192859)
- bzr commit SYMLINK now works, rather than trying to commit the
target of the symlink.
(Martin Pool, John Arbash Meinel, #128562)
- bzr revert now only takes write lock on working tree, instead of on
both working tree and branch.
(Danny van Heumen, #498409)
- bzr upgrade now creates the backup.bzr directory with the same
permissions as .bzr directory on a POSIX OS.
(Parth Malwankar, #262450)
- Don't traceback trying to unversion children files of an already
unversioned directory. (Vincent Ladeuil, #494221)
- Don't traceback when a lockdir's held/info file is corrupt (e.g.
contains only NUL bytes). Instead warn the user, and allow bzr
break-lock to remove it. (Andrew Bennetts, #619872)
- Fix AttributeError on parent.children when adding a file under a
directory that was a symlink in the previous commit.
(Martin Pool, #192859)
- Prevent CHKMap.apply_delta from generating non-canonical CHK maps,
which can result in "missing referenced chk root keys" errors when
fetching from repositories with affected revisions.
(Andrew Bennetts, #522637)
- Raise ValueError instead of a string exception.
(John Arbash Meinel, #586926)
- Reduce peak memory by one copy of compressed text.
(John Arbash Meinel, #566940)
- Repositories accessed via a smart server now reject being stacked on a
repository in an incompatible format, as is the case when accessing them
via other methods. This was causing fetches from those repositories via
a smart server (e.g. using bzr branch) to receive invalid data.
(Andrew Bennetts, #562380)
- Selftest with versions of subunit that support stopTestRun will no longer
error. This error was caused by 2.0 not being updated when upstream
python merged the end of run patch, which chose stopTestRun rather than
done. (Robert Collins, #571437)
- When passing a file to UTF8DirReader make sure to close the current
directory file handle after the chdir fails. Otherwise when passing many
filenames into a command line bzr status we would leak descriptors.
(John Arbash Meinel, #583486)
Testing
- build_tree_contents can create symlinks.
(Martin Pool, John Arbash Meinel)
This fifth release in our 2.0 series addresses several user-inconvenience
bugs. None are critical, but upgrading is recommended for all users on
earlier 2.0 releases.
Bug Fixes
- Avoid malloc(0) in patiencediff, which is non-portable.
(Martin Pool, #331095)
- Concurrent autopacking is more resilient to already-renamed pack files.
If we find that a file we are about to obsolete is already obsoleted, we
do not try to rename it, and we leave the file in obsolete_packs.
The code is also fault tolerant if a file goes missing, assuming that
another process already removed the file.
(John Arbash Meinel, Gareth White, #507557)
- Cope with the lockdir held/info file being empty, which seems to
happen fairly often if the process is suddenly interrupted while taking
a lock.
(Martin Pool, #185103)
- Give the warning about potentially slow cross-format fetches much
earlier on in the fetch operation. Don't show this message during
upgrades, and show the correct format indication for remote
repositories.
(Martin Pool, #456077, #515356, #513157)
- Handle renames correctly when there are files or directories that
differ only in case. (Chris Jones, Martin Pool, #368931)
- If bzr push --create-prefix triggers an unexpected NoSuchFile
error, report that error rather than failing with an unhelpful
UnboundLocalError.
(Andrew Bennetts, #423563)
- Running bzr command without any arguments now shows bzr
version number along with rest of the help text.
(Parth Malwankar, #369501)
- Use osutils.O_NOINHERIT for some files on win32 to avoid PermissionDenied
errors.
(Inada Naoki, #524560)
Documentation
- Added location-alias help topic.
(Andrew Bennetts, #337834)
- Fixed CHM generation by moving the NEWS section template into
a separate file. (Ian Clatworthy, #524184)
Codename: | smooth sailing |
2.0.4: | 2010-01-21 |
The fourth bugfix-only release in the 2.0 series contains more than a
dozen bugfixes relative to 2.0.3. The primary focus is on handling
interruptions and concurrent operations more cleanly, there is also a fair
improvement to bzr export when exporting a remote branch.
Bug Fixes
- bzr annotate on another branch with -r branch:... no longer
fails with an ObjectNotLocked error. (Andrew Bennetts, #496590)
- bzr export dir now requests all file content as a record stream,
rather than requsting the file content one file-at-a-time. This can make
exporting over the network significantly faster (54min => 9min in one
case). (John Arbash Meinel, #343218)
- bzr serve no longer slowly leaks memory. The compiled
bzrlib.bencode.Encoder() class was using __del__ to cleanup and
free resources, and it should have been using __dealloc__.
This will likely have an impact on any other process that is serving for
an extended period of time. (John Arbash Meinel, #494406)
- Check for SIGINT (Ctrl-C) and other signals immediately if readdir
returns EINTR by calling PyErr_CheckSignals. This affected the
optional _readdir_pyx extension. (Andrew Bennetts, #495023)
- Concurrent autopacks will no longer lose a newly created pack file.
There was a race condition, where if the reload happened at the right
time, the second packer would forget the name of the newly added pack
file. (John Arbash Meinel, Gareth White, #507566)
- Give a clearer message if the lockdir disappears after being apparently
successfully taken. (Martin Pool, #498378)
- Give a warning when fetching between repositories (local or remote) with
sufficiently different formats that the content will need to be
serialized (ie InterDifferingSerializer or inventory-deltas), so
the user has a clue that upgrading could make it faster.
(Martin Pool, #456077)
- If we fail to open ~/.bzr.log write a clear message to stderr rather
than using warning(). The log file is opened before logging is set
up, and it leads to very confusing: 'no handlers for "bzr"' messages for
users, rather than something nicer.
(John Arbash Meinel, Barry Warsaw, #503886)
- Refuse to build with any Pyrex 0.9.4 release, as they have known bugs.
(Martin Pool, John Arbash Meinel, #449372)
- setup.py bdist_rpm now properly finds extra files needed for the
build. (there is still the distutils bug
http://bugs.python.org/issue644744) (Joe Julian, #175839)
- The 2a format wasn't properly restarting autopacks when something
changed underneath it (like another autopack). Now concurrent
autopackers will properly succeed. (John Arbash Meinel, #495000)
- TreeTransform can now handle when a delta says that the file id for
the tree root changes. Rather than trying to rename your working
directory, or failing early saying that you can't have multiple
tree roots. This also fixes revert, update, and pull when the root id
changes. (John Arbash Meinel, #494269, #504390)
- _update_current_block no longer suppresses exceptions, so ^C at just
the right time will get propagated, rather than silently failing to move
the block pointer. (John Arbash Meinel, Gareth White, #495023)
Testing
- We have a new test_source that ensures all pyrex cdef functions
handle exceptions somehow. (Possibly by setting # cannot_raise
rather than an except ?: clause.) This should help prevent bugs like
bug #495023. (John Arbash Meinel)
Codename: | little italy |
2.0.3: | 2009-12-14 |
The third stable release of Bazaar has a small handful of bugfixes. As
expected, this has no internal or external compatibility changes versus
2.0.2 (or 2.0.0).
Bug Fixes
- bzr push --use-existing-dir no longer crashes if the directory
exists but contains an invalid .bzr directory.
(Andrew Bennetts, #423563)
- Content filters are now applied correctly after pull, merge and switch.
(Ian Clatworthy, #385879)
- Fix a potential segfault in the groupcompress hash map handling code.
When inserting new entries, if the final hash bucket was empty, we could
end up trying to access if (last_entry+1)->ptr == NULL.
(John Arbash Meinel, #490228)
- Improve "Binary files differ" hunk handling. (Aaron Bentley, #436325)
Codename: | after the scare |
2.0.2: | 2009-11-02 |
The second in our "let's keep the stable bugfixes flowing" series. As
expected this has a few (~9) bugfixes relative to 2.0.1, and no major api
changes or features.
Bug Fixes
- Avoid "NoneType has no attribute st_mode" error when files disappear
from a directory while it's being read. (Martin Pool, #446033)
- Content filters are now applied correctly after revert.
(Ian Clatworthy)
- Diff parsing handles "Binary files differ" hunks. (Aaron Bentley, #436325)
- Fetching from stacked pre-2a repository via a smart server no longer
fails intermittently with "second push failed to complete".
(Andrew Bennetts, #437626)
- Fix typos left after test_selftest refactoring.
(Vincent Ladeuil, Matt Nordhoff, #461149)
- Fixed ObjectNotLocked errors during bzr log -r NNN somefile.
(Andrew Bennetts, #445171)
- PreviewTree file names are not limited by the encoding of the temp
directory's filesystem. (Aaron Bentley, #436794)
Improvements
- bzr log now read-locks branches exactly once, so makes better use of
data caches. (Andrew Bennetts)
Documentation
- Filtered views user documentation upgraded to refer to format 2a
instead of pre-2.0 formats. (Ian Clatworthy)
Codename: | Stability First |
2.0.1: | 2009-10-14 |
The first of our new ongoing bugfix-only stable releases has arrived. It
includes a collection of 12 bugfixes applied to bzr 2.0.0, but does not
include any of the feature development in the 2.1.0 series.
Bug Fixes
- bzr add in a tree that has files with \r or \n in the
filename will issue a warning and skip over those files.
(Robert Collins, #3918)
- bzr will attempt to authenticate with SSH servers that support
keyboard-interactive auth but not password auth when using
Paramiko. (Andrew Bennetts, #433846)
- Fixed fetches from a stacked branch on a smart server that were failing
with some combinations of remote and local formats. This was causing
"unknown object type identifier 60" errors. (Andrew Bennetts, #427736)
- Fixed ObjectNotLocked errors when doing some log and diff operations
on branches via a smart server. (Andrew Bennetts, #389413)
- Handle things like bzr add foo and bzr rm foo when the tree is
at the root of a drive. osutils._cicp_canonical_relpath always
assumed that abspath() returned a path that did not have a trailing
/, but that is not true when working at the root of the filesystem.
(John Arbash Meinel, Jason Spashett, #322807)
- Hide deprecation warnings for 'final' releases for python2.6.
(John Arbash Meinel, #440062)
- Improve the time for bzr log DIR for 2a format repositories.
We had been using the same code path as for <2a formats, which required
iterating over all objects in all revisions.
(John Arbash Meinel, #374730)
- Make sure that we unlock the tree if we fail to create a TreeTransform
object when doing a merge, and there is limbo, or pending-deletions
directory. (Gary van der Merwe, #427773)
- Occasional IndexError on renamed files have been fixed. Operations that
set a full inventory in the working tree will now go via the
apply_inventory_delta code path which is simpler and easier to
understand than dirstates set_state_from_inventory method. This may
have a small performance impact on operations built on _write_inventory,
but such operations are already doing full tree scans, so no radical
performance change should be observed. (Robert Collins, #403322)
- Retrieving file text or mtime from a _PreviewTree has good performance when
there are many changes. (Aaron Bentley)
- The CHK index pages now use an unlimited cache size. With a limited
cache and a large project, the random access of chk pages could cause us
to download the entire cix file many times.
(John Arbash Meinel, #402623)
- When a file kind becomes unversionable after being added, a sensible
error will be shown instead of a traceback. (Robert Collins, #438569)
Documentation
- Improved README. (Ian Clatworthy)
- Improved upgrade documentation for Launchpad branches.
(Barry Warsaw)
2.0.0: | 2009-09-22 |
Codename: | Instant Karma |
This release of Bazaar makes the 2a (previously 'brisbane-core') format
the default when new branches or repositories are created. This format is
substantially smaller and faster for many operations. Most of the work in
this release focuses on bug fixes and stabilization, covering both 2a and
previous formats. (See the Upgrade Guide for information on migrating
existing projects.)
This release also improves the documentation content and presentation,
including adding Windows HtmlHelp manuals.
The Bazaar team decided that 2.0 will be a long-term supported release,
with bugfix-only 2.0.x releases based on it, continuing for at least six
months or until the following stable release.
Changes from 2.0.0rc2 to final
- Officially branded as 2.0.0 rather than 2.0 to clarify between things
that "want to happen on the 2.0.x stable series" versus things that want
to "land in 2.0.0". (Changes how bzrlib._format_version_tuple() handles
micro = 0.) (John Arbash Meinel)
New Features
- Added post_commit hook for mutable trees. This allows the keywords
plugin to expand keywords on files changed by the commit.
(Ian Clatworthy, #408841)
Bug Fixes
- Bazaar's native protocol code now correctly handles EINTR, which most
noticeably occurs if you break in to the debugger while connected to a
bzr+ssh server. You can now can continue from the debugger (by typing
'c') and the process continues. However, note that pressing C-in the
shell may still kill the SSH process, which is bug 162509, so you must
sent a signal to the bzr process specifically, for example by typing
kill -QUIT PID in another shell. (Martin Pool, #341535)
- bzr check in pack-0.92, 1.6 and 1.9 format repositories will no
longer report incorrect errors about Missing inventory ('TREE_ROOT', ...)
(Robert Collins, #416732)
- bzr info -v on a 2a format still claimed that it was a "Development
format" (John Arbash Meinel, #424392)
- bzr log stacked-branch shows the full log including
revisions that are in the fallback repository. (Regressed in 2.0rc1).
(John Arbash Meinel, #419241)
- Clearer message when Bazaar runs out of memory, instead of a MemoryError
traceback. (Martin Pool, #109115)
- Conversion to 2a will create a single pack for all the new revisions (as
long as it ran without interruption). This improves both bzr upgrade
and bzr pull or bzr merge from local branches in older formats.
The autopack logic that occurs every 100 revisions during local
conversions was not returning that pack's identifier, which resulted in
the partial packs created during the conversion not being consolidated
at the end of the conversion process. (Robert Collins, #423818)
- Fetches from 2a to 2a are now again requested in 'groupcompress' order.
Groups that are seen as 'underutilized' will be repacked on-the-fly.
This means that when the source is fully packed, there is minimal
overhead during the fetch, but if the source is poorly packed the result
is a fairly well packed repository (not as good as 'bzr pack' but
good-enough.) (Robert Collins, John Arbash Meinel, #402652)
- Fix a potential segmentation fault when doing 'log' of a branch that had
ghosts in its mainline. (Evaluating None as a tuple is bad.)
(John Arbash Meinel, #419241)
- groupcompress sort order is now more stable, rather than relying on
topo_sort ordering. The implementation is now
KnownGraph.gc_sort. (John Arbash Meinel)
- Local data conversion will generate correct deltas. This is a critical
bugfix vs 2.0rc1, and all 2.0rc1 users should upgrade to 2.0rc2 before
converting repositories. (Robert Collins, #422849)
- Network streams now decode adjacent records of the same type into a
single stream, reducing layering churn. (Robert Collins)
- Prevent some kinds of incomplete data from being committed to a 2a
repository, such as revisions without inventories, a missing chk_bytes
record for an inventory, or a missing text referenced by an inventory.
(Andrew Bennetts, #423506, #406687)
Documentation
- Fix assertion error about "_remember_remote_is_before" when pushing to
older smart servers.
(Andrew Bennetts, #418931)
- Help on hooks no longer says 'Not deprecated' for hooks that are
currently supported. (Ian Clatworthy, #422415)
- PDF and CHM (Windows HtmlHelp) formats are now supported for the
user documentation. The HTML documentation is better broken up into
topics. (Ian Clatworthy)
- The developer and foreign language documents are now separated
out so that searching in the HTML and CHM files produces more
useful results. (Ian Clatworthy)
- The main table of contents now provides links to the new Migration Docs
and Plugins Guide. (Ian Clatworthy)
Codename: | no worries |
2.0.0rc1: | 2009-08-26 |
Compatibility Breaks
- The default format for bzr is now 2a. This format brings many
significant performance and size improvements. bzr can pull from
any existing repository into a 2a one, but can only transfer
from 2a into rich-root repositories. The Upgrade guide
has more information about this change. (Robert Collins)
- On Windows auto-detection of Putty's plink.exe is disabled.
Default SSH client for Windows is paramiko. User still can force
usage of plink if explicitly set environment variable BZR_SSH=plink.
(#414743, Alexander Belchenko)
New Features
- bzr branch --switch can now switch the checkout in the current directory
to the newly created branch. (Lukáš Lalinský)
Bug Fixes
- Further tweaks to handling of bzr add messages about ignored files.
(Jason Spashett, #76616)
- Fetches were being requested in 'groupcompress' order, but weren't
recombining the groups. Thus they would 'fragment' to get the correct
order, but not 'recombine' to actually benefit from it. Until we get
recombining to work, switching to 'unordered' fetches avoids the
fragmentation. (John Arbash Meinel, #402645)
- Fix a pycurl related test failure on karmic by recognizing an error
raised by newer versions of pycurl.
(Vincent Ladeuil, #306264)
- Fix a test failure on karmic by making a locale test more robust.
(Vincent Ladeuil, #413514)
- Fix IndexError printing CannotBindAddress errors.
(Martin Pool, #286871)
- Fix "Revision ... not present" errors when upgrading stacked branches,
or when doing fetches from a stacked source to a stacked target.
(Andrew Bennetts, #399140)
- bzr branch of 2a repositories over HTTP is much faster. bzr now
batches together small fetches from 2a repositories, rather than
fetching only a few hundred bytes at a time.
(Andrew Bennetts, #402657)
Improvements
- A better description of the platform is shown in crash tracebacks, bzr
--version and bzr selftest.
(Martin Pool, #409137)
- bzr can now (again) capture crash data through the apport library,
so that a single human-readable file can be attached to bug reports.
This can be disabled by using -Dno_apport on the command line, or by
putting no_apport into the debug_flags section of
bazaar.conf.
(Martin Pool, Robert Collins, #389328)
- bzr push locally on windows will no longer give a locking error with
dirstate based formats. (Robert Collins)
- bzr shelve and bzr unshelve now work on windows.
(Robert Collins, #305006)
- Commit of specific files no longer prevents using the iter_changes
codepath. On 2a repositories, commit of specific files should now be as
fast, or slightly faster, than a full commit. (Robert Collins)
- The internal core code that handles specific file operations like
bzr st FILENAME or bzr commit FILENAME has been changed to
include the parent directories if they have altered, and when a
directory stops being a directory its children are always included. This
fixes a number of causes for InconsistentDelta errors, and permits
faster commit of specific paths. (Robert Collins, #347649)
Documentation
- New developer documentation for content filtering.
(Martin Pool)
API Changes
- bzrlib.shelf_ui has had the from_args convenience methods of its
classes changed to manage lock lifetime of the trees they open in a way
consistent with reader-exclusive locks. (Robert Collins, #305006)
Testing
Codename: | nein nein nein! |
1.18.1: | 2009-09-09 |
This release fixes two small but worthwhile bugs relevant to users on
Microsoft Windows: some commands that failed on with locking errors will
now work, and a bug that caused poor performance after committing a file
with line-ending conversion has now been fixed. It also fixes a bug in
pushing to older servers.
Bug Fixes
- Fixed a problem where using content filtering and especially end-of-line
conversion will commit too many copies a file.
(Martin Pool, #415508)
- Fix assertion error about _remember_remote_is_before in
set_tags_bytes when pushing to older smart servers.
(Andrew Bennetts, Alexander Belchenko, #418931)
Improvements
- bzr push locally on Windows will no longer give a locking error with
dirstate based formats. (Robert Collins)
- bzr shelve and bzr unshelve now work on Windows.
(Robert Collins, #305006)
API Changes
- bzrlib.shelf_ui has had the from_args convenience methods of its
classes changed to manage lock lifetime of the trees they open in a way
consistent with reader-exclusive locks. (Robert Collins, #305006)
- Tree.path_content_summary may return a size of None, when called on
a tree with content filtering where the size of the canonical form
cannot be cheaply determined. (Martin Pool)
- When manually creating transport servers in test cases, a new helper
TestCase.start_server that registers a cleanup and starts the server
should be used. (Robert Collins)
Compatibility Breaks
- Committing directly to a stacked branch from a lightweight checkout will
no longer work. In previous versions this would appear to work but would
generate repositories with insufficient data to create deltas, leading
to later errors when branching or reading from the repository.
(Robert Collins, bug #375013)
New Features
Bug Fixes
- Fetching from 2a branches from a version-2 bzr protocol would fail to
copy the internal inventory pages from the CHK store. This cannot happen
in normal use as all 2a compatible clients and servers support the
version-3 protocol, but it does cause test suite failures when testing
downlevel protocol behaviour. (Robert Collins)
- Fix a test failure on karmic by making a locale test more robust.
(Vincent Ladeuil, #413514)
- Fixed "Pack ... already exists" error when running bzr pack on a
fully packed 2a repository. (Andrew Bennetts, #382463)
- Further tweaks to handling of bzr add messages about ignored files.
(Jason Spashett, #76616)
- Properly handle fetching into a stacked branch while converting the
data, especially when there are also ghosts. The code was filling in
parent inventories incorrectly, and also not handling when one of the
parents was a ghost. (John Arbash Meinel, #402778, #412198)
- RemoteStreamSource.get_stream_for_missing_keys will fetch CHK
inventory pages when appropriate (by falling back to the vfs stream
source). (Andrew Bennetts, #406686)
- StreamSource generates rich roots from non-rich root sources correctly
now. (Andrew Bennetts, #368921)
- When deciding whether a repository was compatible for upgrading or
fetching, we previously incorrectly checked the default repository
format for the bzrdir format, rather than the format that was actually
present on disk. (Martin Pool, #408824)
Improvements
- A better description of the platform is shown in crash tracebacks, bzr
--version and bzr selftest.
(Martin Pool, #409137)
- Cross-format fetches (such as between 1.9-rich-root and 2a) via the
smart server are more efficient now. They send inventory deltas rather
than full inventories. The smart server has two new requests,
Repository.get_stream_1.19 and Repository.insert_stream_1.19 to
support this. (Andrew Bennetts, #374738, #385826)
- Extracting the full ancestry and computing the merge_sort is now
significantly faster. This effects things like bzr log -n0. (For
example, bzr log -r -10..-1 -n0 bzr.dev is 2.5s down to 1.0s.
(John Arbash Meinel)
Documentation
API Changes
Internals
- -Dstrict_locks can now be used to check that read and write locks
are treated properly w.r.t. exclusivity. (We don't try to take an OS
read lock on a file that we already have an OS write lock on.) This is
now set by default for all tests, if you have a test which cannot be
fixed, you can use self.thisFailsStrictLockCheck() as a
compatibility knob. (John Arbash Meinel)
- InterDifferingSerializer is now only used locally. Other fetches that
would have used InterDifferingSerializer now use the more network
friendly StreamSource, which now automatically does the same
transformations as InterDifferingSerializer. (Andrew Bennetts)
- KnownGraph now has a .topo_sort and .merge_sort member which
are implemented in pyrex and significantly faster. This is exposed along
with CombinedGraphIndex.find_ancestry() as
VersionedFiles.get_known_graph_ancestry(keys).
(John Arbash Meinel)
- RemoteBranch.open now honours ignore_fallbacks correctly on bzr-v2
protocols. (Robert Collins)
- The index code now has some specialized routines to extract the full
ancestry of a key in a more efficient manner.
CombinedGraphIndex.find_ancestry(). (Time to get ancestry for
bzr.dev drops from 1.5s down to 300ms. For OOo from 33s => 10.5s) (John
Arbash Meinel)
Testing
- Install the test ssl certificate and key so that installed bzr
can run the https tests. (Denys Duchier, #392401)
Codename: | little traveller |
1.18: | 2009-08-20 |
1.18rc1: | 2009-08-10 |
This release of Bazaar marches on towards the 2.0 release in which the 2a
'brisbane-core' format becomes generally recommended. Most of the work in
this release now focusses on bug fixes and stabilization, covering both 2a
and previous formats. There is a new text-mode interactive merge feature,
a new guide to migration to 2a format in the user documentation, and
pushing branches to a smart server is now much faster.
The Bazaar team decided that 2.0 will be a long-term supported release,
with bugfix-only releases based on it continuing for at least six months
or until the following stable release.
There are no changes from 1.18rc1 to 1.18.
New Features
- bzr merge --interactive applies a user-selected portion of the
merge. The UI is similar to shelve. (Aaron Bentley)
- bzr reconfigure now takes options --stacked-on URL and
--unstacked to change stacking of a branch.
(Martin Pool, #391411)
Bug Fixes
- Annotating on a stacked branch will now succeed in simple scenarios.
There are still some complex scenarios where it will fail (bug #399884)
(John Arbash Meinel, #393366)
- A progress bar is no longer left dangling when bzr selftest
completes, and the progress bar updates with zero latency so the
displayed test name is always the one that's actually running.
(Martin Pool, #123688)
- Authenticating against an SSH server now uses auth_none to determine
if password authentication is even supported. This fixes a bug where
users would be prompted for a launchpad password, even though launchpad
only supports publickey authentication. (John Arbash Meinel, #375867)
- BranchBuilder now accepts timezone to avoid test failures in countries far
from GMT. (Vincent Ladeuil, #397716)
- bzr commit no longer saves the unversioning of missing files until
the commit has completed on the branch. This means that aborting a
commit that found a missing file will leave the tree unedited.
(Robert Collins, #282402)
- bzr mv no longer takes out branch locks, which allows it to work
when the branch is readonly. (Robert Collins, #216541)
- bzr revert . no longer generates an InconsistentDelta error when
there are missing subtrees. (Robert Collins, #367632)
- bzr send now generates valid bundles with --2a formats. However,
do to internal changes necessary to support this, older clients will
fail when trying to insert them. For newer clients, the bundle can be
used to apply the changes to any rich-root compatible format.
(John Arbash Meinel, #393349)
- Cope with FTP servers that don't support restart/append by falling back
to reading and then rewriting the whole file, such as TahoeLAFS. (This
fallback may be slow for some access patterns.) (Nils Durner, #294709)
- Encode the paths in mbcs encoding on Windows when spawning an
external diff client. This at least allows supporting filenames that are
not ascii, but are present in the current locale. Ideally we would be
able to pass the Unicode path, but that would be client dependent.
(John Arbash Meinel, #382709)
- Fix a compile bug on Solaris having to do with const and
pointer-to-pointers. (John Arbash Meinel, #408441)
- Fixed a NameError that occurs when merging or pulling from a URL that
causes a redirection loop when bzr tries to read a URL as a bundle.
(Andrew Bennetts, #400847)
- Fix AttributeError: 'TestUIFactory' object has no attribute 'tick'
running send and similar commands on 2a formats.
(Martin Pool, #408201)
- Fix crash in some invocations of bzr status in format 2a.
(Martin Pool, #403523)
- Fixed export to existing directory: if directory is empty then export
will succeed, otherwise it fails with error.
(Alexander Belchenko, #406174)
- Fixed spurious "Source branch does not support stacking" warning when
pushing. (Andrew Bennetts, #388908)
- Fixed spurious transport activity indicator appearing while tests are
running. (Martin Pool, #343532)
- Merge now correctly handles empty right-hand revision specs.
(Aaron Bentley, #333961)
- Renames to lexographically lower basenames in trees that have never been
committed to will no longer corrupt the dirstate. This was caused by an
bug in the dirstate update_minimal method. (Robert Collins, #395556)
- Requests for unknown methods no longer cause the smart server to log
lots of backtraces about UnknownSmartMethod, do_chunk or
do_end. (Andrew Bennetts, #338561)
- Shelve will not shelve the initial add of the tree root. (Aaron Bentley)
- Streaming from bzr servers where there is a chain of stacked branches
(A stacked on B stacked on C) will now work. (Robert Collins, #406597)
- The environment variable BZR_PROGRESS_BAR set to either text or none
always forces progress bars either on or off respectively. Otherwise,
they're turned on if TERM is not dumb and stderr is a terminal.
bzr always uses the 'text' user interface when run as a command, so
BZR_USE_TEXT_UI is no longer needed.
(Martin Pool, #339385, #387717)
- The optional _knit_load_data_pyx C extension was never being
imported. This caused significant slowdowns when reading data from
repositories. (Andrew Bennetts, #405653)
- The --hardlink option to branch and checkout is not
supported at the moment on workingtree formats that can do content
filtering. (See <https://bugs.launchpad.net/bzr/+bug/408193>.)
bzr now says so, rather than just ignoring the option. (Martin Pool)
- There was a bug in osutils.relpath that was only triggered on
Windows. Essentially if you were at the root of a drive, and did
something to a branch/repo on another drive, we would go into an
infinite loop while trying to find a 'relative path'.
(John Arbash Meinel, #394227)
- WorkingTree4.unversion will no longer fail to unversion ids which
were present in a parent tree but renamed in the working tree.
(Robert Collins, #187207)
Improvements
- Can now rename/move files even if they have been removed from the inventory.
(Marius Kruger)
- Pushing branches with tags via bzr:// and bzr+ssh:// is much
faster, using a new Branch.set_tags_bytes smart server verb rather
than VFS methods. For example, pushes of small branches with tags take
11 rather than 18 smart server requests. (Andrew Bennetts, #398608)
- Sending Ctrl-Break on Windows will now drop you into the debugger, in
the same way that sending Ctrl-\ does on other platforms.
(John Arbash Meinel)
Documentation
- Added Bazaar 2.0 Upgrade Guide. (Ian Clatworthy)
API Changes
- CLIUIFactory is deprecated; use TextUIFactory instead if you
need to subclass or create a specific class, or better yet the existing
make_ui_for_terminal. SilentUIFactory is clarified to do no
user interaction at all, rather than trying to read from stdin but not
writing any output, which would be strange if reading prompts or
passwords. (Martin Pool)
- New TransformPreview.commit() allows committing without a working tree.
(Aaron Bentley)
- pb parameter to TextTestResult is deprecated and ignored.
(Martin Pool)
- ProgressTasks now prefer to talk direct to their ProgressView not to the
UIFactory.
(Martin Pool)
- WorkingTree._check now requires a references dict with keys matching
those returned by WorkingTree._get_check_refs. (Robert Collins)
Internals
- CHKInventory.path2id uses the parent_id to basename hash to avoid
reading the entries along the path, reducing work to lookup ids from
paths. (Robert Collins)
- CHKMap.apply_delta now raises InconsistentDelta if a delta adds
as new a key which was already mapped. (Robert Collins)
- Inventory delta application catches more cases of corruption and can
prevent corrupt deltas from affecting consistency of data structures on
disk. (Robert Collins)
- --subunit support now adds timestamps if the subunit version supports
it. (Robert Collins)
- The Windows all-in-one installer now bundles the PyQt image format
plugins, which allows previewing more images as part of 'qdiff'.
(Alexander Belchenko)
Testing
- Merge directive cherrypick tests must use the same root id.
(Martin Pool, #409684)
- Spurious failure in check tests on rich-root formats fixed.
(Martin Pool, #408199)
- The bzrlib.tests.TextTestRunner will no longer call
countTestsCases on the test being run. Progress information is
instead handled by having the test passed in call result.progress
before running its contents. This improves the behaviour when using
TextTestRunner with test suites that don't support
countTestsCases. (Robert Collins)
End user testing of the 2a format revealed two serious bugs. The first,
#365615, caused bzr to raise AbsentContentFactory errors when autopacking.
This meant that commits or pushes to 2a-format repositories failed
intermittently.
The second bug, #390563, caused the smart server to raise AbsentContentFactory
when streaming 2a stacked 2a-format branches. This particularly affected
branches stored on Launchpad in the 2a format.
Both of these bugs cause command failures only, neither of them cause data
corruption or data loss. And, of course, both of these bugs are now fixed.
Bug Fixes
- We now properly request a more minimal set of file texts when fetching
multiple revisions. (Robert Collins, John Arbash Meinel, #390563)
- Repositories using CHK pages (which includes the new 2a format) will no
longer error during commit or push operations when an autopack operation
is triggered. (Robert Collins, #365615)
- chk_map.iter_interesting_nodes now properly uses the intersection
of referenced nodes rather than the union to determine what
uninteresting pages we still need to look at. Prior to this,
incrementally pushing to stacked branch would push the minimal data, but
fetching everything would request extra texts. There are some unhandled
cases wrt trees of different depths, but this fixes the common cases.
(Robert Collins, John Arbash Meinel, #390563)
- GroupCompress repositories now take advantage of the pack hints
parameter to permit cross-format fetching to incrementally pack the
converted data. (Robert Collins)
- Repository.commit_write_group now returns opaque data about what
was committed, for passing to the Repository.pack. Repositories
without atomic commits will still return None. (Robert Collins)
- Repository.pack now takes an optional hint parameter
which will support doing partial packs for repositories that can do
that. (Robert Collins)
- RepositoryFormat has a new attribute 'pack_compresses' which is True
when doing a pack operation changes the compression of content in the
repository. (Robert Collins)
- StreamSink and InterDifferingSerialiser will call
Repository.pack with the hint returned by
Repository.commit_write_group if the formats were different and the
repository can increase compression by doing a pack operation.
(Robert Collins, #376748)
Codename: | yesterday-in-california |
1.16rc1: | 2009-06-11 |
1.16: | 2009-06-18 |
This version of Bazaar contains the beta release of the new 2a repository
format, suitable for testing by fearless, advanced users. This format or an
updated version of it will become the default format in Bazaar 2.0. Please
read the NEWS entry before even thinking about upgrading to the new format.
Also included are speedups for many operations on huge projects, a bug fix for
pushing stacked new stacked branches to smart servers and the usual bevy of
bug fixes and improvements.
Changes from 1.16rc1 to 1.16final
- Fix the nested tree flag check so that upgrade from development formats to
2a can work correctly.
(Jelmer Vernooij, #388727)
- Automatic format upgrades triggered by default stacking policies on a
1.16rc1 (or later) smart server work again.
(Andrew Bennetts, #388675)
Compatibility Breaks
- Display prompt on stderr (instead of stdout) when querying users so
that the output of commands can be safely redirected.
(Vincent Ladeuil, #376582)
New Features
A new repository format 2a has been added. This is a beta release
of the brisbane-core (aka group-compress) project. This format now
suitable for wider testing by advanced users willing to deal with some
bugs. We would appreciate test reports, either positive or negative.
Format 2a is substantially smaller and faster for many operations on
many trees. This format or an updated version will become the default
in bzr 2.0.
This is a rich-root format, so this repository format can be used with
bzr-svn. Bazaar branches in previous non-rich-root formats can be
converted (including by merge, push and pull) to format 2a, but not vice
versa. We recommend upgrading previous development formats to 2a.
Upgrading to this format can take considerable time because it expands
and more concisely repacks the full history.
If you use stacked branches, you must upgrade the stacked branches
before the stacked-on branches. (See <https://bugs.launchpad.net/bugs/374735>)
--development7-rich-root is a new dev format, similar to --dev6
but using a Revision serializer using bencode rather than XML.
(Jelmer Vernooij, John Arbash Meinel)
mail_client=claws now supports --body (and message body hooks). Also uses
configured from address. (Barry Warsaw)
Improvements
--development6-rich-root can now stack. (Modulo some smart-server
bugs with stacking and non default formats.)
(John Arbash Meinel, #373455)
--development6-rich-root delays generating a delta index for the
first object inserted into a group. This has a beneficial impact on
bzr commit since each committed texts goes to its own group. For
committing a 90MB file, it drops peak memory by about 200MB, and speeds
up commit from 7s => 4s. (John Arbash Meinel)
Numerous operations are now faster for huge projects, i.e. those
with a large number of files and/or a large number of revisions,
particularly when the latest development format is used. These
operations (and improvements on OpenOffice.org) include:
- branch in a shared repository (2X faster)
- branch --no-tree (100X faster)
- diff (2X faster)
- tags (70X faster)
(Ian Clatworthy)
Pyrex version of bencode support. This provides optimized support
for both encoding and decoding, and is now found at bzrlib.bencode.
bzrlib.utils.bencode is now deprecated.
(Alexander Belchenko, Jelmer Vernooij, John Arbash Meinel)
Bug Fixes
- Bazaar can now pass attachment files to the mutt email client.
(Edwin Grubbs, #384158)
- Better message in bzr add output suggesting using bzr ignored to
see which files can also be added. (Jason Spashett, #76616)
- bzr pull -r 123 from a stacked branch on a smart server no longer fails.
Also, the Branch.revision_history() API now works in the same
situation. (Andrew Bennetts, #380314)
- bzr serve on Windows no longer displays a traceback simply because a
TCP client disconnected. (Andrew Bennetts)
- Clarify the rules for locking and fallback repositories. Fix bugs in how
RemoteRepository was handling fallbacks along with the
_real_repository. (Andrew Bennetts, John Arbash Meinel, #375496)
- Fix a small bug with fetching revisions w/ ghosts into a new stacked
branch. Not often triggered, because it required ghosts to be part of
the fetched revisions, not in the stacked-on ancestry.
(John Arbash Meinel)
- Fix status and commit to work with content filtered trees, addressing
numerous bad bugs with line-ending support. (Ian Clatworthy, #362030)
- Fix problem of "directory not empty" when contending for a lock over
SFTP. (Martin Pool, #340352)
- Fix rule handling so that eol is optional, not mandatory.
(Ian Clatworthy, #379370)
- Pushing a new stacked branch to a 1.15 smart server was broken due to a
bug in the BzrDirFormat.initialize_ex smart verb. This is fixed in
1.16, but required changes to the network protocol, so the
BzrDirFormat.initialize_ex verb has been removed and replaced with a
corrected BzrDirFormat.initialize_ex_1.16 verb. 1.15 clients will
still work with a 1.16 server as they will fallback to slower (and
bug-free) methods.
(Jonathan Lange, Robert Collins, Andrew Bennetts, #385132)
- Reconcile can now deal with text revisions that originated in revisions
that are ghosts. (Jelmer Vernooij, #336749)
- Support cloning of branches with ghosts in the left hand side history.
(Jelmer Vernooij, #248540)
- The ''bzr diff'' now catches OSError from osutils.rmtree and logs a
helpful message to the trace file, unless the temp directory really was
removed (which would be very strange). Since the diff operation has
succeeded from the user's perspective, no output is written to stderr
or stdout. (Maritza Mendez, #363837)
- Translate errors received from a smart server in response to a
BzrDirFormat.initialize or BzrDirFormat.initialize_ex request.
This was causing tracebacks even for mundane errors like
PermissionDenied. (Andrew Bennetts, #381329)
Documentation
- Added directory structure and started translation of docs in Russian.
(Alexey Shtokalo, Alexander Iljin, Alexander Belchenko, Dmitry Vasiliev,
Volodymyr Kotulskyi)
API Changes
- Added osutils.parent_directories(). (Ian Clatworthy)
- bzrlib.progress.ProgressBar, ChildProgress, DotsProgressBar,
TTYProgressBar and child_progress are now deprecated; use
ui_factory.nested_progress_bar instead. (Martin Pool)
- graph.StackedParentsProvider is now a public API, replacing
graph._StackedParentsProvider. The api is now considered stable and ready
for external users. (Gary van der Merwe)
- bzrlib.user_encoding is deprecated in favor of
get_user_encoding. (Alexander Belchenko)
- TreeTransformBase no longer assumes that limbo is provided via disk.
DiskTreeTransform now provides disk functionality. (Aaron Bentley)
Internals
- Remove weave.py script for accessing internals of old weave-format
repositories. (Martin Pool)
Testing
- make check no longer repeats the test run in LANG=C.
(Martin Pool, #386180)
- The number of cores is now correctly detected on OSX. (John Szakmeister)
- The number of cores is also detected on Solaris and win32. (Vincent Ladeuil)
- The number of cores is also detected on FreeBSD. (Matthew Fuller)
Bazaar 1.10 has several performance improvements for copying revisions
(especially for small updates to large projects). There has also been a
significant amount of effort in polishing stacked branches. The commands
shelve and unshelve have become core commands, with an improved
implementation.
The only changes versus bzr-1.10rc1 are bugfixes for stacked branches.
bug Fixes
- Don't set a pack write cache size from RepoFetcher, because the
cache is not coherent with reads and causes ShortReadvErrors.
This reverses the change that fixed #294479.
(Martin Pool, #303856)
- Properly handle when a revision can be inserted as a delta versus
when it needs to be expanded to a fulltext for stacked branches.
There was a bug involving merge revisions. As a method to help
prevent future difficulties, also make stacked fetches sort
topologically. (John Arbash Meinel, #304841)
This release of Bazaar focuses on performance improvements when pushing
and pulling revisions, both locally and to remote networks. The popular
shelve and unshelve commands, used to interactively revert and
restore work in progress, have been merged from bzrtools into the bzr
core. There are also bug fixes for portability, and for stacked branches.
New Features
- New commit_message_template hook that is called by the commit
code to generate a template commit message. (Jelmer Vernooij)
- New shelve and unshelve commands allow undoing and redoing changes.
(Aaron Bentley)
Improvements
- (Remote)Branch.copy_content_into no longer generates the full revision
history just to set the last revision info.
(Andrew Bennetts, John Arbash Meinel)
- Fetches between formats with different serializers (such as
pack-0.92-subtree and 1.9-rich-root) are faster now. This is due to
operating on batches of 100 revisions at time rather than
one-by-one. (Andrew Bennetts, John Arbash Meinel)
- Search index files corresponding to pack files we've already used
before searching others, because they are more likely to have the
keys we're looking for. This reduces the number of iix and tix
files accessed when pushing 1 new revision, for instance.
(John Arbash Meinel)
- Signatures to transfer are calculated more efficiently in
item_keys_introduced_by. (Andrew Bennetts, John Arbash Meinel)
- The generic fetch code can once again copy revisions and signatures
without extracting them completely to fulltexts and then serializing
them back down into byte strings. This is a significant performance
improvement when fetching from a stacked branch.
(John Arbash Meinel, #300289)
- When making a large readv() request over bzr+ssh, break up the
request into more manageable chunks. Because the RPC is not yet able
to stream, this helps keep us from buffering too much information at
once. (John Arbash Meinel)
Bug Fixes
- Better message when the user needs to set their Launchpad ID.
(Martin Pool, #289148)
- bzr commit --local doesn't access the master branch anymore.
This fixes a regression introduced in 1.9. (Marius Kruger, #299313)
- Don't call the system chdir() with an empty path. Sun OS seems
to give an error in that case. Also, don't count on getcwd()
being able to allocate a new buffer, which is a gnu extension.
(John Arbash Meinel, Martin Pool, Harry Hirsch, #297831)
- Don't crash when requesting log --forward <file> for a revision range
starting with a dotted revno.
(Vincent Ladeuil, #300055)
- Don't create text deltas spanning stacked repositories; this could
cause "Revision X not present in Y" when later accessing them.
(Martin Pool, #288751)
- 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)
- PermissionDenied errors from smart servers no longer cause
"PermissionDenied: "None"" on the client.
(Andrew Bennetts, #299254)
- Pushing to a stacked pack repository now batches writes, the same
way writes are batched to ordinary pack repository. This makes
pushing to a stacked branch over the network much faster.
(Andrew Bennetts, #294479)
- TooManyConcurrentRequests no longer occur when a fetch fails and
tries to abort a write group. This allows the root cause (e.g. a
network interruption) to be reported. (Andrew Bennetts, #297014)
- RemoteRepository.get_parent_map now uses fallback repositories.
(Aaron Bentley, #297991?, #293679?)
API Changes
- CommitBuilder now validates the strings it will be committing,
to ensure that they do not have characters that will not be properly
round-tripped. For now, it just checks for characters that are
invalid in the XML form. (John Arbash Meinel, #295161)
- Constructor parameters for NewPack (internal to pack repositories)
have changed incompatibly.
- Repository.abort_write_group now accepts an optional
suppress_errors flag. Repository implementations that override
abort_write_group will need to be updated to accept the new
argument. Subclasses that only override _abort_write_group
don't need to change.
- Transport implementations must provide copy_tree_to_transport. A default
implementation is provided for Transport subclasses.
Testing
- bzr selftest now fails if no doctests are found in a module
that's expected to have them. (Martin Pool)
- Doctests now only report the first failure. (Martin Pool)
No changes from 1.7.1rc1.
This release just includes an update to how the merge algorithm handles
file paths when we encounter complex history.
Features
- If we encounter a criss-cross in history, use information from
direct Least Common Ancestors to resolve inventory shape (locations
of files, adds, deletes, etc). This is similar in concept to using
--lca for merging file texts, only applied to paths.
(John Arbash Meinel)
This release includes many bug fixes and a few performance and feature
improvements. bzr rm will now scan for missing files and remove them,
like how bzr add scans for unknown files and adds them. A bit more
polish has been applied to the stacking code. The b-tree indexing code has
been brought in, with an eye on using it in a future repository format.
There are only minor installer changes since bzr-1.7rc2.
Features
- Some small updates to the win32 installer. Include localization
files found in plugins, and include the builtin distutils as part of
packaging qbzr. (Mark Hammond)
A few bug fixes from 1.7rc1. The biggest change is a new
RemoteBranch.get_stacked_on_url RPC. This allows clients that are
trying to access a Stacked branch over the smart protocol, to properly
connect to the stacked-on location.
Bug Fixes
- Branching from a shared repository on a smart server into a new
repository now preserves the repository format.
(Andrew Bennetts, #269214)
- Branching from a stacked branch via bzr+ssh can properly connect
to the stacked-on branch. (Martin Pool, #261315)
- bzr init no longer re-opens the BzrDir multiple times.
(Vincent Ladeuil)
- Fix '_in_buffer' AttributeError when using the -Dhpss debug flag.
(Andrew Bennetts)
This release candidate for bzr 1.7 has several bug fixes and a few
performance and feature improvements. bzr rm will now scan for
missing files and remove them, like how bzr add scans for unknown
files and adds them. A bit more polish has been applied to the stacking
code. The b-tree indexing code has been brought in, with an eye on using
it in a future repository format.
Changes
- bzr export can now export a subdirectory of a project.
(Robert Collins)
- bzr remove-tree will now refuse to remove a tree with uncommitted
changes, unless the --force option is specified.
(Lukáš Lalinský, #74101)
- bzr rm will now scan for files that are missing and remove just
them automatically, much as bzr add scans for new files that
are not ignored and adds them automatically. (Robert Collins)
Features
- Support for GSSAPI authentication when using FTP as documented in
RFC2228. (Jelmer Vernooij, #49623)
- Add support for IPv6 in the smart server. (Jelmer Vernooij, #165014)
Improvements
- A URL like log+file:///tmp will log all access to that Transport
to .bzr.log, which may help in debugging or profiling.
(Martin Pool)
- bzr branch and bzr push use the default stacking policy if the
branch format supports it. (Aaron Bentley)
- bzr init and bzr init-repo will now print out the same as
bzr info if it completed successfully.
(Marius Kruger)
- bzr uncommit logs the old tip revision id, and displays how to
restore the branch to that tip using bzr pull. This allows you
to recover if you realize you uncommitted the wrong thing.
(John Arbash Meinel)
- Fix problems in accessing stacked repositories over bzr://.
(Martin Pool, #261315)
- SFTPTransport.readv() was accidentally using list += string,
which 'works', but adds each character separately to the list,
rather than using list.append(string). Fixing this makes the
SFTP transport a little bit faster (~20%) and use a bit less memory.
(John Arbash Meinel)
- When reading index files, if we happen to read the whole file in a
single request treat it as a _buffer_all request. This happens
most often on small indexes over remote transports, where we default
to reading 64kB. It saves a round trip for each small index during
fetch operations. Also, if we have read more than 50% of an index
file, trigger a _buffer_all on the next request. This works
around some inefficiencies because reads don't fall neatly on page
boundaries, so we would ignore those bytes, but request them again
later. This could trigger a total read size of more than the whole
file. (John Arbash Meinel)
Bug Fixes
- bzr rm is now aliased to bzr del for the convenience of svn
users. (Robert Collins, #205416)
- Catch the infamous "select/poll returned error" which occurs when
pycurl try to send a body request to an HTTP/1.0 server which has
already refused to handle the request. (Vincent Ladeuil, #225020)
- Fix ObjectNotLocked errors when using various commands
(including bzr cat and bzr annotate) in combination with a
smart server URL. (Andrew Bennetts, #237067)
- FTPTransport.stat() would return 0000 as the permission bits
for the containing .bzr/ directory (it does not implement
permissions). This would cause us to set all subdirectories to
0700 and files to 0600 rather than leaving them unmodified.
Now we ignore 0000 as the permissions and assume they are
invalid. (John Arbash Meinel, #259855)
- Merging from a previously joined branch will no longer cause
a traceback. (Jelmer Vernooij, #203376)
- Pack operations on windows network shares will work even with large
files. (Robert Collins, #255656)
- Running bzr st PATH_TO_TREE will no longer suppress merge
status. Status is also about 7% faster on mozilla sized trees
when the path to the root of the tree has been given. Users of
the internal show_tree_status function should be aware that
the show_pending flag is now authoritative for showing pending
merges, as it was originally. (Robert Collins, #255204)
- Set valid default _param_name for Option so that ListOption can embed
'-' in names. (Vincent Ladeuil, #263249)
- Show proper error rather than traceback when an unknown revision
id is specified to bzr cat-revision. (Jelmer Vernooij, #175569)
- Trailing text in the dirstate file could cause the C dirstate parser
to try to allocate an invalid amount of memory. We now properly
check and test for parsing a dirstate with invalid trailing data.
(John Arbash Meinel, #186014)
- Unexpected error responses from a smart server no longer cause the
client to traceback. (Andrew Bennetts, #263527)
- Use a Windows api function to get a Unicode host name, rather than
assuming the host name is ascii.
(Mark Hammond, John Arbash Meinel, #256550)
- WorkingTree4 trees will now correctly report missing-and-new
paths in the output of iter_changes. (Robert Collins)
Documentation
- Updated developer documentation. (Martin Pool)
API Changes
- Exporters now take 4 parameters. (Robert Collins)
- Tree.iter_changes will now return False for the content change
field when a file is missing in the basis tree and not present in
the target tree. Previously it returned True unconditionally.
(Robert Collins)
- The deprecated Branch.abspath and unimplemented
Branch.rename_one and Branch.move were removed. (Jelmer Vernooij)
- BzrDir.clone_on_transport implementations must now accept a stacked_on
parameter. (Aaron Bentley)
- BzrDir.cloning_metadir implementations must now take a require_stacking
parameter. (Aaron Bentley)
Testing
- addCleanup now takes *arguments and **keyword_arguments
which are then passed to the cleanup callable as it is run. In
addition, addCleanup no longer requires that the callables passed to
it be unique. (Jonathan Lange)
- Fix some tests that fail on Windows because files are deleted while
still in use.
(Mark Hammond)
- selftest's --starting-with option can now use predefined
prefixes so that one can say bzr selftest -s bp.loom instead of
bzr selftest -s bzrlib.plugins.loom. (Vincent Ladeuil)
- selftest's --starting-with option now accepts multiple values.
(Vincent Ladeuil)
Internals
- A new plugin interface, bzrlib.log.log_adapters, has been added.
This allows dynamic log output filtering by plugins.
(Robert Collins)
- bzrlib.btree_index is now available, providing a b-tree index
layer. The design is memory conservative (limited memory cache),
faster to seek (approx 100 nodes per page, gives 100-way fan out),
and stores compressed pages allowing more keys per page.
(Robert Collins, John Arbash Meinel)
- bzrlib.diff.DiffTree.show_diff now skips changes where the kind
is unknown in both source and target.
(Robert Collins, Aaron Bentley)
- GraphIndexBuilder.add_node and BTreeBuilder have been
streamlined a bit. This should make creating large indexes faster.
(In benchmarking, it now takes less time to create a BTree index than
it takes to read the GraphIndex one.) (John Arbash Meinel)
- Mail clients for bzr send are now listed in a registry. This
allows plugins to add new clients by registering them with
bzrlib.mail_client.mail_client_registry. All of the built-in
clients now use this mechanism. (Neil Martinsen-Burrell)
A couple regressions were found in the 1.6 release. There was a
performance issue when using bzr+ssh to branch large repositories,
and some problems with stacking and rich-root capable repositories.
Bug Fixes
- Copying between rich-root and rich-root-pack (and vice
versa) was accidentally using the inter-model fetcher, instead of
recognizing that both were 'rich root' formats.
(John Arbash Meinel, #264321)
This release fixes a few regressions found in the 1.6 client. Fetching
changes was using an O(N^2) buffering algorithm, so for large projects it
would cause memory thrashing. There is also a specific problem with the
--1.6-rich-root format, which prevented stacking on top of
--rich-root-pack repositories, and could allow users to accidentally
fetch experimental data (-subtree) without representing it properly.
The --1.6-rich-root format has been deprecated and users are
recommended to upgrade to --1.6.1-rich-root immediately. Also we
re-introduced a workaround for users who have repositories with incorrect
nodes (not possible if you only used official releases).
I should also clarify that none of this is data loss level issues, but
still sufficient enough to warrant an updated release.
Bug Fixes
- RemoteTransport.readv() was being inefficient about how it
buffered the readv data and processed it. It would keep appending to
the same string (causing many copies) and then pop bytes out of the
start of the string (causing more copies).
With this patch "bzr+ssh://local" can improve dramatically,
especially for projects with large files.
(John Arbash Meinel)
- Revision texts were always meant to be stored as fulltexts. There
was a bug in a bzr.dev version that would accidentally create deltas
when copying from a Pack repo to a Knit repo. This has been fixed,
but to support those repositories, we know always request full texts
for Revision texts. (John Arbash Meinel, #261339)
- The previous --1.6-rich-root format used an incorrect XML
serializer, which would accidentally support fetching from a
repository that supported subtrees, even though the local one would
not. We deprecated that format, and introduced a new one that uses
the correct serializer --1.6.1-rich-root.
(John Arbash Meinel, #262333)
Finally, the long awaited bzr 1.6 has been released. This release includes
new features like Stacked Branches, improved weave merge, and an updated
server protocol (now on v3) which will allow for better cross version
compatibility. With this release we have deprecated Knit format
repositories, and recommend that users upgrade them, we will continue to
support reading and writing them for the forseeable future, but we will
not be tuning them for performance as pack repositories have proven to be
better at scaling. This will also be the first release to bundle
TortoiseBzr in the standalone Windows installer.
Bug Fixes
- Disable automatic detection of stacking based on a containing
directory of the target. It interacted badly with push, and needs a
bit more work to get the edges polished before it should happen
automatically. (John Arbash Meinel, #259275)
(This change was reverted when merged to bzr.dev)
Bug Fixes
- Fix a regression in knit => pack fetching. We had a logic
inversion, causing the fetch to insert fulltexts in random order,
rather than preserving deltas. (John Arbash Meinel, #256757)
Changes
- Disable reading .bzrrules as a per-branch rule preferences
file. The feature was not quite ready for a full release.
(Robert Collins)
Improvements
- Update the windows installer to bundle TortoiseBzr and qbzr
into the standalone installer. This will be the first official
windows release that installs Tortoise by default.
(Mark Hammond)
Bug Fixes
- Fix a regression in bzr+http support. There was a missing
function (_read_line) that needed to be carried over from
bzr+ssh support. (Andrew Bennetts)
- GraphIndex objects will internally read an entire index if more
than 1/20th of their keyspace is requested in a single operation.
This largely mitigates a performance regression in bzr log FILE
and completely corrects the performance regression in bzr log.
The regression was caused by removing an accomodation which had been
supporting the index format in use. A newer index format is in
development which is substantially faster. (Robert Collins)
This release candidate has a few minor bug fixes, and some regression
fixes for Windows.
Bug Fixes
- bzr upgrade on remote branches accessed via bzr:// and
bzr+ssh:// now works. (Andrew Bennetts)
- Change the get_format_description() strings for
RepositoryFormatKnitPack5 et al to be single line messages.
(Aaron Bentley)
- Fix for a regression on Win32 where we would try to call
os.listdir() on a file and not catch the exception properly.
(Windows raises a different exception.) This would manifest in
places like bzr rm file or bzr switch.
(Mark Hammond, John Arbash Meinel)
- Inventory.copy() was failing to set the revision property for
the root entry. (Jelmer Vernooij)
- SFTP transport: added missing FileExists case to
_translate_io_exception (Christophe Troestler, #123475)
- The help for bzr ignored now suggests bzr ls --ignored for
scripting use. (Robert Collins, #3834)
- The default annotate logic will now always assign the
last-modified value of a line to one of the revisions that modified
it, rather than a merge revision. This would happen when both sides
claimed to have modified the line resulting in the same text. The
choice is arbitrary but stable, so merges in different directions
will get the same results. (John Arbash Meinel, #232188)
This release candidate for bzr 1.6 solidifies the new branch stacking
feature. Bazaar now recommends that users upgrade all knit repositories,
because later formats are much faster. However, we plan to continue read/write and
upgrade support for knit repostories for the forseeable future. Several
other bugs and performance issues were fixed.
Changes
- Knit format repositories are deprecated and bzr will now emit
warnings whenever it encounters one. Use bzr upgrade to upgrade
knit repositories to pack format. (Andrew Bennetts)
Improvements
- bzr check can now be told which elements at a location it should
check. (Daniel Watkins)
- Commit now supports --exclude (or -x) to exclude some files
from the commit. (Robert Collins, #3117)
- Fetching data between repositories that have the same model but no
optimised fetcher will not reserialise all the revisions, increasing
performance. (Robert Collins, John Arbash Meinel)
- Give a more specific error when target branch is not reachable.
(James Westby)
- Implemented a custom walkdirs_utf8 implementation for win32.
This uses a pyrex extension to get direct access to the
FindFirstFileW style apis, rather than using listdir +
lstat. Shows a very strong improvement in commands like
status and diff which have to iterate the working tree.
Anywhere from 2x-6x faster depending on the size of the tree (bigger
trees, bigger benefit.) (John Arbash Meinel)
- New registry for log properties handles and the method in
LongLogFormatter to display the custom properties returned by the
registered handlers. (Guillermo Gonzalez, #162469)
Bug Fixes
- Add more tests that stacking does not create deltas spanning
physical repository boundaries.
(Martin Pool, #252428)
- Better message about incompatible repositories.
(Martin Pool, #206258)
- bzr branch --stacked ensures the destination branch format can
support stacking, even if the origin does not.
(Martin Pool)
- bzr export no longer exports .bzrrules.
(Ian Clatworthy)
- bzr serve --directory=/ now correctly allows the whole
filesystem to be accessed on Windows, not just the root of the drive
that Python is running from.
(Adrian Wilkins, #240910)
- Deleting directories by hand before running bzr rm will not
cause subsequent errors in bzr st and bzr commit.
(Robert Collins, #150438)
- Fix a test case that was failing if encoding wasn't UTF-8.
(John Arbash Meinel, #247585)
- Fix "no buffer space available" error when branching with the new
smart server protocol to or from Windows.
(Andrew Bennetts, #246180)
- Fixed problem in branching from smart server.
(#249256, Michael Hudson, Martin Pool)
- Handle a file turning in to a directory in TreeTransform.
(James Westby, #248448)
API Changes
- MutableTree.commit has an extra optional keywork parameter
exclude that will be unconditionally supplied by the command
line UI - plugins that add tree formats may need an update.
(Robert Collins)
- The API minimum version for plugin compatibility has been raised to
1.6 - there are significant changes throughout the code base.
(Robert Collins)
- The generic fetch code now uses three attributes on Repository objects
to control fetch. The streams requested are controlled via :
_fetch_order and _fetch_uses_deltas. Setting these
appropriately allows different repository implementations to recieve
data in their optimial form. If the _fetch_reconcile is set then
a reconcile operation is triggered at the end of the fetch.
(Robert Collins)
- The put_on_disk and get_tar_item methods in
InventoryEntry were deprecated. (Ian Clatworthy)
- Repository.is_shared doesn't take a read lock. It didn't
need one in the first place (nobody cached the value, and
RemoteRepository wasn't taking one either). This saves a round
trip when probing Pack repositories, as they read the pack-names
file when locked. And during probe, locking the repo isn't very
useful. (John Arbash Meinel)
Internals
- bzrlib.branchbuilder.BranchBuilder is now much more capable of
putting together a real history without having to create a full
WorkingTree. It is recommended that tests that are not directly
testing the WorkingTree use BranchBuilder instead. See
BranchBuilder.build_snapshot or
TestCaseWithMemoryTree.make_branch_builder. (John Arbash Meinel)
- bzrlib.builtins.internal_tree_files broken into two giving a new
helper safe_relpath_files - used by the new exclude
parameter to commit. (Robert Collins)
- Make it easier to introduce new WorkingTree formats.
(Ian Clatworthy)
- The code for exporting trees was refactored not to use the
deprecated InventoryEntry methods. (Ian Clatworthy)
- RuleSearchers return () instead of [] now when there are no matches.
(Ian Clatworthy)
This release adds a new 'stacked branches' feature allowing branches to
share storage without being in the same repository or on the same machine.
(See the user guide for more details.) It also adds a new hook, improved
weaves, aliases for related locations, faster bzr+ssh push, and several
bug fixes.
Features
- New pre_change_branch_tip hook that is called before the
branch tip is moved, while the branch is write-locked. See the User
Reference for signature details. (Andrew Bennetts)
- Rule-based preferences can now be defined for selected files in
selected branches, allowing commands and plugins to provide
custom behaviour for files matching defined patterns.
See Rule-based preferences (part of Configuring Bazaar)
in the User Guide and bzr help rules for more information.
(Ian Clatworthy)
- Sites may suggest a branch to stack new branches on. (Aaron Bentley)
- Stacked branches are now supported. See bzr help branch and
bzr help push. Branches must be in the development1 format
to stack, though the stacked-on branch can be of any format.
(Robert Collins)
Improvements
- bzr export --format=tgz --root=NAME - to export a gzipped tarball
to stdout; also tar and tbz2.
(Martin Pool)
- bzr (re)merge --weave will now use a standard Weave algorithm,
rather than the annotation-based merge it was using. It does so by
building up a Weave of the important texts, without needing to build
the full ancestry. (John Arbash Meinel, #238895)
- bzr send documents and better supports emacsclient (proper
escaping of mail headers and handling of the MUA Mew).
(Christophe Troestler)
- Remembered locations can be specified by aliases, e.g. :parent, :public,
:submit. (Aaron Bentley)
- The smart protocol now has improved support for setting branches'
revision info directly. This makes operations like push
faster. The new request method name is
Branch.set_last_revision_ex. (Andrew Bennetts)
Bug Fixes
- Bazaar is now able to be a client to the web server of IIS 6 and 7.
The broken implementations of RFC822 in Python and RFC2046 in IIS
combined with boundary-line checking in Bazaar previously made this
impossible. (NB, IIS 5 does not suffer from this problem).
(Adrian Wilkins, #247585)
- bzr log --long with a ghost in your mainline now handles that
ghost properly. (John Arbash Meinel, #243536)
- check handles the split-up .bzr layout correctly, so no longer
requires a branch to be present.
(Daniel Watkins, #64783)
- Clearer message about how to set the PYTHONPATH if bzrlib can't be
loaded.
(Martin Pool, #205230)
- Errors about missing libraries are now shown without a traceback,
and with a suggestion to install the library. The full traceback is
still in .bzr.log and can be shown with -Derror.
(Martin Pool, #240161)
- Fetch from a stacked branch copies all required data.
(Aaron Bentley, #248506)
- Handle URLs such as ftp://user@host.com@www.host.com where the user
name contains an @.
(Neil Martinsen-Burrell, #228058)
- needs_read_lock and needs_write_lock now suppress an error during
unlock if there was an error in the original function. This helps
most when there is a failure with a smart server action, since often the
connection closes and we cannot unlock.
(Andrew Bennetts, John Arbash Meinel, #125784)
- Obsolete hidden command bzr fetch removed.
(Martin Pool, #172870)
- Raise the correct exception when doing -rbefore:0 or -c0.
(John Arbash Meinel, #239933)
- You can now compare file revisions in Windows diff programs from
Cygwin Bazaar.
(Matt McClure, #209281)
- revision_history now tolerates mainline ghosts for Branch format 6.
(Aaron Bentley, #235055)
- Set locale from environment for third party libs.
(Martin von Gagern, #128496)
Documentation
- Added Using stacked branches to the User Guide.
(Ian Clatworthy)
- Updated developer documentation.
(Martin Pool)
Testing
- -Dmemory will cause /proc/PID/status to be catted before bzr
exits, allowing low-key analysis of peak memory use. (Robert Collins)
- TestCaseWithTransport.make_branch_and_tree tries harder to return
a tree with a branch attribute of the right format. This was
preventing some RemoteBranch tests from actually running with
RemoteBranch instances. (Andrew Bennetts)
API Changes
- Removed Repository.text_store, control_store, etc. Instead,
there are new attributes texts, inventories, revisions,
signatures, each of which is a VersionedFiles. See the
Repository docstring for more details.
(Robert Collins)
- Branch.pull now accepts an _override_hook_target optional
parameter. If you have a subclass of Branch that overrides
pull then you should add this parameter. (Andrew Bennetts)
- bzrlib.check.check() has been deprecated in favour of the more
aptly-named bzrlib.check.check_branch().
(Daniel Watkins)
- Tree.print_file and Repository.print_file are deprecated.
These methods are bad APIs because they write directly to sys.stdout.
bzrlib does not use them internally, and there are no direct tests
for them. (Alexander Belchenko)
Internals
- cat command no longer uses Tree.print_file() internally.
(Alexander Belchenko)
- New class method BzrDir.open_containing_tree_branch_or_repository
which eases the discovery of the tree, the branch and the repository
containing a given location.
(Daniel Watkins)
- New versionedfile.KeyMapper interface to abstract out the access to
underlying .knit/.kndx etc files in repositories with partitioned
storage. (Robert Collins)
- Obsolete developer-use command weave-join has been removed.
(Robert Collins)
- RemoteToOtherFetcher and get_data_stream_for_search removed,
to support new VersionedFiles layering.
(Robert Collins)
This release contains further progress towards our 1.6 goals of shallow
repositories, and contains a fix for some user-affecting bugs in the
repository layer. Building working trees during checkout and branch is
now faster.
Bug Fixes
- Avoid KnitCorrupt error extracting inventories from some repositories.
(The data is not corrupt; an internal check is detecting a problem
reading from the repository.)
(Martin Pool, Andrew Bennetts, Robert Collins, #234748)
- bzr status was breaking if you merged the same revision twice.
(John Arbash Meinel, #235407)
- Fix infinite loop consuming 100% CPU when a connection is lost while
reading a response body via the smart protocol v1 or v2.
(Andrew Bennetts)
- Inserting a bundle which changes the contents of a file with no trailing
end of line, causing a knit snapshot in a 'knits' repository will no longer
cause KnitCorrupt. (Robert Collins)
- RemoteBranch.pull needs to return the self._real_branch's
pull result. It was instead just returning None, which breaks bzr
pull. (John Arbash Meinel, #238149)
- Sanitize branch nick before using it as an attachment filename in
bzr send. (Lukáš Lalinský, #210218)
- Squash inv_entry.symlink_target to a plain string when
generating DirState details. This prevents from getting a
UnicodeError when you have symlinks and non-ascii filenames.
(John Arbash Meinel, #135320)
Improvements
- Added the 'alias' command to set/unset and display aliases. (Tim Penhey)
- added, modified, and unknowns behaviour made consistent (all three
now quote paths where required). Added --null option to added and
modified (for null-separated unknowns, use ls --unknown --null)
(Adrian Wilkins)
- Faster branching (1.09x) and lightweight checkouts (1.06x) on large trees.
(Ian Clatworthy, Aaron Bentley)
Documentation
- Added Bazaar Zen section to the User Guide. (Ian Clatworthy)
Testing
- Fix the test HTTPServer to be isolated from chdir calls made while it is
running, allowing it to be used in blackbox tests. (Robert Collins)
API Changes
- WorkingTree.set_parent_(ids/trees) will now filter out revisions
which are in the ancestry of other revisions. So if you merge the same
tree twice, or merge an ancestor of an existing merge, it will only
record the newest. (If you merge a descendent, it will replace its
ancestor). (John Arbash Meinel, #235407)
- RepositoryPolicy.__init__ now requires stack_on and stack_on_pwd,
through the derived classes do not. (Aaron Bentley)
Internals
- bzrlib.bzrdir.BzrDir.sprout now accepts stacked to control
creating stacked branches. (Robert Collins)
- Knit record serialisation is now stricter on what it will accept, to
guard against potential internal bugs, or broken input. (Robert Collins)
Commands that work on the revision history such as push, pull, missing,
uncommit and log are now substantially faster. This release adds a
translation of some of the user documentation into Spanish. (Contributions of
other translations would be very welcome.) Bazaar 1.6beta1 adds a new network
protocol which is used by default and which allows for more efficient transfers
and future extensions.
Notes When Upgrading
- There is a new version of the network protocol used for bzr://, bzr+ssh://
and bzr+http:// connections. This will allow more efficient requests and
responses, and more graceful fallback when a server is too old to
recognise a request from a more recent client. Bazaar 1.6 will
interoperate with 0.16 and later versions, but servers should be upgraded
when possible. Bazaar 1.6 no longer interoperates with 0.15 and earlier via
these protocols. Use alternatives like SFTP or upgrade those servers.
(Andrew Bennetts, #83935)
Changes
- Deprecation warnings will not be suppressed when running bzr selftest
so that developers can see if their code is using deprecated functions.
(John Arbash Meinel)
Features
- Adding -Derror will now display a traceback when a plugin fails to
load. (James Westby)
Improvements
- bzr branch/push/pull -r XXX now have a helper function for finding
the revno of the new revision (Graph.find_distance_to_null). This
should make something like bzr branch -r -100 in a shared, no-trees
repository much snappier. (John Arbash Meinel)
- bzr log --short -r X..Y no longer needs to access the full revision
history. This makes it noticeably faster when logging the last few
revisions. (John Arbash Meinel)
- bzr ls now accepts -V as an alias for --versioned.
(Jerad Cramp, #165086)
- bzr missing uses the new Graph.find_unique_ancestors and
Graph.find_differences to determine missing revisions without having
to search the whole ancestry. (John Arbash Meinel, #174625)
- bzr uncommit now uses partial history access, rather than always
extracting the full revision history for a branch. This makes it
resolve the appropriate revisions much faster (in testing it drops
uncommit from 1.5s => 0.4s). It also means bzr log --short is one
step closer to not using full revision history.
(John Arbash Meinel, #172649)
Bugfixes
- bzr merge --lca should handle when two revisions have no common
ancestor other than NULL_REVISION. (John Arbash Meinel, #235715)
- bzr status was breaking if you merged the same revision twice.
(John Arbash Meinel, #235407)
- bzr push with both --overwrite and -r NNN options no longer
fails. (Andrew Bennetts, #234229)
- Correctly track the base URL of a smart medium when using bzr+http://
URLs, which was causing spurious "No repository present" errors with
branches in shared repositories accessed over bzr+http.
(Andrew Bennetts, #230550)
- Define _remote_is_at_least_1_2 on SmartClientMedium so that all
implementations have the attribute. Fixes 'PyCurlTransport' object has no
attribute '_remote_is_at_least_1_2' attribute errors.
(Andrew Bennetts, #220806)
- Failure to delete an obsolete pack file should just give a warning
message, not a fatal error. It may for example fail if the file is still
in use by another process.
(Martin Pool)
- Fix MemoryError during large fetches over HTTP by limiting the amount of
data we try to read per recv call. The problem was observed with
Windows and a proxy, but might affect other environments as well.
(Eric Holmberg, #215426)
- Handle old merge directives correctly in Merger.from_mergeable. Stricter
get_parent_map requirements exposed a latent bug here. (Aaron Bentley)
- Issue a warning and ignore passwords declared in authentication.conf when
used for an SSH scheme (sftp:// or bzr+ssh://).
(Vincent Ladeuil, #203186)
- Make both HTTP implementations raise appropriate exceptions on 403
Forbidden when POSTing smart requests.
(Vincent Ladeuil, #230223)
- Properly title header names in HTTP requests instead of capitalizing
them.
(Vincent Ladeuil, #229076)
- The "Unable to obtain lock" error message now also suggests using
bzr break-lock to fix it. (Martin Albisetti, #139202)
- Treat an encoding of '' as ascii; this can happen when bzr is run
under vim on Mac OS X.
(Neil Martinsen-Burrell)
- VersionedFile.make_mpdiffs() was raising an exception that wasn't in
scope. (Daniel Fischer #235687)
Documentation
- Added directory structure and started translation of docs in spanish.
(Martin Albisetti, Lucio Albenga)
- Incorporate feedback from Jelmer Vernooij and Neil Martinsen-Burrell
on the plugin and integration chapters of the User Guide.
(Ian Clatworthy)
- More Bazaar developer documentation about packaging and release process,
and about use of Python reprs.
(Martin Pool, Martin Albisetti)
- Updated Tortise strategy document. (Mark Hammond)
Testing
- bzrlib.tests.adapt_tests was broken and unused - it has been fixed.
(Robert Collins)
- Fix the test HTTPServer to be isolated from chdir calls made while it is
running, allowing it to be used in blackbox tests. (Robert Collins)
- New helper function for splitting test suites
split_suite_by_condition. (Robert Collins)
Internals
- Branch.missing_revisions has been deprecated. Similar functionality
can be obtained using bzrlib.missing.find_unmerged. The api was
fairly broken, and the function was unused, so we are getting rid of it.
(John Arbash Meinel)
API Changes
- Branch.abspath is deprecated; use the Tree or Transport
instead. (Martin Pool)
- Branch.update_revisions now takes an optional Graph
object. This can be used by update_revisions when it is
checking ancestry, and allows callers to prefer request to go to a
local branch. (John Arbash Meinel)
- Branch, Repository, Tree and BzrDir should expose a Transport as an
attribute if they have one, rather than having it indirectly accessible
as .control_files._transport. This doesn't add a requirement
to support a Transport in cases where it was not needed before;
it just simplifies the way it is reached. (Martin Pool)
- bzr missing --mine-only will return status code 0 if you have no
new revisions, but the remote does. Similarly for --theirs-only.
The new code only checks one side, so it doesn't know if the other
side has changes. This seems more accurate with the request anyway.
It also changes the output to print '[This|Other] branch is up to
date.' rather than displaying nothing. (John Arbash Meinel)
- LockableFiles.put_utf8, put_bytes and controlfilename
are now deprecated in favor of using Transport operations.
(Martin Pool)
- Many methods on VersionedFile, Repository and in
bzrlib.revision deprecated before bzrlib 1.5 have been removed.
(Robert Collins)
- RevisionSpec.wants_revision_history can be set to False for a given
RevisionSpec. This will disable the existing behavior of passing in
the full revision history to self._match_on. Useful for specs that
don't actually need access to the full history. (John Arbash Meinel)
- The constructors of SmartClientMedium and its subclasses now require a
base parameter. SmartClientMedium implementations now also need
to provide a remote_path_from_transport method. (Andrew Bennetts)
- The default permissions for creating new files and directories
should now be obtained from BzrDir._get_file_mode() and
_get_dir_mode(), rather than from LockableFiles. The _set_file_mode
and _set_dir_mode variables on LockableFiles which were advertised
as a way for plugins to control this are no longer consulted.
(Martin Pool)
- VersionedFile.join is deprecated. This method required local
instances of both versioned file objects and was thus hostile to being
used for streaming from a smart server. The new get_record_stream and
insert_record_stream are meant to efficiently replace this method.
(Robert Collins)
- WorkingTree.set_parent_(ids/trees) will now filter out revisions
which are in the ancestry of other revisions. So if you merge the same
tree twice, or merge an ancestor of an existing merge, it will only
record the newest. (If you merge a descendent, it will replace its
ancestor). (John Arbash Meinel, #235407)
- WorkingTreeFormat2.stub_initialize_remote is now private.
(Martin Pool)