3.7 Full: Developers or Media users?
Avi Bryant
avi at beta4.com
Tue May 25 18:14:34 UTC 2004
On May 25, 2004, at 10:54 AM, Doug Way wrote:
> Sounds okay to me. I've only used Monticello a bit, so I'd want to be
> clear on what exactly this includes... (bear with me if some of my
> understanding is incorrect)
>
> - Having a good alternative to changesets for tracking chunks of code
> in a purely declarative way (including class extensions etc.) is
> definitely good, although I guess we already have that with
> PackageInfo.
Right. It's PackageInfo's job to group a set of classes and methods
into a unit. This has nothing to do with versioning or saving or
loading code, just with carving up the image. Monticello is happy to
use whatever image carving scheme you like, although PackageInfo is the
only one in use right now; in the long run I'm sure we'll have
something more sophisticated.
> - Being able to have version numbers associated with these chunks of
> code is also a good thing. I don't think we have that with
> PackageInfo, but we would with Monticello? For example, if we carve
> out the ProcessBrowser in Basic as a PI package, the image could know
> that in 3.8alpha-6124, the ProcessBrowser package is mc version 1.23.
Yes.
> (Perhaps there is an overlap with the concept of SM versions.)
SM versions are at a much coarser granularity than MC versions. Only a
small subset of the MC versions for a package will end up as releases
on SM.
> But the useful thing would be that we could determine the diffs from
> ProcessBrowser package 1.21 and 1.23 from the image, which we cannot
> really do with changesets.
Yes. The other useful thing is that if two people make independent
sets of changes to 1.23 (1.23a and 1.23b), they can be intelligently
and automatically merged to form 1.24. This can happen even if there
has been a long and complicated change history, with however many
branches and merges, in the meantime.
> Would this require connecting to a server which has the entire
> ProcessBrowser package history, or would this history be contained in
> the image itself, as it is with changesets? (At least the history
> that actually came through the image via updates.)
Each independent version of the code contains a complete snapshot of
the code as it was when the version was created. It also contains a
complete ancestry tree of the version ids from which it is descended.
A diff requires only that you have the two package versions you are
diffing. A merge requires three versions: the two versions you are
merging, and their closest common ancestor (in the example above, you'd
need 1.23a, 1.23b, and 1.23). You never need any of the intervening
versions.
> - Having the Monticello client code in Basic seems useful, too...
> being able to connect to something like SqueakSource easily.
Yes.
> - Does this also include Monticello server code? Kind of like how the
> SqueakMap package has both the SM client and SM server code. Er, ok,
> reading the Monticello description it looks like it does not, so
> nevermind. (It looks like SqueakSource is a special Monticello
> repository server app.)
Correct - there is no canonical "Monticello server", and the Monticello
package includes no server code. SqueakSource is the most
sophisticated server that Monticello can talk to right now, but a
simple ftpd works fine too.
> You mention that things like Browser should be version-control
> agnostic... I agree, I think we should be prevent inappropriate
> dependencies like that. Actually, Browser should not be dependent on
> Changesets either, which is a similar concept (although I wouldn't be
> surprised if there are some inappropriate dependencies there).
Now that the SystemChangeNotification code is in place, it should be
possible to completely separate changesets from the other tools. I'm
not sure how much of this has been done, but it would be a nice
benchmark to be able to unload ChangeSet completely and have everything
else still work.
More information about the Squeak-dev
mailing list
|