Comment 10 for bug 364305

Revision history for this message
Frits Jalvingh (fjalvingh) wrote :

Still present in 1.16. I now cannot merge any of my branches anymore meaning I effectively do not use bzr anymore.

I am trying to find out what goes wrong and will post progress here, I hope that gets some response from people that actually know how this stuff works.....

Background: I have a shared project repository (domUI) which is repeatedly merged into a master tree (vp-trunk). The first merge was done using a merge with full history of the domUI trunk. When I try to merge again we get this error. This is not a cherrypicking merge! The failing merge I am debugging has the following changes:

+N to.etc.webapp.core/src/to/etc/webapp/query/QRestrictionsBase.java
+N to.etc.webapp.core/src/to/etc/webapp/query/QSelectedItem.java
+N to.etc.webapp.core/src/to/etc/webapp/query/QSelection.java
 M to.etc.domui.hibutil/src/to/etc/domui/hibernate/model/CriteriaCreatingVisitor.java
 M to.etc.domui.pages/src/to/etc/domui/pages/generic/BasicListPage.java
 M to.etc.domui/src/to/etc/domui/component/input/LookupInput.java
RM to.etc.domui/src/to/etc/domui/trouble/CodeException.java => to.etc.webapp.core/src/to/etc/webapp/nls/CodeException.java
 M to.etc.webapp.core/src/to/etc/webapp/query/QCriteria.java
 M to.etc.webapp.core/src/to/etc/webapp/query/QMultiNode.java
 M to.etc.webapp.core/src/to/etc/webapp/query/QNodeVisitor.java
 M to.etc.webapp.core/src/to/etc/webapp/query/QNodeVisitorBase.java
-D to.etc.webapp.core/src/to/etc/webapp/query/QProjection.java
 M to.etc.webapp.core/src/to/etc/webapp/query/QRestriction.java

It looks like discovering changes goes OK since a merge --preview works properly.

So far I discovered the following by fuzzing around in transform.py:

The id "new-1" is assigned to "tree_root-20090331215929-42is8ly6zvj4rr4a-1" in "trans_id_file_id". This tree root name is the tree root in the domUI repository (i.e. the source of the merge).

The exception gets thrown in "final_name", because neither self._new_name nor self._tree_id_paths contains 'new-1' as a key. The values present in self._new_name are: {'new-16': 'QSelection.java', 'new-6': u'CodeException.java', 'new-15': 'QSelectedItem.java', 'new-13': 'QRestrictionsBase.java', 'new-2': '.bzrignore'}. The _tree_id_paths array contains some subset of files and directories?

Assigning the ID to the tree is done in merge.py, _compute_transform. The entry for the tree node reads:tree_root-20090331215929-42is8ly6zvj4rr4a-1 False (None, None, None) ('', '', None)