[ANN] No-Metadata mode for GitFileTree

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

[ANN] No-Metadata mode for GitFileTree

Thierry Goubier
Oh yes,

I can announce that from now on, the development version of GitFileTree
for Pharo 5 handles FileTree repositories without most of the metadata
(precisely version and methodProperties).

This makes the format a lot more DVCS friendly (Git, Fossil, Hg, SVN,
all...) by cutting the noise on diffs and conflicts on merge and cherry
picking.

Note: it only apply to brand new repositories; nothing is changed for
pre-existing ones.

Note2: reading those Metadata-less repositories with FileTree does give
you packages without metadata: no version history, no author, no author
nor timestamp on methods.

Note3: it is possible to hack a repo from metadata to non-metadata mode,
but I won't explain it.

Enjoy and tell me how it works for you. I'm especially interested by
heavy branchers/mergers reports :)

Thierry

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] No-Metadata mode for GitFileTree

Dale Henrichs-3


On 11/7/15 10:00 AM, Thierry Goubier wrote:

> Oh yes,
>
> I can announce that from now on, the development version of
> GitFileTree for Pharo 5 handles FileTree repositories without most of
> the metadata (precisely version and methodProperties).
>
> This makes the format a lot more DVCS friendly (Git, Fossil, Hg, SVN,
> all...) by cutting the noise on diffs and conflicts on merge and
> cherry picking.
>
> Note: it only apply to brand new repositories; nothing is changed for
> pre-existing ones.
>
> Note2: reading those Metadata-less repositories with FileTree does
> give you packages without metadata: no version history, no author, no
> author nor timestamp on methods.
>
> Note3: it is possible to hack a repo from metadata to non-metadata
> mode, but I won't explain it.
>
> Enjoy and tell me how it works for you. I'm especially interested by
> heavy branchers/mergers reports :)
>
> Thierry
>
Thierry,

You want to double check that Metacello works correctly with these
metadata-less packages ... if you are continuing to increment the
"package version" there shouldn't be a problem, but when I did a similar
experiment a year or so ago, I found that I had to teach Metacello to
ignore the "package version" and load the package anyway ... the normal
procedure for Monticello packages and Metacello is not load a package if
the "package version" is less than or equal to the package already
loaded .... I did make an extension to Metacello to make this work ....
I can hunt it up if needed and make it part of the standard release (I
may have kept it as part of tODE) ...

Dale

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] No-Metadata mode for GitFileTree

Thierry Goubier
Le 08/11/2015 17:41, Dale Henrichs a écrit :

>
>
> On 11/7/15 10:00 AM, Thierry Goubier wrote:
>> Oh yes,
>>
>> I can announce that from now on, the development version of
>> GitFileTree for Pharo 5 handles FileTree repositories without most of
>> the metadata (precisely version and methodProperties).
>>
>> This makes the format a lot more DVCS friendly (Git, Fossil, Hg, SVN,
>> all...) by cutting the noise on diffs and conflicts on merge and
>> cherry picking.
>>
>> Note: it only apply to brand new repositories; nothing is changed for
>> pre-existing ones.
>>
>> Note2: reading those Metadata-less repositories with FileTree does
>> give you packages without metadata: no version history, no author, no
>> author nor timestamp on methods.
>>
>> Note3: it is possible to hack a repo from metadata to non-metadata
>> mode, but I won't explain it.
>>
>> Enjoy and tell me how it works for you. I'm especially interested by
>> heavy branchers/mergers reports :)
>>
>> Thierry
>>
> Thierry,
>
> You want to double check that Metacello works correctly with these
> metadata-less packages ... if you are continuing to increment the
> "package version" there shouldn't be a problem, but when I did a similar
> experiment a year or so ago, I found that I had to teach Metacello to
> ignore the "package version" and load the package anyway ... the normal
> procedure for Monticello packages and Metacello is not load a package if
> the "package version" is less than or equal to the package already
> loaded .... I did make an extension to Metacello to make this work ....
> I can hunt it up if needed and make it part of the standard release (I
> may have kept it as part of tODE) ...

Hi Dale,

GitFileTree without metadata on disk does not mean no metadata for
Monticello/Metacello to work with; as long as you reach the git log
info, then it will work exactly as usual (incrementing version numbers,
etc...), with the usual caveats (i.e., if you limit depth when cloning
with git, version numbers do change).

