[squeak-dev] Re: [Pharo-dev] How to get started with Git and Pharo?

Chris Muller asqueaker at gmail.com
Thu Jul 17 21:28:06 UTC 2014

> On Thu, Jun 26, 2014 at 3:16 PM, Dale Henrichs <
> dale.henrichs at gemtalksystems.com> wrote:
>> My favorite feature by far is the ability to look at the git history of
>> the methods themselves ... just the other day I had a bug that I was
>> tracking down, and by looking at the git history I discovered that a
>> critical change had been made to that method 1 year 12 days ago ... from
>> that I was able to look at all of the changes to all of the packages that
>> had been made in the same commit (the critical code had not only been moved
>> to a different class but the critical method had been moved to a separate
>> package ... and from that I was able to see that a bug had been introduced
>> when not all of the critical method was moved ... bug fixed ...
> Chris Muller has recently done some superb work in Squeak with his Magma
> database that provides exactly this within the existing Monticello
> framework.  In current Squeak 4.5 images if you add the repository

Hey, glad it could be useful!  Just for clarity, one thing MC doesn't do is
track single commits that include changes across multiple packages.  In
Dale's story, the "critical code had not only been moved to a different
class but the critical method had been moved to a separate package" -- MC
doesn't have anything to track "multipackage commits"; (I don't think it
needs it, even though it proved useful in Dale's example, because when we
have a set of packages we care to work together, MC can instantiate a
MCConfiguration to define it).

The reason you were able to see the history of WeakRegistry today even
though it had been moved from Collections to System is that the
MCDefinitions instances are indexed simply by their #description, which is
package agnostic.  It didn't care that it moved packages.

> MCHttpRepository
>  location: 'http://box4.squeak.org:8888/trunk'
>  user: 'squeak'
>  password: 'squeak'
> to the Monticello Browser and then add it to the packages one is
> interested in (a script to add it to all is trivial), then a "Browse mc
> history" menu item becomes available on the class and method lists in the
> browser and voila, one can browse the entire class and/or method history.
> This feature has been missing for a long time.  I really needed it this
> morning and wasn't quite aware that it was available already.   I expect
> this will become a standard feature of new Squeak releases.  The server can
> easily be duplicated on one's own machine for working detached from the
> internet (e.g. via http://localhost:8888/mchistory) and updates itself at
> regular intervals.

It was released with Squeak 4.5.  The box4 server supporting it has been
running for 7-8 months.

> Besides method versions, you can look at the git history for a class,
>> package or metacello project .... these are thing that would take a bit of
>> work to accomplish using just Monticello ... and if you were to attempt to
>> do it, the simplest thing to do would be to copy all of the packages into a
>> git repository and just use git:) Frank Shearar wrote some code that did
>> something along these lines a couple of years ago ...
> But the work's mostly been done.  Chris's work provides class & method.
>  Package history is there already, with "search history" providing free
> text search through a specific package's history, and Chris will be
> providing keyword search across all packages soon.

TMK, Pharo did not adopt the MCRepository changes we did, so there would be
issues in Pharo.  The box4 tool is intended only as a tool to help
Monticello users..  Every kind of MC backend will have its own pluses and
minuses, it's an area worth exploring in multiple directions..
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20140717/5b9a3927/attachment.htm

More information about the Squeak-dev mailing list