On Sun, Jan 14, 2018 at 7:11 PM, Dale Henrichs <
[email protected]> wrote:

> I've been skimming the ironically named "blame" thread and just want to
> clear up some apparent misconceptions.
>
> git/github is not the reason that the author/timestamps information was
> "lost" ... when tonel was introduced the author/timestamp info was not
> included in the format as a separately serialized file. filetree's
> implementation of author/timestamp support (around for almost 6 years now)
> was an annoying source of commit conflicts and often prevented automatic
> merges.
>
> git/github has perfectly functional blame support[1], so the decision to
> rely on git for supplying the author/timestamp for tonel was a sound
> decision. Thierry Goubier's GitFileTree[2] implementation does a very good
> job of converting git author/timestamp information into Monticello meta
> data, and is proof that author/timestamp information can be extracted from
> a git repository.
>
> AFAICT, the single issue here is that the code to link between git's
> author/timestamp information and the in-image author/timestamp information
> has not been written YET ...
>

Actually, I remember Esteban doing a prototype some months ago. The idea
was to query author/timestamp information from git just after
bootstrapping, and to embed this information in the resulting image.
The problem is that this approach was SUPER slow, because it had to blame
on each method. And increasing the build times is not very nice because it
kind of slows down the frequency of integrations, specially during sprints.

Now, each commit usually changes only a couple of methods, so
author/timestamp of methods will remain the same for 99.9% of the methods
most of the time. It would be possible to cache it and re-calculate the new
ones following the commit diff. At least this would restore the timestamp
of the methods found in the image.

A second point, and orthogonal to the previous one, would be to also manage
the "browse versions". Today the version browser queryies only the changes
file. I think it would make sense to do it by epicea files (for local
modifications) and then fallback to a git repository (if any) to give a
full history. Technically, it should not be difficult to do, except for the
detail that the repository was transformed at some point from filetree to
tonel, so blame will not quite work out of the box :).


> git/github is not the reason that there are "1000's of files on disk".
> Tonel uses a file per class format which significanly reduces the file
> count for Smalltalk repositories on disk. FileTree format uses a file per
> method format and for large projects leads to a large number of files,
> which in and of itself is not a problem (at least for git), but does lead
> to excessive disk space consumption.
>
> SmalltalkCI[2], which provides support for Smalltalk on travis-ci[3] and
> appveyory[4] was created by Fabio Niephaus an active member of the Squeak
> community. Travis-ci makes it possible to run cross-dialect tests to
> validate github pull requests and checkins[5] for cross-dialect projects.
>
> It seems that there are at least some (less vocal) members of the Squeak
> community who are interested in using git.
>
> Dale
>
> [1] https://www.git-scm.com/docs/git-blame
> [2] https://github.com/hpi-swa/smalltalkCI
> [3] https://travis-ci.org/
> [4] https://www.appveyor.com/
> [5] https://travis-ci.org/Metacello/metacello
>
>


-- 



Guille Polito

Research Engineer

Centre de Recherche en Informatique, Signal et Automatique de Lille

CRIStAL - UMR 9189

French National Center for Scientific Research - *http://www.cnrs.fr
<http://www.cnrs.fr>*


*Web:* *http://guillep.github.io* <http://guillep.github.io>

*Phone: *+33 06 52 70 66 13

Reply via email to