On 2012-03-02, at 09:31, Sven Van Caekenberghe wrote:
On 02 Mar 2012, at 01:52, Chris Cunningham wrote:
The issue is that Monticello is setup for distributed processing, and allowing for multiple repositories, some of which may not be available to all of the users for a project. For instance, a project might be developed internally (or on the developers hard-drive) until they feel comfortable distributing the code later. So, publicly, you get version 12, 17, 34, and 37. There is no access to the intermediate ones (unless you happen to be the one that created them and didn't release them). The 'whole ancestry' let's you do diffs off of a version derived from 37 against one derived from 34 - the ancestry can determine that version 34 if 'common', and work from there. [Note that just numbers aren't enough - the original developer, say, cbc could have version cbc.34, while you could have, say, CamilloBruni.34, but yours is based off of 17 (since you picked up that verison and started working there). So, merging cbc.37 with CamilloBruni.34 would need to pull down cbc.17 for a good merge to work.]
At least, that's my understanding from long ago discussions.
This makes sense, but how is this handled with git ?
Git always publishes all versions (unless you squash multiple versions on purpose): - generally you work and commit locally for quite some time - then you pull the latest changes from a common / remote repository - you merge with that repository The main diff to MC is that git will publish all intermediate versions as well, you can see an example of that here: https://github.com/dh83/trex/network - two people worked on the project [ black / blue ] - the blue version development happened in a different / local repos - yet all the intermediate versions between merge points are in the main [black] repos so, chris, you're absolutely right, that if you want to be able to diff against the local history you need the complete history. But I am not completely sure how the internals work with MC, but from my research so far I am almost convinced that versions are found merely by their name. Since the VersionInfo does not track the repository it relates to. having that I would say it would suffice to publish all the intermediate versions to a remote repository to get a complete and nice diff behavior with MC, no? most probably I am missing a piece here ;) best cami