[cad-linux-dev] Re: push vs pull network architecture

  • From: Eric Wilhelm <ewilhelm@xxxxxxxxxxxxx>
  • To: cad-linux-dev@xxxxxxxxxxxxx
  • Date: Mon, 5 Apr 2004 17:23:40 -0600

# The following was supposedly scribed by
# Bruno Postle
# on Monday 05 April 2004 07:34 am:

>The CVS/SVN method of working offline is a better fit with real
>design methods.  A lot of CAD time is really messing-about trying
>ideas - Stuff that doesn't want to be shared.

Yes, but I think there should be some way to get closer to a real-time 
communication as well.  Maybe working offline means you are working out of a 
svn repository on your filesystem and you go through a proxy of sorts to 
update the master repository.

Now, how do you get subversion to play nice with two servers simultaneously?  
Maybe it needs an extension to make this happen, but what I have in mind is 
something that would give you free undo.

For the sake of finishing this e-mail with a coherent thought, let's assume 
the following:

1:  We have our geometry stored in atomic files on the local filesystem in a 
tree that subversion recognizes (these can be text or binary, as long as each 
file represents the state of each entity in the model.)
2:  We can commit the same tree to either a file:// or a svn:// repository 
(maybe some juggling of the .svn directories or a merge operation, or maybe 
we can actually put a local copy under version control?)
3:  Our model editor (cad system) knows all about subversion and is able to 
commit a change as each entity (or group of entities is modified.)
4:  A subversion proxy server is able to act in the same way as above, keeping 
a local copy for use on the network (commits from internal clients) as well 
as committing these changes to the master server.
5:  Chaining of proxies is possible as a side-effect of the above (2 & 4.)
6:  A server is capable of notifying a client of changes to the master model 
(the client may choose to incorporate or temporarily ignore these updates.)


Given all of this, the work-cycle (behind the scenes of our modeling
application) might look like this:

1.  Check-out a local copy from the master server (via the proxy server) and 
place all checked-out data under local version control.  e.g. we check-out 
revision 231 from the master and it becomes local version 1.

2.  Edit model.  Each change is committed to the local svn repository (e.g.  
adding a line creates revision 2, adding a circle creates revision 3, moving 
both of them creates revision 4...)  Now we have total undo control all the 
way back to when we checked-out the model.

3.  "Save" model.  The local changes are committed to the master (or proxy) as 
if they were one set of changes.  (At this point, we lose our undo data (but 
maybe we can keep it if...))

--Eric
-- 
"But as to modern architecture, let us drop it and let us take 
modernistic out and shoot it at sunrise."
                                        --F.L. Wright


Other related posts: