Chatting on IRC the problem is basically that sprout now executes graph searches itself (via FetchSpecFactory), whereas before that was delegated to the fetch implementation.
So I think we need to revisit the design decision to restrict the fetch_spec param of fetch to implementations of AbstractSearchResult: bzr-hg and bzr-git clearly want to have some control over how Searches turned into fetches. In particular, I don't think they want to go via a SearchResult; determining what to fetch given a query is delegated to the underlying git/hg libraries.
Jelmer also points out that we could perhaps move some of the new logic onto interrepo.
Chatting on IRC the problem is basically that sprout now executes graph searches itself (via FetchSpecFactory), whereas before that was delegated to the fetch implementation.
So I think we need to revisit the design decision to restrict the fetch_spec param of fetch to implementations of AbstractSearchR esult: bzr-hg and bzr-git clearly want to have some control over how Searches turned into fetches. In particular, I don't think they want to go via a SearchResult; determining what to fetch given a query is delegated to the underlying git/hg libraries.
Jelmer also points out that we could perhaps move some of the new logic onto interrepo.