However, when accessing via FileTree (for example github:// urls), then,
yes, version numbers become 1.

It will only matter when updating an already loaded project via a
github:// or bitbucket:// url. And there, simply allowing Metacello to
load if repository version is >= to existing version should take care of it.

I have an idea of possible solutions. We'll see how it goes and solve
that when we'll have a serious push around git ;)

Thierry

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] No-Metadata mode for GitFileTree

Thierry Goubier
In reply to this post by Dale Henrichs-3
Hi Dale,

I'm back at that again.

And I think that Metacello is already failing with repositories that
have true branches (git + filetree). Metacello delegates to Monticello
which rely on full ordering to establish upgrades or loading
preferences. And on repositories with branches, each branch has its own
ordering, making upgrades a possible problem (such as switching to a new
branch with a new version and discover there that the top of that branch
has a lower version number than the previous version == no load).

Granted, this is less probable, but could surprise...

Now, if Metacello could use the semantic versionning present in the
Configurations and Baselines...

Thierry

Le 08/11/2015 17:41, Dale Henrichs a écrit :

>
>
> On 11/7/15 10:00 AM, Thierry Goubier wrote:
>> Oh yes,
>>
>> I can announce that from now on, the development version of
>> GitFileTree for Pharo 5 handles FileTree repositories without most of
>> the metadata (precisely version and methodProperties).
>>
>> This makes the format a lot more DVCS friendly (Git, Fossil, Hg, SVN,
>> all...) by cutting the noise on diffs and conflicts on merge and
>> cherry picking.
>>
>> Note: it only apply to brand new repositories; nothing is changed for
>> pre-existing ones.
>>
>> Note2: reading those Metadata-less repositories with FileTree does
>> give you packages without metadata: no version history, no author, no
>> author nor timestamp on methods.
>>
>> Note3: it is possible to hack a repo from metadata to non-metadata
>> mode, but I won't explain it.
>>
>> Enjoy and tell me how it works for you. I'm especially interested by
>> heavy branchers/mergers reports :)
>>
>> Thierry
>>
> Thierry,
>
> You want to double check that Metacello works correctly with these
> metadata-less packages ... if you are continuing to increment the
> "package version" there shouldn't be a problem, but when I did a similar
> experiment a year or so ago, I found that I had to teach Metacello to
> ignore the "package version" and load the package anyway ... the normal
> procedure for Monticello packages and Metacello is not load a package if
> the "package version" is less than or equal to the package already
> loaded .... I did make an extension to Metacello to make this work ....
> I can hunt it up if needed and make it part of the standard release (I
> may have kept it as part of tODE) ...
>
> Dale
>
>


Reply | Threaded
Open this post in threaded view
|

Re: [ANN] No-Metadata mode for GitFileTree

Dale Henrichs-3
In reply to this post by Thierry Goubier


On 11/8/15 2:04 PM, Thierry Goubier wrote:

> Le 08/11/2015 17:41, Dale Henrichs a écrit :
>>
>>
>> On 11/7/15 10:00 AM, Thierry Goubier wrote:
>>> Oh yes,
>>>
>>> I can announce that from now on, the development version of
>>> GitFileTree for Pharo 5 handles FileTree repositories without most of
>>> the metadata (precisely version and methodProperties).
>>>
>>> This makes the format a lot more DVCS friendly (Git, Fossil, Hg, SVN,
>>> all...) by cutting the noise on diffs and conflicts on merge and
>>> cherry picking.
>>>
>>> Note: it only apply to brand new repositories; nothing is changed for
>>> pre-existing ones.
>>>
>>> Note2: reading those Metadata-less repositories with FileTree does
>>> give you packages without metadata: no version history, no author, no
>>> author nor timestamp on methods.
>>>
>>> Note3: it is possible to hack a repo from metadata to non-metadata
>>> mode, but I won't explain it.
>>>
>>> Enjoy and tell me how it works for you. I'm especially interested by
>>> heavy branchers/mergers reports :)
>>>
>>> Thierry
>>>
>> Thierry,
>>
>> You want to double check that Metacello works correctly with these
>> metadata-less packages ... if you are continuing to increment the
>> "package version" there shouldn't be a problem, but when I did a similar
>> experiment a year or so ago, I found that I had to teach Metacello to
>> ignore the "package version" and load the package anyway ... the normal
>> procedure for Monticello packages and Metacello is not load a package if
>> the "package version" is less than or equal to the package already
>> loaded .... I did make an extension to Metacello to make this work ....
>> I can hunt it up if needed and make it part of the standard release (I
>> may have kept it as part of tODE) ...
>
> Hi Dale,
>
> GitFileTree without metadata on disk does not mean no metadata for
> Monticello/Metacello to work with; as long as you reach the git log
> info, then it will work exactly as usual (incrementing version
> numbers, etc...), with the usual caveats (i.e., if you limit depth
> when cloning with git, version numbers do change).
>
> However, when accessing via FileTree (for example github:// urls),
> then, yes, version numbers become 1.
>
> It will only matter when updating an already loaded project via a
> github:// or bitbucket:// url. And there, simply allowing Metacello to
> load if repository version is >= to existing version should take care
> of it.
This is the sticky wicket ... what I did to "solve the problem" was to
define a Cypress url (I think) that would arrange for the proper loading
to take place (ignore monticello meta data and load unconditionally)
.... this sounds bad, but Monticello is smart enough to only load the
changed definitions, so loading the same package over and over will not
load anything ... you do get the overhead of ccreating definitions from
disk ... but that might not be as big a deal these days ...
>
> I have an idea of possible solutions. We'll see how it goes and solve
> that when we'll have a serious push around git ;)

Agreed ... I just wanted to point out this potentially surprising tidbit:)

