Re: slightly OT - differencing and version control

2006-10-22 Thread David Bovill

I have a development site up for code versioning and documentation. It
uses subversion as a backend and a wiki for the documentation and
ticketing. I am more than happy to set up an test account for your
project if you wish to experiment.

There are still a few bits and pieces to be done before the site is
launched - I need to integrate it into the altSubversion, the Rev and
Galaxy IDE's, and create a plugin for Scripters ScrapBook - but most
of the work has been done and it is completely useable for development
teams even without the direct IDE integration.

However, it wuld be my recommendation that unless you are working on a
project which has other needs for cvs / svn, or you wish to open the
development up to large numbers of developers, you are best following
Richard's advice.

Contact me off-list if you'd like me to set up an account for you -
you can use your own domain if you need.
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: slightly OT - differencing and version control

2006-10-13 Thread Chipp Walters

Chris,

We have a version of altSubversion (the altuit external for the
opensource subversion document/code management software) lying around
somewhere. It's super easy to script and takes a lot of the work out
of having to manage files (like MGC has to do). Try contacting chris
at Altuit and I believe he can help you out.

best,
Chipp
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: slightly OT - differencing and version control

2006-10-13 Thread Mark Wieder
Chris-

Friday, October 13, 2006, 9:03:54 AM, you wrote:

> Is there something like this that even exists? I realize since Rev
> stacks contain binary data it makes things a bit more difficult. Is
> there anything out there that can handle binary files this way? If  
> not, could something like this be created with Rev? If so, how  
> difficult would it be?

Here's the approach I took: any rev object can be described by its
1. script
2. properties
3. custom properties
4. custom property sets (and 3 recursively)

I made a client-end plugin that enumerates these and sends them as
text over a socket connection to a server that stores them away as
(item,value) pairs. Checking an object out then is a matter of
grabbing the description and, item by item, issuing set commands.

Checkin:
foreColor,"black"
backColor,"white"

Checkout:
in a repeat loop:
put item 1 of line x of tDescription into tProp
put item 2 of line x of tDescription into tValue
set the tProp of control tObject to tValue

Diffing two versions of an object:
I save only the complete contents of the current version an object.
Previous versions have only the items that are different from the
next-most-recent saved. To see the difference between the two latest
versions you just have to display those items. To diff a less recent
version you work your way back down the chain.

There *are* some problems with this, notably with respect to object
ids if you need to recreate the entire stack from its descriptions or
when one developer checks in a new control and a second developer
needs to import it into an existing stack. Object ids (with the
exception of images) are immutable in rev for some reason.

Hope this helps. Next step (someday) is to integrate this with
subversion.

-- 
-Mark Wieder
 [EMAIL PROTECTED]

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: slightly OT - differencing and version control

2006-10-13 Thread Richard Gaskin

Chris Sheffield wrote:
Anybody out there working on a team of developers? If so, how do you  
handle file version control with your Rev stack files? I've been  
using MagicCarpet (which has worked very well for me; thanks Chipp).  
But up until now my company has only had myself and, at most, one  
other developer, and MagicCarpet has met our needs. But we're getting  
to a point where we need something a little more robust. Something  
that will preferably allow multiple concurrent checkouts of files,  
and then merge differences as they're checked back in.


Is there something like this that even exists? I realize since Rev  
stacks contain binary data it makes things a bit more difficult. Is  
there anything out there that can handle binary files this way? If  
not, could something like this be created with Rev? If so, how  
difficult would it be?


About half of the projects I've done over the last decade have been with 
teams, usually with about three developers but the two largest had about 
20 team members each.


One of those large projects was in done Gain Momentum (since renamed 
RadBuilder), which has a stack-based MagicCarpet-like check in/check out 
tool built in.


For the other large project (which used Rev) we wrote a custom version 
control system focused at the card level which was specific to the 
unique workflow of that system.


For smaller projects I've either custom-crafted a simple stack-based 
system like MagicCarpet, or just assigned owners to specific stacks and 
used email to trade them among the team.  The latter has worked well 
enough to keep the MetaCard IDE project running for several years 
(though admittedly it's a small-scale project).


For the work that I've done I've found stacks to be a very natural 
dividing line for sharing the workflow.  Stacks tend to be either UI 
elements or libraries, and it usually benefits the project as a whole to 
keep the interconnections between such modules as simple and clean as 
possible anyway, so divvying up the project by stacks lends a clarity to 
the work.


Because most other languages make software out of hundreds of tiny text 
files (as opposed to Rev's more self-contained binary files), there's an 
inclination among multi-lingual professionals to think about solutions 
for Rev projects in terms of what works elsewhere.  But just as we enjoy 
the simplicity of the object model, we can re-think old production 
habits to discover ways to simplify the workflow as well, making Rev's 
unique object model work for us.  Go with the grain.


While it may be technically possible to atomize stacks into mergeable 
parts (I've made a few myself as experiments, using XML and even custom 
mini-macro-languages to describe objects), I don't prefer such a 
workflow in production.


The overhead of coordinating among team members is high enough with the 
even simplest tools and methods. Steven McConnell's research finds that 
adding a second programmer adds only another ~50% additional 
productivity on average, with the rest of the time spent coordinating 
between programmers.  A third programmer will add only another 30-40%, 
and the rate of diminishing returns increases with team size.  If the 
team grows larger than the project warrants it could eventually result 
in negative productivity, with more effort spent coordinating that coding.


So in short, team member coordination is expensive.  Defining the 
logical dividing lines of a project and assigning ownership of discrete 
components to team members based on key competencies helps the workflow 
parallel the execution of the code: each component should have minimal 
connections to others, and putting the best mind on each component helps 
ensure that it gets done well and with minimal interconnection issues.


If it appears that a particular UI window or library may best be served 
by having multiple programmers working on it simultaneously, that may be 
an indication of something very different, perhaps a need for 
cross-training or team member reassignment.


--
 Richard Gaskin
 Fourth World Media Corporation
 ___
 [EMAIL PROTECTED]   http://www.FourthWorld.com
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


slightly OT - differencing and version control

2006-10-13 Thread Chris Sheffield
Anybody out there working on a team of developers? If so, how do you  
handle file version control with your Rev stack files? I've been  
using MagicCarpet (which has worked very well for me; thanks Chipp).  
But up until now my company has only had myself and, at most, one  
other developer, and MagicCarpet has met our needs. But we're getting  
to a point where we need something a little more robust. Something  
that will preferably allow multiple concurrent checkouts of files,  
and then merge differences as they're checked back in.


Is there something like this that even exists? I realize since Rev  
stacks contain binary data it makes things a bit more difficult. Is  
there anything out there that can handle binary files this way? If  
not, could something like this be created with Rev? If so, how  
difficult would it be?


Thanks,
Chris


--
Chris Sheffield
Read Naturally
The Fluency Company
http://www.readnaturally.com
--

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution