bzr_dir_for_branch_stacked_on_relative_url.clone('...', preserve_stacking=True) miscalculates stacked-on URL

Bug #250418 reported by Michael Hudson-Doyle
2
Affects Status Importance Assigned to Milestone
Bazaar
Fix Released
Undecided
Unassigned

Bug Description

I hope this transcript makes the summary sufficiently precise:

$ cd ~/tmp
$ mkdir repro
$ cd repro/
$ mkdir directory
$ bzr init directory/base --development
$ bzr push -d directory/base/ --stacked-on=directory/base directory/branch
Created new stacked branch referring to file:///home/mwh/tmp/repro/directory/base.
$ cat directory/branch/.bzr/branch/branch.conf
stacked_on_location = file:///home/mwh/tmp/repro/directory/base
$ echo 'stacked_on_location = ../base' > directory/branch/.bzr/branch/branch.conf
$ bzr info directory/branch/
Standalone branch (format: development1)
Location:
  branch root: directory/branch

Related branches:
  stacked on: ../base
$ python2.4
Python 2.4.5 (#2, Apr 21 2008, 11:22:42)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import bzrlib.branch
>>> b = bzrlib.branch.Branch.open('directory/branch')
>>> b.bzrdir.clone('dest', preserve_stacking=True)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.4/site-packages/bzrlib/bzrdir.py", line 177, in clone
    preserve_stacking=preserve_stacking)
  File "/usr/lib/python2.4/site-packages/bzrlib/bzrdir.py", line 222, in clone_on_transport
    result_repo = repository_policy.acquire_repository(
  File "/usr/lib/python2.4/site-packages/bzrlib/bzrdir.py", line 2863, in acquire_repository
    self._add_fallback(repository)
  File "/usr/lib/python2.4/site-packages/bzrlib/bzrdir.py", line 2817, in _add_fallback
    stacked_dir = BzrDir.open(stack_on)
  File "/usr/lib/python2.4/site-packages/bzrlib/bzrdir.py", line 763, in open
    return BzrDir.open_from_transport(t, _unsupported=_unsupported)
  File "/usr/lib/python2.4/site-packages/bzrlib/bzrdir.py", line 800, in open_from_transport
    redirected)
  File "/usr/lib/python2.4/site-packages/bzrlib/transport/__init__.py", line 1616, in do_catching_redirections
    return action(transport)
  File "/usr/lib/python2.4/site-packages/bzrlib/bzrdir.py", line 776, in find_format
    return transport, BzrDirFormat.find_format(
  File "/usr/lib/python2.4/site-packages/bzrlib/bzrdir.py", line 1573, in find_format
    raise errors.NotBranchError(path=transport.base)
bzrlib.errors.NotBranchError: Not a branch: "/home/mwh/tmp/base/".
>>>

This is with 1.6b3 but it's the same with bzr.dev revno 3565.

Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

jml provided this one line change:

=== modified file 'bzrlib/bzrdir.py'
--- bzrlib/bzrdir.py 2008-07-17 08:00:25 +0000
+++ bzrlib/bzrdir.py 2008-07-21 07:53:30 +0000
@@ -217,7 +217,7 @@
         if local_repo:
             # may need to copy content in
             repository_policy = result.determine_repository_policy(
- force_new_repo, stack_on)
+ force_new_repo, stack_on, self.root_transport.base)
             make_working_trees = local_repo.make_working_trees()
             result_repo = repository_policy.acquire_repository(
                 make_working_trees, local_repo.is_shared())

I'll try to come up with some proper tests and submit a merge request today.

Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

This was fixed a good few months ago.

Changed in bzr:
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.