Dale

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] No-Metadata mode for GitFileTree

Dale Henrichs-3
In reply to this post by Thierry Goubier


On 11/9/15 5:08 PM, Thierry Goubier wrote:

> Hi Dale,
>
> I'm back at that again.
>
> And I think that Metacello is already failing with repositories that
> have true branches (git + filetree). Metacello delegates to Monticello
> which rely on full ordering to establish upgrades or loading
> preferences. And on repositories with branches, each branch has its
> own ordering, making upgrades a possible problem (such as switching to
> a new branch with a new version and discover there that the top of
> that branch has a lower version number than the previous version == no
> load).
Hmmm ... I can see that this could happen ...
>
> Granted, this is less probable, but could surprise...
I don't like surprises:)
>
> Now, if Metacello could use the semantic versionning present in the
> Configurations and Baselines...
Semantic versioning is only used in ConfigurationOf subclasses  ... the
notion with git is that the branch should be loaded whether or not it is
an "Monticello package upgrade" or not... I'll have to think on this one
a bit .... I'm in Buenos Aires for Smalltalks this week ... but I
consider this to be somewhat of a major bug, given that folks are moving
more and more to git .... it may be as "simple" as turning on the
"cypress url" for all FileTree repos .... but I want to think through
this one a bit more ...

Dale


Reply | Threaded
Open this post in threaded view
|

Re: [ANN] No-Metadata mode for GitFileTree

Dale Henrichs-3
Submitted a FileTree bug[1] for this ... I think this is more a function
of FileTree than Metacello ... but I have to uncover the "cypress fix"
and then think about the best place to make the fix ....

Dale

[1] https://github.com/dalehenrich/filetree/issues/166

On 11/9/15 5:27 PM, Dale Henrichs wrote:

>
>
> On 11/9/15 5:08 PM, Thierry Goubier wrote:
>> Hi Dale,
>>
>> I'm back at that again.
>>
>> And I think that Metacello is already failing with repositories that
>> have true branches (git + filetree). Metacello delegates to
>> Monticello which rely on full ordering to establish upgrades or
>> loading preferences. And on repositories with branches, each branch
>> has its own ordering, making upgrades a possible problem (such as
>> switching to a new branch with a new version and discover there that
>> the top of that branch has a lower version number than the previous
>> version == no load).
> Hmmm ... I can see that this could happen ...
>>
>> Granted, this is less probable, but could surprise...
> I don't like surprises:)
>>
>> Now, if Metacello could use the semantic versionning present in the
>> Configurations and Baselines...
> Semantic versioning is only used in ConfigurationOf subclasses ... the
> notion with git is that the branch should be loaded whether or not it
> is an "Monticello package upgrade" or not... I'll have to think on
> this one a bit .... I'm in Buenos Aires for Smalltalks this week ...
> but I consider this to be somewhat of a major bug, given that folks
> are moving more and more to git .... it may be as "simple" as turning
> on the "cypress url" for all FileTree repos .... but I want to think
> through this one a bit more ...
>
> Dale
>