mission critical apps
Brian Yennie
briany at qldlearning.com
Mon Feb 9 19:29:37 EST 2004
Others may describe this better than me, but essentially CVS is
accustomed to individual text (= code) files organized into
directories. Although it supports binary files, it just basically
stores them as-is and doesn't try to reconcile.
This is what I would suggest:
1) Write an exporter for MetaCard stacks which imports/exports
individual scripts into folders, i.e.
stack/
stackscript.mt
card/
mycardscript.mt
object/
myobjectscript.mt
CVS lets you operate (i.e. checkin, checkout, update, add, remove) on a
file-by-file or folder-by-folder basis, so this would buy the layout it
wants.
2) Extend it to export textual representations for each object.
stack/
stackscript.mt
stack.props
mycard/
mycardscript.mt
mycard.props
object/
myobjectscript.mt
3) Write a Rev GUI on top of the import/export which allows you to:
a) Create a new CVS repository
b) Do an initial checkout of the contents of a repository
c) Update your stack from the contents of the repository
d) Check-in your edited and/or new objects to the repository
Those really are the basics. CVS isn't all that complicated. It mostly
makes you go through the process- keep a central repository, checkout
components to work on, check them in when they work (so you don't screw
other people up with your changes).
To the Rev user, it would mean that they could open up Rev, connect to
a shared repository, check out say, the stack script, work on it, and
then commit their changes. Some other developer could be working at the
same time on, say, some button's script. Another might be tweaking the
locations of objects and adding graphics. When they are all done, they
check-in. Next time they update from the repository, they see everyone
else's changes _if_ they've been checked in. One person could check out
a bunch of button scripts while another checked out their properties.
Etc.
Conflicts in CVS aren't as magical as we would like, but it will at
least alert you when you step on someone else's toes, and even try to
resolve the conflicts on a line-by-line basis for your non-binary files.
All in all, it would be more grunt work than anything. CVS command-line
tools are available on all major platforms (and some minor ones), so it
could all be manipulated via shell().
- Brian
> Rev objects can be atomized down to individual properties and scripts,
> and
> reassembled again in nearly infinite variety.
>
> What specifically is needed, and what are the challenges of building
> it?
More information about the use-livecode
mailing list