[NIT] Managing repositories in MC
Julian Fitzell
julian at beta4.com
Mon Sep 22 05:33:30 UTC 2003
Avi Bryant wrote:
> On Sunday, September 21, 2003, at 07:33 PM, Colin Putney wrote:
>
>> It does go beyond optimization, though. Right now, VersionInfo is only
>> ever part of a Version. Occassionly we'll grab a version's info,
>> examine it and then throw it away. I'm talking about making
>> VersionInfo more of a first class entity, one that might be stored or
>> transmitted on it's own.
>
>
> <snip>
>
>> To get back to the problem at hand, I'd much rather have a
>> user-definable search order for repositories than a url pointing back
>> to the snapshot. More generally, I'd like to have Monticello work with
>> naked VersionInfo much of the time, and retrieve or reconstruct full
>> Versions only when necessary.
>
>
> You make good points here. If we're going to be moving in that
> direction, I would propose the following entities:
>
> VersionReference - contains the actual name and UUID of the version
> VersionHistory - a tree of version references. Log, date, etc, should
> maybe be in these nodes as well.
> VersionInfo - contains a VersionHistory and a Package.
> Version - contains a VersionInfo and a Snapshot.
>
> There are two motivations here. One is to bring Package into
> VersionInfo, which makes VersionInfo objects more useful on their own -
> otherwise, you can't group/filter by package which is an obvious thing
> for a UI to want to do.
>
> The other is to introduce a lightweight object for when really all you
> want to do is refer to a version by ID, and you don't need all the
> ancestry - which is true in many of the places that we currently use
> VersionInfo.
>
> Anyway, with some reasonable way of representing VersionInfo on its own,
> I can definitely picture having a somewhat centralized "feed" of
> VersionInfos that you would subscribe to (ie, that would automatically
> download itself into your local cache and build pretty ancestry trees,
> etc), combined with the distributed searching through repositories that
> we currently have for actually getting the snapshots.
This all sounds quite a bit better to me.
I wanted to raise my other concern that I thought of last week: having
all the ancestry information duplicated inside every version means
there's absolutely no way I could ever go in and "fix" ancestry
information after the fact. The benefits to this approach almost
certainly hugely outweight this problem. This came up in a repository
where the first version committed was a released version of an existing
package with some modifications (can't remember whether it was seaside
or what). When I discovered this, I was annoyed that there was no
version as an ancestor that was identical to the last version in the
previous source code management system. But I realized there was no
possible way to find every version info on the planet and correct them
to contain the new ancestry.
Don't really see an obvious solution but thought I'd mention it so
others were aware of it as well. I wonder whether this is another
artifact of my CVS-mindset? Does everyone else think being able to
tweak ancestry like that is unnecessary or just a useful tradeoff?
Julian
More information about the Squeak-dev
mailing list
|