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