[Seaside] Toggle Halos issue
C. David Shaffer
cdshaffer at acm.org
Sat Apr 23 00:10:47 CEST 2005
Avi Bryant wrote:
>MC handles branching and merging much better than it handles
>overrides. In general, rather than overriding a package's methods, I
>think a good strategy is to publish a branch of that package that has
>the modifications you want. Anyone loading, say,
>SeasideTesting-cds.32 would also want to merge in
>Seaside.seasidetesting-cds.32. This wouldn't let them publish
>Seaside, but it would accurately record what had happened if they did.
>
>
How would I track my overrides? Looking at the diffs from the base
version? I'm not really fond of this idea but maybe I just need time to
let it sink in. I'd like something more natural but I appreciate that
what you are suggesting gets us part of the way there. In VW, for
example, it keeps the source to the overridden methods. I have heard
some grumblings on vwdev about people having problems with this but I
personally use it a lot and never had any lost code. (I think that the
people having problems didn't correctly indicate that they were
overriding a method in a different package...you have to use the tools
properly for it to work!).
Now that I think about it...can we back up and be more explicit (all
version numbers are ficticious):
My development image:
--- from where I am now ---
1) Load Seaside-avi.10
2) Publish (in a public repository) Seaside.seasidetesting-cds.1
3) Load SeasideTesting-cds.932 (I publish way too often)
4) Make changes that I need to Seaside
(and move them out of *SeasideTesting-override* category) and
publish Seaside.seasidetesting-cds.2
5) Publish SeasideTesting-cds.933
6) Write a script which:
loads SeasideTesting-cds.933
merges Seaside.seasidetesting-cds.2 (yes, keeping the version
numbers equal is a good idea)
that script becomes my SqueakMap load script
----- a new release of Seaside comes along -----
1) merge Seaside-avi.11
2) publish merged version as Seaside.seasidetesting-cds.3
3) (publish new SeasideTesting if needed)
4) Write new load script
---- I create a new devel image to move to 3.8 or whatever ----
1) Load Seaside.seasidetesting-cds.3 (no need to load
Seaside-avi.11, right)
2) Load SeasideTesting (most recent).
>From a ST user's point of view:
1) Load Seaside-avi.10 (via SqueakMap or whatever)
2) Execute my load script which will give them an error if it sees
that they are trying to merge Seaside.seasidetesting-cds.3 with an older
version of Seaside and a conflict exists.
> It would also warn them before loading a new version of Seaside that
>they were about to blow away the changes. And it would give the
>notification you wanted that the modified methods had changed in the
>meantime, in the form of a merge conflict.
>
>
How are they going to get a merge conflict if they "load" the most
recent Seaside into an image with ST already in it? I would think it
would just blow away my overrides. Maybe I just need to try it. Now, I
can see the other way around that if I load Seaside and then merge in my
branch that I will get merge conflicts...as described above.
>
>The biggest hassle here is how you distribute such a thing - right now
>the only way would be as a small script that requested that MC merge
>one version and load the other. What we probably want are "merge
>dependencies" as well as "load dependencies"...
>
>
Can I merge in code and catch a notification or something to avoid
raising the merge dialog? An experienced user could always manually
merge in my branch and deal with conflict resolution so this does not
present a real barrier to loading ST.
I don't understand your wording: "...requested that MC merge one version
and load the other." Just to make sure I understand, I want it to load
then merge as described above, right?
Maybe this discussion should be on the MC list?
David
--
C. David Shaffer
http://www.cs.westminster.edu/~shaffer
http://www.shaffer-consulting.com
More information about the Seaside
mailing list