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