[squeak-dev] Re: The Trunk: Monticello-ar.379.mcz

Andreas Raab andreas.raab at gmx.de
Thu Mar 11 04:41:53 UTC 2010

On 3/10/2010 7:34 PM, Colin Putney wrote:
> Well, if you really must have such a check, then yes, please make it a preference.
> But I think we're talking past each other. It really is better, from a package-history point of view, to commit regardless of what else is in the repository, and merge afterward.

Wow. I'm amazed to hear you say that. Package history is specifically 
one of the main reason why I prefer merging before commit. For example, 
let's look at the package history of the System package in current trunk:

System-ar.290: Ancestors: System-ar.285, System-laza.289 ==+--+
System-ar.285: Ancestors: System-ar.284 <==================+  |
System-laza.289: Ancestors: System-nice.288----------------+--+
System-ar.284: Ancestors: System-dtl.283, System-ar.283<===+  | <-+
System-nice.288: Ancestors: System-nice.287 <--------------+--+   |
System-dtl.283 Ancestors: System-ar.282 <==================+  |   |
System-ar.283: Ancestors: System-ar.282 <==================+  | <-+
System-nice.287: Ancestors: System-nice.286 <--------------+--+   |
System-ar.282: Ancestors: System-ar.281 <==================+  |   |
System-nice.286: Ancestors: System-nice.285 <--------------+--+   |
System-ar.281: Ancestors: System-ar.280 <==================+  |   |
System-nice.285: Ancestors: System-nice.284, System-ar.284 <--+ --|
System-ar.280: Ancestors: System-ar.279 <==================+  |   |
System-nice.284: Ancestors: System-dtl.283 <------------------+---+

(I find this impossible to understand even *with* the ascii graph)

Let's assume I need to isolate a change, when it happened to either 
verify if it was in a shipped product version or not. Look at the last 
line in the above: If you're going down you might expect that 
System-dtl.283 is below ("before") System-nice.284. But it's not. It's 
actually *eight* lines on top of it. So is System-ar.284 merged by 
System-nice.285. In other words there is no consistency in the graph - 
you cannot assume that something that happened before something else 
appears below it. Now let's look at a nice simple plain 
merge-before-commit version history:

Traits-ar.282: Ancestors: Traits-ar.281   <-+
Traits-ar.281: Ancestors: Traits-nice.280 <-+
Traits-nice.280: Ancestors: Traits-ar.279 <-+
Traits-ar.279: Ancestors: Traits-ar.278   <-+
Traits-ar.278: Ancestors: Traits-nice.277 <-+
Traits-nice.277: Ancestors: Traits-ul.276 <-+

How's that for simplicity? I don't need the ascii graph to understand 
the relation between the package versions, I can simply scroll through 
the version history can find the package that I'm interested in, or use 
binary subdivision to compare changes to see when a change was made.

Nothing personal, Colin, I really appreciate what you guys have been 
doing but I don't see how one could possibly say that merge-after-commit 
is better for package history. The precise opposite seems to be true.

   - Andreas

More information about the Squeak-dev mailing list