-
This is intended for two things: * replacing the Brancher abstraction backing the current 'get -s' impl * the basis for source repo support in cabal.package files The latter is a bit more complex as it requires not just fetching a fresh repo, but syncing a repo to a specific tag, commit or branch. The approach assumes that we keep a cached copy so that most changes are cheap and it optimises things by allowing sharing data between multiple commits of the same repo, and multiple packages within the same repo. For example, it will be possible to specify the same repo in the cabal.project file for more than one package, and have those packages either in separate subdirs of the same commit, or on different commits/tags/branches. In the former case we use a single checkout while in the latter case we use two checkouts, but share repo data as far as possible.
c738ddd1