# 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