Rev 6193: Merge vila's integration branch, to ensure we have the bzr-2.5b2 tag. in http://bazaar.launchpad.net/~jameinel/bzr/2.5-longer-timeout
John Arbash Meinel
john at arbash-meinel.com
Thu Oct 6 09:51:04 UTC 2011
At http://bazaar.launchpad.net/~jameinel/bzr/2.5-longer-timeout
------------------------------------------------------------
revno: 6193 [merge]
revision-id: john at arbash-meinel.com-20111006095045-c2r8uk28vf6eil9j
parent: john at arbash-meinel.com-20111005150154-m8522v2u3ie7wpo2
parent: v.ladeuil+lp at free.fr-20111006094734-h4s6iu16j8jbup2h
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: 2.5-longer-timeout
timestamp: Thu 2011-10-06 11:50:45 +0200
message:
Merge vila's integration branch, to ensure we have the bzr-2.5b2 tag.
modified:
bzrlib/__init__.py __init__.py-20050309040759-33e65acf91bbcd5d
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/diff-delta.c diffdelta.c-20090226042143-l9wzxynyuxnb5hus-1
bzrlib/osutils.py osutils.py-20050309040759-eeaff12fbf77ac86
bzrlib/plugins/launchpad/lp_directory.py lp_indirect.py-20070126012204-de5rugwlt22c7u7e-1
bzrlib/plugins/launchpad/test_lp_directory.py test_lp_indirect.py-20070126002743-oyle362tzv9cd8mi-1
bzrlib/tests/blackbox/test_init.py test_init.py-20060309032856-a292116204d86eb7
bzrlib/tests/stub_sftp.py stub_sftp.py-20051027032739-0e7ef4f7bab0e174
bzrlib/tests/test_bzrdir.py test_bzrdir.py-20060131065654-deba40eef51cf220
bzrlib/tests/test_osutils.py test_osutils.py-20051201224856-e48ee24c12182989
bzrlib/transport/local.py local_transport.py-20050711165921-9b1f142bfe480c24
bzrlib/urlutils.py urlutils.py-20060502195429-e8a161ecf8fac004
bzrlib/version.py version.py-20060816024207-ves6ult9a11taj9t-1
doc/en/release-notes/bzr-2.4.txt bzr2.4.txt-20110114053217-k7ym9jfz243fddjm-1
doc/en/release-notes/bzr-2.5.txt bzr2.5.txt-20110708125756-587p0hpw7oke4h05-1
-------------- next part --------------
=== modified file 'bzrlib/__init__.py'
--- a/bzrlib/__init__.py 2011-09-26 15:40:02 +0000
+++ b/bzrlib/__init__.py 2011-10-06 09:20:02 +0000
@@ -52,7 +52,7 @@
# Python version 2.0 is (2, 0, 0, 'final', 0)." Additionally we use a
# releaselevel of 'dev' for unreleased under-development code.
-version_info = (2, 5, 0, 'dev', 2)
+version_info = (2, 5, 0, 'dev', 3)
# API compatibility version
api_minimum_version = (2, 4, 0)
=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py 2011-10-03 14:50:03 +0000
+++ b/bzrlib/builtins.py 2011-10-05 14:12:34 +0000
@@ -1908,7 +1908,7 @@
raise errors.BranchExistsWithoutWorkingTree(location)
raise errors.AlreadyBranchError(location)
branch = a_bzrdir.create_branch()
- if not no_tree:
+ if not no_tree and not a_bzrdir.has_workingtree():
a_bzrdir.create_workingtree()
if append_revisions_only:
try:
=== modified file 'bzrlib/bzrdir.py'
--- a/bzrlib/bzrdir.py 2011-09-20 10:47:29 +0000
+++ b/bzrlib/bzrdir.py 2011-10-05 14:12:34 +0000
@@ -1323,6 +1323,123 @@
return config.TransportConfig(self.transport, 'control.conf')
+class BzrDirMeta1Colo(BzrDirMeta1):
+ """BzrDirMeta1 with support for colocated branches.
+
+ This format is experimental, and will eventually be merged back into
+ BzrDirMeta1.
+ """
+
+ def __init__(self, _transport, _format):
+ super(BzrDirMeta1Colo, self).__init__(_transport, _format)
+ self.control_files = lockable_files.LockableFiles(_transport,
+ self._format._lock_file_name, self._format._lock_class)
+
+ def _get_branch_path(self, name):
+ """Obtain the branch path to use.
+
+ This uses the API specified branch name first, and then falls back to
+ the branch name specified in the URL. If neither of those is specified,
+ it uses the default branch.
+
+ :param name: Optional branch name to use
+ :return: Relative path to branch, branch name
+ """
+ if name is None:
+ name = self._get_selected_branch()
+ if name is None:
+ return 'branch', None
+ return urlutils.join('branches', name), name
+
+ def _read_branch_list(self):
+ """Read the branch list.
+
+ :return: List of utf-8 encoded branch names.
+ """
+ try:
+ f = self.control_transport.get('branch-list')
+ except errors.NoSuchFile:
+ return []
+
+ ret = []
+ try:
+ for name in f:
+ ret.append(name.rstrip("\n"))
+ finally:
+ f.close()
+ return ret
+
+ def _write_branch_list(self, branches):
+ """Write out the branch list.
+
+ :param branches: List of utf-8 branch names to write
+ """
+ self.transport.put_bytes('branch-list',
+ "".join([name+"\n" for name in branches]))
+
+ def destroy_branch(self, name=None):
+ """See BzrDir.create_branch."""
+ path, name = self._get_branch_path(name)
+ if name is not None:
+ self.control_files.lock_write()
+ try:
+ branches = self._read_branch_list()
+ try:
+ branches.remove(name)
+ except ValueError:
+ raise errors.NotBranchError(name)
+ self._write_branch_list(name)
+ finally:
+ self.control_files.unlock()
+ self.transport.delete_tree(path)
+
+ def list_branches(self):
+ """See ControlDir.list_branches."""
+ ret = []
+ # Default branch
+ try:
+ ret.append(self.open_branch())
+ except (errors.NotBranchError, errors.NoRepositoryPresent):
+ pass
+
+ # colocated branches
+ ret.extend([self.open_branch(name) for name in
+ self._read_branch_list()])
+
+ return ret
+
+ def get_branch_transport(self, branch_format, name=None):
+ """See BzrDir.get_branch_transport()."""
+ path, name = self._get_branch_path(name)
+ # XXX: this shouldn't implicitly create the directory if it's just
+ # promising to get a transport -- mbp 20090727
+ if branch_format is None:
+ return self.transport.clone(path)
+ try:
+ branch_format.get_format_string()
+ except NotImplementedError:
+ raise errors.IncompatibleFormat(branch_format, self._format)
+ if name is not None:
+ try:
+ self.transport.mkdir('branches', mode=self._get_mkdir_mode())
+ except errors.FileExists:
+ pass
+ branches = self._read_branch_list()
+ if not name in branches:
+ self.control_files.lock_write()
+ try:
+ branches = self._read_branch_list()
+ branches.append(name)
+ self._write_branch_list(branches)
+ finally:
+ self.control_files.unlock()
+ try:
+ self.transport.mkdir(path, mode=self._get_mkdir_mode())
+ except errors.FileExists:
+ pass
+ return self.transport.clone(path)
+
+
class BzrProber(controldir.Prober):
"""Prober for formats that use a .bzr/ control directory."""
@@ -1629,6 +1746,8 @@
fixed_components = False
+ colocated_branches = False
+
def __init__(self):
self._workingtree_format = None
self._branch_format = None
@@ -1831,6 +1950,34 @@
controldir.ControlDirFormat._default_format = BzrDirMetaFormat1()
+class BzrDirMetaFormat1Colo(BzrDirMetaFormat1):
+ """BzrDirMeta1 format with support for colocated branches."""
+
+ colocated_branches = True
+
+ @classmethod
+ def get_format_string(cls):
+ """See BzrDirFormat.get_format_string()."""
+ return "Bazaar meta directory, format 1 (with colocated branches)\n"
+
+ def get_format_description(self):
+ """See BzrDirFormat.get_format_description()."""
+ return "Meta directory format 1 with support for colocated branches"
+
+ def _open(self, transport):
+ """See BzrDirFormat._open."""
+ # Create a new format instance because otherwise initialisation of new
+ # metadirs share the global default format object leading to alias
+ # problems.
+ format = BzrDirMetaFormat1Colo()
+ self._supply_sub_formats_to(format)
+ return BzrDirMeta1Colo(transport, format)
+
+
+BzrProber.formats.register(BzrDirMetaFormat1Colo.get_format_string(),
+ BzrDirMetaFormat1Colo)
+
+
class ConvertMetaToMeta(controldir.Converter):
"""Converts the components of metadirs."""
@@ -2076,11 +2223,11 @@
tree_format=None,
hidden=False,
experimental=False,
- alias=False):
+ alias=False, bzrdir_format=None):
"""Register a metadir subformat.
- These all use a BzrDirMetaFormat1 bzrdir, but can be parameterized
- by the Repository/Branch/WorkingTreeformats.
+ These all use a meta bzrdir, but can be parameterized by the
+ Repository/Branch/WorkingTreeformats.
:param repository_format: The fully-qualified repository format class
name as a string.
@@ -2089,8 +2236,10 @@
:param tree_format: Fully-qualified tree format class name as
a string.
"""
+ if bzrdir_format is None:
+ bzrdir_format = BzrDirMetaFormat1
# This should be expanded to support setting WorkingTree and Branch
- # formats, once BzrDirMetaFormat1 supports that.
+ # formats, once the API supports that.
def _load(full_name):
mod_name, factory_name = full_name.rsplit('.', 1)
try:
@@ -2103,7 +2252,7 @@
return factory()
def helper():
- bd = BzrDirMetaFormat1()
+ bd = bzrdir_format()
if branch_format is not None:
bd.set_branch_format(_load(branch_format))
if tree_format is not None:
@@ -2263,6 +2412,16 @@
alias=False,
)
+register_metadir(controldir.format_registry, 'development-colo',
+ 'bzrlib.repofmt.groupcompress_repo.RepositoryFormat2a',
+ help='The 2a format with experimental support for colocated branches.\n',
+ branch_format='bzrlib.branch.BzrBranchFormat7',
+ tree_format='bzrlib.workingtree_4.WorkingTreeFormat6',
+ experimental=False,
+ bzrdir_format=BzrDirMetaFormat1Colo,
+ )
+
+
# And the development formats above will have aliased one of the following:
# Finally, the current format.
=== modified file 'bzrlib/diff-delta.c'
--- a/bzrlib/diff-delta.c 2011-05-16 14:26:54 +0000
+++ b/bzrlib/diff-delta.c 2011-09-30 16:29:17 +0000
@@ -720,6 +720,11 @@
max_num_entries = (src->size - 1) / RABIN_WINDOW;
+ if (!max_num_entries) {
+ *fresh = old_index;
+ return DELTA_OK;
+ }
+
/* allocate an array to hold whatever entries we find */
entries = malloc(sizeof(*entry) * max_num_entries);
if (!entries) /* malloc failure */
=== modified file 'bzrlib/osutils.py'
--- a/bzrlib/osutils.py 2011-09-16 10:41:45 +0000
+++ b/bzrlib/osutils.py 2011-10-06 07:43:13 +0000
@@ -279,13 +279,28 @@
# copy posixpath.abspath, but use os.getcwdu instead
if not posixpath.isabs(path):
path = posixpath.join(getcwd(), path)
- return posixpath.normpath(path)
+ return _posix_normpath(path)
def _posix_realpath(path):
return posixpath.realpath(path.encode(_fs_enc)).decode(_fs_enc)
+def _posix_normpath(path):
+ path = posixpath.normpath(path)
+ # Bug 861008: posixpath.normpath() returns a path normalized according to
+ # the POSIX standard, which stipulates (for compatibility reasons) that two
+ # leading slashes must not be simplified to one, and only if there are 3 or
+ # more should they be simplified as one. So we treat the leading 2 slashes
+ # as a special case here by simply removing the first slash, as we consider
+ # that breaking POSIX compatibility for this obscure feature is acceptable.
+ # This is not a paranoid precaution, as we notably get paths like this when
+ # the repo is hosted at the root of the filesystem, i.e. in "/".
+ if path.startswith('//'):
+ path = path[1:]
+ return path
+
+
def _win32_fixdrive(path):
"""Force drive letters to be consistent.
@@ -379,7 +394,7 @@
abspath = _posix_abspath
realpath = _posix_realpath
pathjoin = os.path.join
-normpath = os.path.normpath
+normpath = _posix_normpath
getcwd = os.getcwdu
rename = os.rename
dirname = os.path.dirname
=== modified file 'bzrlib/plugins/launchpad/lp_directory.py'
--- a/bzrlib/plugins/launchpad/lp_directory.py 2011-09-20 14:11:27 +0000
+++ b/bzrlib/plugins/launchpad/lp_directory.py 2011-10-06 06:45:46 +0000
@@ -131,7 +131,7 @@
else:
# There are either 0 or > 2 path parts, neither of which is
# supported for these schemes.
- raise errors.InvalidURL('Bad path: %s' % result.path)
+ raise errors.InvalidURL('Bad path: %s' % url)
# Expand any series shortcuts, but keep unknown series.
series = distro_series.get(series, series)
# Hack the url and let the following do the final resolution.
=== modified file 'bzrlib/plugins/launchpad/test_lp_directory.py'
--- a/bzrlib/plugins/launchpad/test_lp_directory.py 2011-07-11 07:02:20 +0000
+++ b/bzrlib/plugins/launchpad/test_lp_directory.py 2011-10-06 06:45:46 +0000
@@ -121,6 +121,17 @@
self.assertResolve('bzr+ssh://bazaar.launchpad.net/+branch/ubuntu',
'lp:ubuntu')
+ def test_ubuntu_invalid(self):
+ """Invalid ubuntu urls don't crash.
+
+ :seealso: http://pad.lv/843900
+ """
+ # This ought to be natty-updates.
+ self.assertRaises(errors.InvalidURL,
+ self.assertResolve,
+ '',
+ 'ubuntu:natty/updates/smartpm')
+
def test_ubuntu_apt(self):
self.assertResolve('bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/apt',
'lp:ubuntu/apt')
=== modified file 'bzrlib/tests/blackbox/test_init.py'
--- a/bzrlib/tests/blackbox/test_init.py 2011-09-07 14:06:40 +0000
+++ b/bzrlib/tests/blackbox/test_init.py 2011-10-05 14:12:34 +0000
@@ -48,12 +48,22 @@
self.assertIsDirectory('.bzr/checkout/lock', t)
def test_init_format_2a(self):
- """Smoke test for constructing a format 2a repoistory."""
+ """Smoke test for constructing a format 2a repository."""
out, err = self.run_bzr('init --format=2a')
self.assertEqual("""Created a standalone tree (format: 2a)\n""",
out)
self.assertEqual('', err)
+ def test_init_colocated(self):
+ """Smoke test for constructing a colocated branch."""
+ out, err = self.run_bzr('init --format=development-colo file:,branch=abranch')
+ self.assertEqual("""Created a standalone tree (format: development-colo)\n""",
+ out)
+ self.assertEqual('', err)
+ out, err = self.run_bzr('branches')
+ self.assertEqual(" abranch\n", out)
+ self.assertEqual('', err)
+
def test_init_at_repository_root(self):
# bzr init at the root of a repository should create a branch
# and working tree even when creation of working trees is disabled.
=== modified file 'bzrlib/tests/stub_sftp.py'
--- a/bzrlib/tests/stub_sftp.py 2011-08-15 12:37:25 +0000
+++ b/bzrlib/tests/stub_sftp.py 2011-10-06 07:43:13 +0000
@@ -118,9 +118,9 @@
else:
def canonicalize(self, path):
if os.path.isabs(path):
- return os.path.normpath(path)
+ return osutils.normpath(path)
else:
- return os.path.normpath('/' + os.path.join(self.home, path))
+ return osutils.normpath('/' + os.path.join(self.home, path))
def chattr(self, path, attr):
try:
=== modified file 'bzrlib/tests/test_bzrdir.py'
--- a/bzrlib/tests/test_bzrdir.py 2011-10-04 13:46:51 +0000
+++ b/bzrlib/tests/test_bzrdir.py 2011-10-05 14:12:34 +0000
@@ -1397,3 +1397,10 @@
self._transport.put_bytes("a.~1~", "some content")
self.assertEqual("a.~2~", self._bzrdir._available_backup_name("a"))
+
+class TestMeta1DirColoFormat(TestCaseWithTransport):
+ """Tests specific to the meta1 dir with colocated branches format."""
+
+ def test_supports_colo(self):
+ format = bzrdir.BzrDirMetaFormat1Colo()
+ self.assertTrue(format.colocated_branches)
=== modified file 'bzrlib/tests/test_osutils.py'
--- a/bzrlib/tests/test_osutils.py 2011-07-08 23:01:39 +0000
+++ b/bzrlib/tests/test_osutils.py 2011-10-06 07:43:13 +0000
@@ -818,6 +818,16 @@
self.assertEqual(None, osutils.safe_file_id(None))
+class TestPosixFuncs(tests.TestCase):
+ """Test that the posix version of normpath returns an appropriate path
+ when used with 2 leading slashes."""
+
+ def test_normpath(self):
+ self.assertEqual('/etc/shadow', osutils._posix_normpath('/etc/shadow'))
+ self.assertEqual('/etc/shadow', osutils._posix_normpath('//etc/shadow'))
+ self.assertEqual('/etc/shadow', osutils._posix_normpath('///etc/shadow'))
+
+
class TestWin32Funcs(tests.TestCase):
"""Test that _win32 versions of os utilities return appropriate paths."""
=== modified file 'bzrlib/transport/local.py'
--- a/bzrlib/transport/local.py 2011-08-31 01:35:15 +0000
+++ b/bzrlib/transport/local.py 2011-10-06 07:43:13 +0000
@@ -567,7 +567,7 @@
self._local_base = urlutils._win32_local_path_from_url(base)
def abspath(self, relpath):
- path = osutils.normpath(osutils.pathjoin(
+ path = osutils._win32_normpath(osutils.pathjoin(
self._local_base, urlutils.unescape(relpath)))
return urlutils._win32_local_path_to_url(path)
=== modified file 'bzrlib/urlutils.py'
--- a/bzrlib/urlutils.py 2011-09-04 23:22:47 +0000
+++ b/bzrlib/urlutils.py 2011-10-06 07:43:13 +0000
@@ -22,7 +22,7 @@
from bzrlib.lazy_import import lazy_import
lazy_import(globals(), """
-from posixpath import split as _posix_split, normpath as _posix_normpath
+from posixpath import split as _posix_split
import urllib
import urlparse
@@ -201,8 +201,7 @@
"""
# importing directly from posixpath allows us to test this
# on non-posix platforms
- return 'file://' + escape(_posix_normpath(
- osutils._posix_abspath(path)))
+ return 'file://' + escape(osutils._posix_abspath(path))
def _win32_local_path_from_url(url):
=== modified file 'bzrlib/version.py'
--- a/bzrlib/version.py 2010-04-30 11:03:59 +0000
+++ b/bzrlib/version.py 2011-10-04 18:43:55 +0000
@@ -73,7 +73,7 @@
else:
to_file.write(bzrlib.__path__[0] + '\n')
if show_config:
- config_dir = os.path.normpath(config.config_dir()) # use native slashes
+ config_dir = osutils.normpath(config.config_dir()) # use native slashes
if not isinstance(config_dir, unicode):
config_dir = config_dir.decode(osutils.get_user_encoding())
to_file.write(" Bazaar configuration: %s\n" % (config_dir,))
=== modified file 'doc/en/release-notes/bzr-2.4.txt'
--- a/doc/en/release-notes/bzr-2.4.txt 2011-09-28 16:50:40 +0000
+++ b/doc/en/release-notes/bzr-2.4.txt 2011-10-06 07:43:13 +0000
@@ -32,6 +32,11 @@
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)
@@ -39,6 +44,10 @@
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
*************
=== modified file 'doc/en/release-notes/bzr-2.5.txt'
--- a/doc/en/release-notes/bzr-2.5.txt 2011-10-04 11:38:49 +0000
+++ b/doc/en/release-notes/bzr-2.5.txt 2011-10-06 09:20:02 +0000
@@ -5,10 +5,10 @@
.. toctree::
:maxdepth: 1
-bzr 2.5b2
+bzr 2.5b3
#########
-:2.5b2: NOT RELEASED YET
+:2.x.y: NOT RELEASED YET
External Compatibility Breaks
*****************************
@@ -20,12 +20,83 @@
.. New commands, options, etc that users may wish to try out.
+Improvements
+************
+
+.. Improvements to existing commands, especially improved performance
+ or memory usage, or better results.
+
+Bug Fixes
+*********
+
+.. Fixes for situations where bzr would previously crash or give incorrect
+ or undesirable results.
+
+Documentation
+*************
+
+.. Improved or updated documentation.
+
+API Changes
+***********
+
+.. Changes that may require updates in plugins or other code that uses
+ bzrlib.
+
+Internals
+*********
+
+.. Major internal changes, unlikely to be visible to users or plugin
+ developers, but interesting for bzr developers.
+
+Testing
+*******
+
+.. Fixes and changes that are only relevant to bzr's test framework and
+ suite. This can include new facilities for writing tests, fixes to
+ spurious test failures and changes to the way things should be tested.
+
+
+bzr 2.5b2
+#########
+
+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.
+
+:2.5b2: 2011-10-06
+
+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
@@ -35,13 +106,15 @@
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
************
-.. Improvements to existing commands, especially improved performance
- or memory usage, or better results.
-
* 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)
@@ -52,23 +125,20 @@
Bug Fixes
*********
-.. Fixes for situations where bzr would previously crash or give incorrect
- or undesirable results.
-
* ``bzr shelve`` can now be used in emacs shells as the input handling is
- turned into a line-basde one when ``INSIDE_EMACS`` is set (which is the
+ 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
+ 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
+* 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
@@ -80,24 +150,26 @@
* ``WorkingTree.get_file_mtime`` now raises NoSuchId if a file id is
specified that is unknown. (Jelmer Vernooij, #847435)
-Documentation
-*************
-
-.. Improved or updated documentation.
API Changes
***********
-.. Changes that may require updates in plugins or other code that uses
- bzrlib.
-
* ``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.
@@ -106,9 +178,6 @@
Internals
*********
-.. Major internal changes, unlikely to be visible to users or plugin
- developers, but interesting for bzr developers.
-
* ``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
@@ -120,10 +189,6 @@
* Test scripts can now use ``bzr shelve`` and provide their input as
complete lines. (Vincent Ladeuil, #856261)
-.. Fixes and changes that are only relevant to bzr's test framework and
- suite. This can include new facilities for writing tests, fixes to
- spurious test failures and changes to the way things should be tested.
-
* Really corrupt the pack file without depending on a special length or value.
(Vincent Ladeuil, #807032)
@@ -134,9 +199,18 @@
:2.5b1: 2011-09-15
This is the first beta of the 2.5 series, leading up to a 2.5.0
-release in February 2012. 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.
+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
*****************************
@@ -198,15 +272,6 @@
while ``--match-message, --match-author, --match-committer`` and
``--match-bugs`` match each of those fields. (Jacek Sieka)
-* ``bzr log`` now has an option called ``--omit-merges`` to ommit
- 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)
-
* ``config.Option`` can now declare ``default_from_env``, a list of
environment variables to get a default value from. (Vincent Ladeuil)
@@ -224,7 +289,7 @@
(Jonathan Riddell, #804254)
* Translations are now enabled for command help, errors and globally
- for any message using gettext given on output. (Jonathan Riddell,
+ for any message using ``gettext`` given on output. (Jonathan Riddell,
INADA Naoki, #83941)
Improvements
@@ -265,7 +330,7 @@
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
+* Use ``gettext.NullTranslations`` in i18n to allow use of i18n even when
translations are not turned on. (Jonathan Riddell)
Bug Fixes
@@ -352,11 +417,6 @@
* New registry ``OptionRegistry`` specialized for configuration options.
(Vincent Ladeuil)
-* 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)
-
* Remove ``AtomicFile.closed`` which has been deprecated in bzr 0.10.
(Vincent Ladeuil)
@@ -399,11 +459,6 @@
and ``_path`` attributes. Proxies are provided for the moment but
may be removed in the future. (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)
-
-
Internals
*********
More information about the bazaar-commits
mailing list