squeak fu for deleted methods

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

squeak fu for deleted methods

K K Subbu
Hi,

The version button in Browser is useful for methods which are displayed
in the method pane. What about methods which have been deleted?

E.g. How can I find the changeset/version which deleted a method, say
#translate:doInlining: without manually bisecting every changeset in a
package?

Thanks in advance .. Subbu

Reply | Threaded
Open this post in threaded view
|

Re: squeak fu for deleted methods

marcel.taeumel
Hi Subbu.

Code for that exists in the context of change sets. The regular ChangeSorter can show versions for deleted methods that are still in the change set. It's in the context menu. Also, "Recover Changes" (Extras menu) uses a maybe similar code path via ChangeList >> #browseRecentLog.

without manually bisecting every changeset in a package?

Ah, so you know about the ChangeSorter. Would be interesting to put "look for selector in .changes file" into a menu. :-)

Best,
Marcel

Am 27.05.2020 14:07:02 schrieb K K Subbu <[hidden email]>:

Hi,

The version button in Browser is useful for methods which are displayed
in the method pane. What about methods which have been deleted?

E.g. How can I find the changeset/version which deleted a method, say
#translate:doInlining: without manually bisecting every changeset in a
package?

Thanks in advance .. Subbu



Reply | Threaded
Open this post in threaded view
|

Re: squeak fu for deleted methods

K K Subbu
Marcel,

The .changes file does not contain the version history of packages
loaded through Monticello :-(.

While catching up with old Squeak discussions[1], I came across

    Interpreter translate: 'Interp.c' doInlining: false

this method was deleted in VMMaker sometime before Squeak 3.8. This is
when it struck me that deletion is not like other changes. Neither
ChangeSorter nor Monticello had a facility to search patch history for
strings :-(.

I am felt too lazy to bisect all changesets in VMMaker from that far
back. Perhaps there must be an easier way. Hence my question.

[1] http://files.squeak.org/mail/9705.html

On 27/05/20 6:38 pm, Marcel Taeumel wrote:

> Hi Subbu.
>
> Code for that exists in the context of change sets. The regular
> ChangeSorter can show versions for deleted methods that are still in the
> change set. It's in the context menu. Also, "Recover Changes" (Extras
> menu) uses a maybe similar code path via ChangeList >> #browseRecentLog.
>
>  > without manually bisecting every changeset in a package?
>
> Ah, so you know about the ChangeSorter. Would be interesting to put
> "look for selector in .changes file" into a menu. :-)
>
> Best,
> Marcel
>>
>> Am 27.05.2020 14:07:02 schrieb K K Subbu <[hidden email]>:
>>
>> Hi,
>>
>> The version button in Browser is useful for methods which are displayed
>> in the method pane. What about methods which have been deleted?
>>
>> E.g. How can I find the changeset/version which deleted a method, say
>> #translate:doInlining: without manually bisecting every changeset in a
>> package?
>>
>> Thanks in advance .. Subbu
>>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: squeak fu for deleted methods

marcel.taeumel
Hi Subbu.

The .changes file does not contain the version history of packages loaded through Monticello :-(.

Ah, you are looking for non-local versions. Anyway, you could load all those older VMMaker versions one after another to populate the .changes file. The you can update your Trunk image because "Tools-mt.970" added method recovery for the local .changes file. Should be in the "Extras" menu below "Recover changes".

Maybe it helps.

Best,
Marcel

Am 27.05.2020 16:15:31 schrieb K K Subbu <[hidden email]>:

Marcel,

The .changes file does not contain the version history of packages
loaded through Monticello :-(.

While catching up with old Squeak discussions[1], I came across

Interpreter translate: 'Interp.c' doInlining: false

this method was deleted in VMMaker sometime before Squeak 3.8. This is
when it struck me that deletion is not like other changes. Neither
ChangeSorter nor Monticello had a facility to search patch history for
strings :-(.

I am felt too lazy to bisect all changesets in VMMaker from that far
back. Perhaps there must be an easier way. Hence my question.

[1] http://files.squeak.org/mail/9705.html

On 27/05/20 6:38 pm, Marcel Taeumel wrote:

> Hi Subbu.
>
> Code for that exists in the context of change sets. The regular
> ChangeSorter can show versions for deleted methods that are still in the
> change set. It's in the context menu. Also, "Recover Changes" (Extras
> menu) uses a maybe similar code path via ChangeList >> #browseRecentLog.
>
> > without manually bisecting every changeset in a package?
>
> Ah, so you know about the ChangeSorter. Would be interesting to put
> "look for selector in .changes file" into a menu. :-)
>
> Best,
> Marcel
>>
>> Am 27.05.2020 14:07:02 schrieb K K Subbu :
>>
>> Hi,
>>
>> The version button in Browser is useful for methods which are displayed
>> in the method pane. What about methods which have been deleted?
>>
>> E.g. How can I find the changeset/version which deleted a method, say
>> #translate:doInlining: without manually bisecting every changeset in a
>> package?
>>
>> Thanks in advance .. Subbu
>>
>
>




Reply | Threaded
Open this post in threaded view
|

Re: squeak fu for deleted methods

K K Subbu
On 27/05/20 8:05 pm, Marcel Taeumel wrote:
>  > The .changes file does not contain the version history of packages
> loaded through Monticello :-(.
>
> Ah, you are looking for non-local versions. Anyway, you could load all
> those older VMMaker versions one after another to populate the .changes
> file. The you can update your Trunk image because "Tools-mt.970" added
> method recovery for the local .changes file. Should be in the "Extras"
> menu below "Recover changes".

Thank you, Marcel, for your quick action. I learned a lot about change
record handling from your code. You're right about the code being scary ;-).

I now see "Recover Method Versions" in addition to "Browse my changes",
"Recover Changes". It is not clear from their titles that they all deal
with the same underlying .changes journal. Also "Extras" is not a
logical place to look for archival records ;-).

A journal like .changes file deserves its own browser tool (Changes
Browser?) like Class Browser or Package Browser. It should present trace
history by date/time with menus to filter them by class or by selector,
by refs etc.

We can invoke it from the code browser class/method pane context menus
(e.g. 'removed methods ..' below 'remove method (x)') menu item. This
would be a logical place to look for someone who has removed one by
mistake or needs to trace a removed class/method.

I have no idea of the complexity behind my request and I don't my want
request to come across as an imposition on your time. This is just a
suggestion for simplification and integration.

Regards .. Subbu

Reply | Threaded
Open this post in threaded view
|

Re: squeak fu for deleted methods

timrowledge
Interesting that this should come up the day after I managed to over-enthusiastically delete several methods ;-)

