Subtree issues

James Westby jw+debian at jameswestby.net
Tue Mar 6 19:35:26 GMT 2007


Seeing that I could now upgrade to a --dirstate-with-subtree I thought I
would try it and try and document the new commands. The help for them is
very short, and doesn't explain what the command will actually do.

So I created a new format branch that just had one file and one commit,
and a branch in a directory inside that also had one branch and commit.

Then I cloned this twice, once for by value and once for by reference. I
then entered each branch and tried a join adding --reference for one.

For the by value branch it seemed to work ok, renaming the .bzr from the
old branch. However bzr st in that branch throws

Traceback (most recent call last):
  File "/home/jw2328/devel/bzr/dirstate/bzrlib/commands.py", line 650, in run_bzr_catch_errors
    return run_bzr(argv)
  File "/home/jw2328/devel/bzr/dirstate/bzrlib/commands.py", line 612, in run_bzr
    ret = run(*run_argv)
  File "/home/jw2328/devel/bzr/dirstate/bzrlib/commands.py", line 304, in run_argv_aliases
    return self.run(**all_cmd_args)
  File "/home/jw2328/devel/bzr/dirstate/bzrlib/commands.py", line 622, in ignore_pipe
    result = func(*args, **kwargs)
  File "/home/jw2328/devel/bzr/dirstate/bzrlib/builtins.py", line 194, in run
    short=short)
  File "/home/jw2328/devel/bzr/dirstate/bzrlib/status.py", line 154, in show_tree_status
    want_unversioned=True)
  File "/home/jw2328/devel/bzr/dirstate/bzrlib/tree.py", line 91, in changes_from
    want_unversioned=want_unversioned,
  File "/home/jw2328/devel/bzr/dirstate/bzrlib/decorators.py", line 127, in read_locked
    return unbound(self, *args, **kwargs)
  File "/home/jw2328/devel/bzr/dirstate/bzrlib/tree.py", line 595, in compare
    want_unversioned=want_unversioned)
  File "/home/jw2328/devel/bzr/dirstate/bzrlib/delta.py", line 222, in _compare_trees
    want_unversioned=want_unversioned):
  File "/home/jw2328/devel/bzr/dirstate/bzrlib/workingtree_4.py", line 1971, in _iter_changes
    for result in _process_entry(entry, root_dir_info):
  File "/home/jw2328/devel/bzr/dirstate/bzrlib/workingtree_4.py", line 1934, in _process_entry
    raise AssertionError("don't know how to compare "
AssertionError: don't know how to compare source_minikind='a', target_minikind='r'

Activating the pdb statement in the code there allows me to see

  source_details = ('a', '', 0, False, '')
  target_details = ('r', 'newb', 0, False, '')

So I stopped with the by value for the moment.

For the by reference the command seemed to work, reporting that the branch was
added and requiring a commit. Diff then showed that the tree reference
was added. However several things then confused me. First the sub-branch
dir and all of its contents were listed as unkown in the top level dir.
Secondly there was no indication in the top branch of any changes in the
sub branch, and pull doesn't recurse. Is this the intended behaviour?
The only page on the wiki that I could find on the subject seems a
little old, and has a discussion that these may be wanted, but the spec
doesn't actually state whether they are to be included as far as I can
see.

Thanks,

James

-- 
  James Westby   --    GPG Key ID: B577FE13    --     http://jameswestby.net/
  seccure key - (3+)k7|M*edCX/.A:n*N!>|&7U.L#9E)Tu)T0>AM - secp256r1/nistp256




More information about the bazaar mailing list