Cannot commit directly to a stacked branch
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Bazaar |
Fix Released
|
High
|
John A Meinel | ||
Launchpad itself |
Fix Released
|
High
|
Jeroen T. Vermeulen | ||
bzr-builder |
Fix Released
|
High
|
Jelmer Vernooij |
Bug Description
Symptoms
--------
bzr commit reports that commit to a stacked branch won't work, and to see this bug.
Workarounds
----------
Make a checkout of the branch and commit to that:
$ bzr checkout $BRANCH $MYCHECKOUT
$ cd $MYCHECKOUT
$ bzr commit
Alternatively, reconfigure that branch to be a full branch, rather than stacked:
$ bzr reconfigure --unstacked $BRANCH
Cause
-----
The internal module that does commits was assuming that a commit on top of an existing repository would always permit a delta to be created by the repository. Stacked repositories don't have that guarantee. While we have an API that will allow a stacked repository to ask for more data, commit did not use that API, and making it use it is non-trivial. Until we fix commit to use that API in some fashion, we've disabled commit in situations where subsequent operations will fail.
Related branches
- Vincent Ladeuil: Approve
- Diff: 309 lines
- Andrew Bennetts: Approve
-
Diff: 2161 lines (+511/-206)170 files modifiedbzrlib/bzrdir.py (+1/-1)
bzrlib/commit.py (+1/-1)
bzrlib/conflicts.py (+1/-1)
bzrlib/controldir.py (+1/-1)
bzrlib/errors.py (+1/-1)
bzrlib/fetch.py (+1/-1)
bzrlib/graph.py (+1/-1)
bzrlib/mutabletree.py (+1/-1)
bzrlib/plugins/launchpad/__init__.py (+1/-1)
bzrlib/plugins/launchpad/test_lp_directory.py (+1/-1)
bzrlib/plugins/launchpad/test_lp_service.py (+1/-1)
bzrlib/remote.py (+1/-1)
bzrlib/repository.py (+74/-19)
bzrlib/tag.py (+1/-1)
bzrlib/tests/EncodingAdapter.py (+1/-1)
bzrlib/tests/TestUtil.py (+1/-1)
bzrlib/tests/__init__.py (+1/-1)
bzrlib/tests/blackbox/test_add.py (+1/-1)
bzrlib/tests/blackbox/test_branch.py (+1/-1)
bzrlib/tests/blackbox/test_commit.py (+1/-1)
bzrlib/tests/blackbox/test_diff.py (+1/-1)
bzrlib/tests/blackbox/test_dpush.py (+1/-1)
bzrlib/tests/blackbox/test_exceptions.py (+1/-1)
bzrlib/tests/blackbox/test_init.py (+1/-1)
bzrlib/tests/blackbox/test_non_ascii.py (+1/-1)
bzrlib/tests/blackbox/test_push.py (+1/-1)
bzrlib/tests/blackbox/test_resolve.py (+1/-1)
bzrlib/tests/blackbox/test_send.py (+1/-1)
bzrlib/tests/blackbox/test_serve.py (+1/-1)
bzrlib/tests/blackbox/test_shared_repository.py (+1/-1)
bzrlib/tests/blackbox/test_tags.py (+1/-1)
bzrlib/tests/blackbox/test_too_much.py (+1/-1)
bzrlib/tests/blackbox/test_upgrade.py (+1/-1)
bzrlib/tests/blackbox/test_version.py (+1/-1)
bzrlib/tests/blackbox/test_whoami.py (+1/-1)
bzrlib/tests/doc_generate/__init__.py (+1/-1)
bzrlib/tests/doc_generate/builders/test_texinfo.py (+1/-1)
bzrlib/tests/doc_generate/writers/test_texinfo.py (+1/-1)
bzrlib/tests/features.py (+1/-1)
bzrlib/tests/http_server.py (+1/-1)
bzrlib/tests/http_utils.py (+1/-1)
bzrlib/tests/https_server.py (+1/-1)
bzrlib/tests/per_branch/test_branch.py (+1/-1)
bzrlib/tests/per_branch/test_parent.py (+1/-1)
bzrlib/tests/per_controldir/test_controldir.py (+1/-1)
bzrlib/tests/per_interrepository/test_interrepository.py (+1/-1)
bzrlib/tests/per_merger.py (+1/-1)
bzrlib/tests/per_pack_repository.py (+1/-1)
bzrlib/tests/per_repository/test_check.py (+1/-1)
bzrlib/tests/per_repository/test_commit_builder.py (+11/-7)
bzrlib/tests/per_repository/test_repository.py (+1/-1)
bzrlib/tests/per_repository/test_write_group.py (+30/-1)
bzrlib/tests/per_repository_reference/__init__.py (+4/-16)
bzrlib/tests/per_repository_reference/test_commit_with_stacking.py (+220/-0)
bzrlib/tests/per_transport.py (+1/-1)
bzrlib/tests/per_uifactory/__init__.py (+1/-1)
bzrlib/tests/per_workingtree/test_add_reference.py (+1/-1)
bzrlib/tests/per_workingtree/test_workingtree.py (+1/-1)
bzrlib/tests/script.py (+1/-1)
bzrlib/tests/stub_sftp.py (+1/-1)
bzrlib/tests/test__annotator.py (+1/-1)
bzrlib/tests/test__chk_map.py (+1/-1)
bzrlib/tests/test__dirstate_helpers.py (+1/-1)
bzrlib/tests/test__groupcompress.py (+1/-1)
bzrlib/tests/test__known_graph.py (+1/-1)
bzrlib/tests/test__simple_set.py (+1/-1)
bzrlib/tests/test__static_tuple.py (+1/-1)
bzrlib/tests/test_ancestry.py (+1/-1)
bzrlib/tests/test_annotate.py (+1/-1)
bzrlib/tests/test_bad_files.py (+1/-1)
bzrlib/tests/test_bisect_multi.py (+1/-1)
bzrlib/tests/test_branch.py (+1/-1)
bzrlib/tests/test_branchbuilder.py (+1/-1)
bzrlib/tests/test_btree_index.py (+1/-1)
bzrlib/tests/test_bundle.py (+1/-1)
bzrlib/tests/test_bzrdir.py (+1/-1)
bzrlib/tests/test_chk_serializer.py (+1/-1)
bzrlib/tests/test_clean_tree.py (+1/-1)
bzrlib/tests/test_commands.py (+1/-1)
bzrlib/tests/test_commit.py (+1/-1)
bzrlib/tests/test_commit_merge.py (+1/-1)
bzrlib/tests/test_config.py (+1/-1)
bzrlib/tests/test_conflicts.py (+1/-1)
bzrlib/tests/test_crash.py (+1/-1)
bzrlib/tests/test_diff.py (+1/-1)
bzrlib/tests/test_dirstate.py (+1/-1)
bzrlib/tests/test_eol_filters.py (+1/-1)
bzrlib/tests/test_errors.py (+1/-1)
bzrlib/tests/test_extract.py (+1/-1)
bzrlib/tests/test_fetch.py (+1/-1)
bzrlib/tests/test_foreign.py (+1/-1)
bzrlib/tests/test_ftp_transport.py (+1/-1)
bzrlib/tests/test_generate_docs.py (+1/-1)
bzrlib/tests/test_generate_ids.py (+1/-1)
bzrlib/tests/test_globbing.py (+1/-1)
bzrlib/tests/test_gpg.py (+1/-1)
bzrlib/tests/test_graph.py (+1/-1)
bzrlib/tests/test_groupcompress.py (+1/-1)
bzrlib/tests/test_hashcache.py (+1/-1)
bzrlib/tests/test_help.py (+1/-1)
bzrlib/tests/test_http.py (+1/-1)
bzrlib/tests/test_https_ca_bundle.py (+1/-1)
bzrlib/tests/test_ignores.py (+1/-1)
bzrlib/tests/test_import_tariff.py (+1/-1)
bzrlib/tests/test_info.py (+1/-1)
bzrlib/tests/test_inv.py (+1/-1)
bzrlib/tests/test_inventory_delta.py (+1/-1)
bzrlib/tests/test_lazy_import.py (+1/-1)
bzrlib/tests/test_library_state.py (+1/-1)
bzrlib/tests/test_lock.py (+1/-1)
bzrlib/tests/test_lockable_files.py (+1/-1)
bzrlib/tests/test_lockdir.py (+1/-1)
bzrlib/tests/test_lsprof.py (+1/-1)
bzrlib/tests/test_merge3.py (+1/-1)
bzrlib/tests/test_merge_core.py (+1/-1)
bzrlib/tests/test_missing.py (+1/-1)
bzrlib/tests/test_msgeditor.py (+1/-1)
bzrlib/tests/test_multiparent.py (+1/-1)
bzrlib/tests/test_nonascii.py (+1/-1)
bzrlib/tests/test_options.py (+1/-1)
bzrlib/tests/test_osutils_encodings.py (+1/-1)
bzrlib/tests/test_permissions.py (+1/-1)
bzrlib/tests/test_plugins.py (+1/-1)
bzrlib/tests/test_progress.py (+1/-1)
bzrlib/tests/test_read_bundle.py (+1/-1)
bzrlib/tests/test_reconcile.py (+1/-1)
bzrlib/tests/test_registry.py (+1/-1)
bzrlib/tests/test_remote.py (+1/-1)
bzrlib/tests/test_revision.py (+1/-1)
bzrlib/tests/test_revisionspec.py (+1/-1)
bzrlib/tests/test_revisiontree.py (+1/-1)
bzrlib/tests/test_rio.py (+1/-1)
bzrlib/tests/test_rules.py (+1/-1)
bzrlib/tests/test_selftest.py (+1/-1)
bzrlib/tests/test_server.py (+1/-1)
bzrlib/tests/test_setup.py (+1/-1)
bzrlib/tests/test_sftp_transport.py (+1/-1)
bzrlib/tests/test_smart.py (+1/-1)
bzrlib/tests/test_smart_transport.py (+1/-1)
bzrlib/tests/test_smtp_connection.py (+1/-1)
bzrlib/tests/test_store.py (+1/-1)
bzrlib/tests/test_strace.py (+1/-1)
bzrlib/tests/test_subsume.py (+1/-1)
bzrlib/tests/test_switch.py (+1/-1)
bzrlib/tests/test_symbol_versioning.py (+1/-1)
bzrlib/tests/test_test_server.py (+1/-1)
bzrlib/tests/test_timestamp.py (+1/-1)
bzrlib/tests/test_trace.py (+1/-1)
bzrlib/tests/test_transactions.py (+1/-1)
bzrlib/tests/test_transform.py (+1/-1)
bzrlib/tests/test_transport.py (+1/-1)
bzrlib/tests/test_transport_log.py (+1/-1)
bzrlib/tests/test_tree.py (+1/-1)
bzrlib/tests/test_ui.py (+1/-1)
bzrlib/tests/test_upgrade.py (+1/-1)
bzrlib/tests/test_upgrade_stacked.py (+1/-1)
bzrlib/tests/test_version.py (+1/-1)
bzrlib/tests/test_version_info.py (+1/-1)
bzrlib/tests/test_weave.py (+1/-1)
bzrlib/tests/test_whitebox.py (+1/-1)
bzrlib/tests/test_win32utils.py (+1/-1)
bzrlib/tests/test_workingtree.py (+1/-1)
bzrlib/tests/test_wsgi.py (+1/-1)
bzrlib/tests/test_xml.py (+1/-1)
bzrlib/timestamp.py (+1/-1)
bzrlib/transform.py (+1/-1)
bzrlib/transport/http/_urllib2_wrappers.py (+1/-1)
bzrlib/upgrade.py (+1/-1)
doc/en/release-notes/bzr-2.3.txt (+4/-0)
doc/en/whats-new/whats-new-in-2.3.txt (+5/-0)
- Jelmer Vernooij (community): Approve (code)
-
Diff: 140 lines (+8/-74)2 files modifiedlib/lp/translations/scripts/tests/test_translations_to_branch.py (+2/-43)
lib/lp/translations/scripts/translations_to_branch.py (+6/-31)
Changed in bzr: | |
importance: | Undecided → Medium |
status: | New → Triaged |
tags: | added: stacking |
Changed in bzr: | |
importance: | Medium → Critical |
description: | updated |
Changed in bzr: | |
importance: | Critical → High |
milestone: | 2.0 → none |
description: | updated |
Changed in rosetta: | |
status: | New → Triaged |
importance: | Undecided → High |
summary: |
- Commit to a stacked branch does not work + Cannot commit directly to a stacked branch |
Changed in bzr: | |
status: | Triaged → Confirmed |
tags: | added: launchpad |
Changed in bzr: | |
milestone: | none → 2.3b4 |
assignee: | nobody → John A Meinel (jameinel) |
milestone: | 2.3b4 → none |
Changed in bzr: | |
status: | Confirmed → In Progress |
milestone: | none → 2.3b5 |
Changed in bzr-builder: | |
status: | New → In Progress |
importance: | Undecided → High |
assignee: | nobody → Jelmer Vernooij (jelmer) |
Changed in bzr-builder: | |
status: | In Progress → Fix Committed |
tags: | added: rodeo2011 |
tags: | added: verified |
tags: | removed: verified |
Changed in bzr-builder: | |
milestone: | none → 0.7 |
Changed in bzr-builder: | |
status: | Fix Committed → Fix Released |
Changed in launchpad: | |
status: | Triaged → In Progress |
assignee: | nobody → Jeroen T. Vermeulen (jtv) |
tags: |
added: qa-ok removed: qa-needstesting |
Changed in launchpad: | |
status: | Fix Committed → Fix Released |
This bug (or at least I think it is this bug) causes test_branch_ from_trivial_ stacked_ branch_ streaming_ acceptance in bzrlib/ tests/blackbox/ test_branch. py to fail if you change that test to use a 2a format branch:
[...] andrew/ warthogs/ bzr/blackbox- with-2a/ bzrlib/ repofmt/ groupcompress_ repo.py" , line 984, in _get_parent_ id_basename_ to_file_ id_pages _chk_p_ id_roots, uninteresting_ pid_root_ keys): andrew/ warthogs/ bzr/blackbox- with-2a/ bzrlib/ chk_map. py", line 1608, in process queues( ): andrew/ warthogs/ bzr/blackbox- with-2a/ bzrlib/ chk_map. py", line 1578, in _flush_new_queue nodes_from_ store(refs) : andrew/ warthogs/ bzr/blackbox- with-2a/ bzrlib/ chk_map. py", line 1461, in _read_nodes_ from_store NoSuchRevision( self._store, record.key) groupcompress. GroupCompressVe rsionedFiles object at 0x9db090c> has no revision ('sha1: a4526a70993d853 ef740978187ef54 79fb179fe9' ,)
File "/home/
self.
File "/home/
for record, items in self._process_
File "/home/
for record, _, p_refs, items in self._read_
File "/home/
raise errors.
NoSuchRevision: <bzrlib.
If we change the default format to 2a, as we are planning to do quite soon, then we'll have to do something about this test failure.