For cases where you have recently (ish) deleted something you can look at the changesorter, find the changeset currently being used (and I suspect quite a lot of people aren't really aware they even still exist after so many years of monticello) and scan for methods with 'nil' category. When yo ufind one that seems plausible select it and use 'versions' to get a list of the... versions. 'revert' the one you  want to reclaim.

For the much longer timescale situation though we need sometihng muh cleverer. Marcel's changes file scanner will help over the lifespan of a particular changes file, which I suspect will be very helpful and a lot easier than the above. For *really* log timescales though I think we need to look at the global changes log from the beginning of time (or at least, the beginning of squeak-time. I'd be delighted if we had a doit change for 'Universe goBang' at the head of the file) which is/was/could-be kept on a server somewhere. I feel sure we do in fact have a mechanism for this somewhere in the system, feel confident that Chris Muller would have had something to do with it but damned if I can find it right now. Chris? Beuller? Anyone?


tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Oxymorons: Software documentation



Reply | Threaded
Open this post in threaded view
|

Re: squeak fu for deleted methods

K K Subbu
On 27/05/20 11:18 pm, tim Rowledge wrote:
> For cases where you have recently (ish) deleted something you can
> look at the changesorter, find the changeset currently being used
> (and I suspect quite a lot of people aren't really aware they even
> still exist after so many years of monticello) and scan for methods
> with 'nil' category. When yo ufind one that seems plausible select it
> and use 'versions' to get a list of the... versions. 'revert' the one
> you  want to reclaim.

I was trying to trace

   Interpreter class>>translate:doInlining:

method which could have been deleted sometime between 3.1beta-4411 and
3.2-4956 :

Squeak3.1beta-4411 (3/10/2001)
   jm  5/30/2000 translate:doInlining:
   ar  2/5/2001 translate:doInlining:forBrowserPlugin:
Squeak3.2-4956 (8/20/2002)
   tpr 4/9/2002 translateInDirectory:doInlining:forBrowserPlugin

but *3.2-4956.changes goes back only upto to 4935 and does not contain a
delete record for this method. The change must have occurred between
4411 to 4934. I have no idea of how to get to these records.

But the real reveal here is the poor integration between code browser
and change log browser, particularly when class/methods are deleted. I
had to use the vim editor on changes file to verify missing records.

Should there be a special *Deleted* category to display these methods in
the code pane until the deletion is committed to *.sources?

Regards .. Subbu

Reply | Threaded
Open this post in threaded view
|

Re: squeak fu for deleted methods

timrowledge


> On 2020-05-28, at 4:49 AM, K K Subbu <[hidden email]> wrote:
>
> On 27/05/20 11:18 pm, tim Rowledge wrote:
>> For cases where you have recently (ish) deleted something you can
>> look at the changesorter, find the changeset currently being used
>> (and I suspect quite a lot of people aren't really aware they even
>> still exist after so many years of monticello) and scan for methods
>> with 'nil' category. When yo ufind one that seems plausible select it
>> and use 'versions' to get a list of the... versions. 'revert' the one
>> you  want to reclaim.
>
> I was trying to trace
>
>  Interpreter class>>translate:doInlining:
>
> method which could have been deleted sometime between 3.1beta-4411 and 3.2-4956 :

Yah; I think this is something the history browser stuff Chris M did would be well placed to answer.


tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Strange OpCodes: REP: Randomly Execute Programmers