Archive of UserLand's first discussion group, started October 5, 1998.

Re: WebEdit for Frontier 6 is available

Author:Jacob Savin
Posted:3/19/1999; 4:47:20 PM
Topic:scriptingNews outline for 3/19/99
Msg #:4315 (In response to 4313)
Prev/Next:4314 / 4317

That's good. It seems as though, with the recent additions, you guys have decided to base your VCS model on a concept similar to Projector in MPW. This looks like it's going to be vastly improved over what was there before.

Forgive my ranting for a moment here, though... (I just spent about a month researching VCS for my company, and implemented our new system.)

With the system I've now got in place at my work (Perforce), multiple people can make changes to a file at once, and since the VCS system has a quasi-automagic merging facility, most of the time this is just fine. You of course, always get the option of examining the merged file before commiting any changes. The concept is simple, in that the server (like Webedit) only keeps the master version of the object, and a list of who's got what version, and whether or not they also have the object checked out.

The magic happens just before an object is checked back in. One does a "sync" (like a root update) to get all the most recent versions of the objects, but if you have an object checked out, and the server wants to also update you to the new version, a temporary copy of the new object is created, as well as another temporary object, which is the automatically merged version. The merged version contains all the non-colliding changes from the original version on the server, the new version the other guy checked in under you, and the edited version on your client. The system then gives you a chance to edit any of the versions, and check in the one you've massaged by hand, or at least approved.

The other cool thing about Perforce is that it's "atomic" in that if I'm making changes to a bunch of separate objects, but those changes are interdependent (say a macro and a web-page that needs the macro), I can keep a list (or a bunch of lists) of related objects, and they either get checked back in en-masse, or not at all. This helps prevent inconsistencies from happening while a checkin (or in the WebEdit model, a series of checkins) is in progress.

I realize that the atomic part is much more work to implement, but the making of a temporary copy of the object from the server is probably not going to wide. This is to say though that automatic merging requires not two, but three versions of the file (original, theirs and yours), and I'd either have to not do automatic merges, or find a way to store on the server, the differences between the last two checked-in versions. I'll look at the suite when I have some time, and see if it's possible to do the collision management stuff by using just the callbacks, or if I might need to actually modify WebEdit code itself. In the long run, it's something I'd love to have, but it's not going to kill me. Afterall, I'm really just fantasizing, and it's not as though I'm actually working on any collaborative projects- at least at the moment.

All that aside, thanks very much for working on this. It's really going to help (other) people who are doing collaborative work right now, and I'm sure you'll recieve their accolades as well.




This page was archived on 6/13/2001; 4:48:55 PM.

© Copyright 1998-2001 UserLand Software, Inc.