change-sets-vs-snapshots

Colin Putney cputney at wiresong.ca
Sun Feb 17 04:24:59 UTC 2008


On 16-Feb-08, at 4:19 PM, Jerome Peace wrote:

>> The perfect revision control system thread
>> Colin Putney cputney at wiresong.ca
>> Sat Feb 16 21:00:08 UTC 2008  wrote:
>>
>> If you look at discussion of versioning system around
> the net, you'll
>> run across bitter arguments about
> change-sets-vs-snapshots. As far as
>> I can tell, the two are information-equivalent. I
> think it boils down
>> to how you prefer to think about the problem.
>>
> ***
>
> This would be about arguing income statements vs.
> balance sheets.
>
> The info is complementary not the same.  Change-sets
> get you from snapshot to snapshot. The difference
> between two snapshots is a change but not a sequence
> of change sets.  The use case that point this out is a
> move or a swap
>

> the change needed for a swap is:
> temp := a .
> a := b .
> b := temp .

If you look closely, you'll see that I claimed that the information is  
equivalent, not the same. In the transition from a starting state to a  
end state, you can represent the intermediate states with snapshots or  
deltas. In your example above you've got 3 changes. There are  
corresponding snapshots as well:

Imagine that we have a starting state like this:

a -> $a, b -> $b, temp -> nil

Then your sequence of changes corresponds to the following snapshots:

a -> $a, b -> $b, temp -> $a
a -> $b, b -> $b, temp -> $a
a -> $b, b ->$a, temp -> $a

> See:
> http://lists.squeakfoundation.org/pipermail/squeak-dev/2006-February/101071.html
> For an Andreas Raab take on this with the original MC.

Initially I misunderstood what Andreas meant by maintaining live  
systems. He was right, though, to say that MC wasn't designed for  
that. MC solves a different problem - that of integrating changes by  
different developers. I think that, practically, it's not possible to  
maintain a live system in an automated way.  As a simple example,  
consider converting a Point from cartesian coordinates to polar. The  
only way to do it is to write a little script - change sets won't do it.

The update stream would have no problems with a Point conversion  
script, of course. People tend to think of changes sets and the update  
stream as the same thing, but that's not the case. Up until Squeak  
3.9, the update stream included scripts that applied change sets, but  
the 3.9 release team used scripts that loaded MC packages instead.  
Neither MC nor change sets can properly migrate Point instances, but  
the update stream, being more general than either, has no problem with  
it.

> My curiosity is, if you are thinking what you said
> above, do you still have a blind spot for time and
> sequence?

Well, I'll be the first to admit that I don't fully understand this  
stuff. I'm not sure what you mean by "blind spot" though... is there  
something you find particularly frustrating about MC or my comments  
about versioning?

> As a bug tracker I find it helps to follow the beast
> every step of the way. The culprit sometimes covers
> his tracks and it is best to catch him in the act.

Huh? I'm afraid I don't understand the metaphor.

Colin





More information about the Squeak-dev mailing list