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 |
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
|
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 >> > > |
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
|
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 |
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 |
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 |
> 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 |
Free forum by Nabble | Edit this page |