collections of revision ids

Robert Collins robertc at robertcollins.net
Fri Jan 11 02:18:13 GMT 2008


On Fri, 2008-01-11 at 13:07 +1100, Robert Collins wrote:
> So in order to reduce network traffic during pull with a smart server I
> want a way to describe a set of revisions that does not involve listing
> them all.
> 
> This is needed in the local client codebase for code reuse - we often
> generate collections of revision ids by doing the same basic search -
> e.g. lca, leftmost_difference.
> 
> So I'm thinking of something like a 'Searchrecipe' object or possibly
> just an extension to the breadth first searcher. (though I think the
> concept is more general and don't really want to have to have multiple
> inheritance on the searcher objects themselves).
> 
> So the idea is that a new version of the 'RemoteRepository.fetch' verb
> will take a SearchRecipe as a parameter. The SearchRecipe will have:
>  - start_revisions
>  - exclude_revisions
> 
> and thats it.
> 
> Locally, when we do a graph walk to figure out what revisions to fetch
> (with find_ghosts=False), we create a SearchRecipe with the start node
> of our search. And each time we stop searching a node, we add that to
> the exclude_revisions set.
> 
> Then when the remote server is given the recipe it can repeat it
> exactly, without the client's graph data, and derive the correct set of
> revisions to send to the client.
> 
> The only race condition I can think of is a ghost filling on the server
> occuring after the client searched, for a revision the client has. We
> can avoid that by cross checking the found revisios - e.g. by adding a
> count field, or a checksum.

Bah, I write this and I forget the glue...

I'm proposing that these objects become common in the bzr API; they will
have a set of the revisions found internally (so api's that take sets
today can take one of these without major disruption).

-Rob



-- 
GPG key available at: <http://www.robertcollins.net/keys.txt>.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20080111/52b05555/attachment.pgp 


More information about the bazaar mailing list