> One of the thing that can be done is to temporarily copy all the versions 
> concerned into a Git-based repository with Iceberg or GitFileTree, and then 
> sees if git can provides a better diff, or even a git blame ability

Great tip, thanks, Thierry!

-- Siemen

> . I've done that multiple times... copy multiple versions in a repo, study 
> the diff, and then just throw it away.
> 


> Thierry
>  
>> 
>> Thanks for enlightening me!
>> 
>> Siemen
>> 
>> On Thu, Mar 30, 2017 at 4:57 PM, Thierry Goubier <thierry.goub...@gmail.com> 
>> wrote:
>>> 
>>> 
>>> 2017-03-30 16:42 GMT+02:00 Ben Coman <b...@openinworld.com>:
>>>> On Thu, Mar 30, 2017 at 2:58 PM, Siemen Baader <siemenbaa...@gmail.com> 
>>>> wrote:
>>>> > Below is a fileout of 'ConfigurationOfPharoJS'. I download new releases 
>>>> > of
>>>> > PharoJS as they become available. Recently I found a regression  - a  
>>>> > method
>>>> > 'PjApplication class >> playgroundWithoutLaunch' did not work any more. 
>>>> > What
>>>> > I wanted to do was to revert the whole project to an earlier version 
>>>> > until
>>>> > the method worked again - then look for the code that has been changed
>>>> > between releases and find the bug.
>>>> >
>>>> > In practice, even the earliest version (version 1.0 - method #version10) 
>>>> > did
>>>> > have the bug and I could not roll back the project to earlier release 
>>>> > states
>>>> > because there is no metadate for them. But I'd still like to learn how 
>>>> > to do
>>>> > it, so let's just say I want to compare version 1.2 and 1.3:
>>>> >
>>>> > version12: spec
>>>> > <version: '1.2' imports: #('0.1-baseline' )>
>>>> >
>>>> > version13: spec
>>>> > <version: '1.3' imports: #('0.2-baseline' )>
>>>> >
>>>> >
>>>> > I hope this makes sense. Thanks for helping me understand!
>>>> 
>>>> You can only directly diff the Configurations themselves.
>>>> I fairly sure you can't auto-diff the packages loaded by each 
>>>> configuration.
>>>> This is a missing feature.  It would be nice to have something like
>>>> the merge-diff,
>>>> but there are probably other priorities.  Maybe the new git workflow
>>>> will open some possibilities??
>>> 
>>> If you have a project-oriented way of committing to git (you commit both 
>>> the configuration and all the packages in one commit), then diffing via git 
>>> would work.
>>> 
>>> Current status on that feature is:
>>> 
>>> - BaselineOf and all related packages save in one commit can be done with 
>>> GitFileTree. I added an API for that and made a few experiments by 
>>> organising and saving projects via the Metacello registry (with GUI 
>>> support). I rolled back that extension in AltBrowser and I will reimplement 
>>> it soon in a different, better way.
>>> 
>>> - Iceberg ?
>>> 
>>> - ConfigurationOf ? The approach of storing a configurationOf inside a meta 
>>> repository makes implementing that harder.
>>> 
>>> Now, I think the tools would probably be able to get that to work over 
>>> Monticello with few changes, but they are a tad complex to implement, as in 
>>> loading two different configurationsOf and resolving related packages 
>>> (without loading them), and then changing the diff viewer to project all 
>>> differences between all classes of the two groups of packages. One thing to 
>>> remember is that complete packages, in multiple versions, can be loaded 
>>> simultaneously as Monticello models without disrupting the code currently 
>>> loaded and active in the image, as when you "browse" a Monticello package 
>>> on disk.
>>> 
>>> Thierry
>>>  
>>>> 
>>>> cheers -ben
> 

Reply via email to