Support for working DVCS with a repo "hierarchy" and easy local repo creation/sync
Definition: when I refer to a repo "hiearchy", I mean some repo ("the top" level repo) and all of the repos xlinked below it (those repos may contain xlinks to repo, thus the "hierarchy").
Today, if you have a large and complex repo hierarchy, it make it very difficult to work distributed.
Use case: A "top" level repo than contains in it's referenced "repo hierarchy" 200-300 other repos via xlink. These other repos may be several levels of xlink deep. The purpose of all of the xlinks is component/reuse structure of coding.
While creating such a repo on a central server, and having everyone work on the repo hierarchy on the central server is fairly straight forward, it is extremely difficult for someone who would like to be able to setup to work with this repo hierarchy using DVCS. I can make sure each xlink is "relative" so that it does not depend on being able to see the central server, but that does not address the following problems in setting up a sync to my local PC:
1) I need to determine the entire list of xlinked repo names, and recreate each of those repos locally (keeping the names the some or the relative xlinks will not work even after sync'd).
2) I now have to setup a sync and add each source/destination pair for each of the 200-300 repo in the repo hierarchy. All of this is doable, but very tedious and error prone.
One proposed solution to this use case issue: Have a way that either during sync setup, and/or during sync itself to:
a) Create any local repo needed to correspond to any of the repos in the repo hierarchy (top repo listed in the sync and all xlink'd repo below in the hierarchy).
b) auto-sync (or option to sync) all repos in the hierarchy just by adding the top level repo to the sync pair (sync'd to the same named local repo).
Whatever the method, it need to account for the fact that the repo hierarchy (which repos are referenced by xlinks in the hierarchy) can and will change over time (at least added to).
Thanks for the great explanation.
Yes, definitely you made a point here. Not easy to implement, by the way, but it will sure add a lot of value to the product.
I'll keep you posted about it. We'll need to discuss it internally, but it is all a matter of timing, it definitely makes sense.