[MERGE] When adding rich root data follow the standard revision graph rules, so it does not create 'inconstent parents'.

John Arbash Meinel john at arbash-meinel.com
Tue May 5 04:46:04 BST 2009

Hash: SHA1

Robert Collins wrote:
> This fixes the bug Aaron found vis-a-vis upgrading to rich roots - that
> you got inconsistent parents and had to immediately reconcile to fix
> that.
> -Rob

If the core of this is needing to have a Graph.heads() call on the
rich-root items, you'll find that Inter1And2Helper needs the same fix. I
basically copy & pasted (and then massaged the code to fit) the code
into InterDifferingSerializer, because I wanted to remove the extra pass
over inventories that Inter1and2Helper imposed.

I also just did a quick grep, and I don't see any heads() calls in all
of fetch.py

Which I *think* means that you aren't fully testing the inter-format
fetching across the smart server, since you said in the past that it
would use the streaming code path for that....

I only did a quick glance over the code. The only thing that really
sticks out is:
+                # root_id may be in the parent anyway.
+                try:
+                    tree = self.source.revision_tree(parent_id)
+                except errors.NoSuchRevision:
+                    # ghost, can't refer to it.
+                    pass

^- But I guess this only happens when the root_id really does change,
which is a *very* rare occurrence.


(Not giving a final vote, since I didn't fully review the patch.)


Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org


More information about the bazaar mailing list