[Zope3-checkins] CVS: Zope3/src/zope/fssync - README.txt:1.1

Guido van Rossum guido@python.org
Tue, 13 May 2003 12:10:01 -0400


Update of /cvs-repository/Zope3/src/zope/fssync
In directory cvs.zope.org:/tmp/cvs-serv18806

Added Files:
	README.txt 
Log Message:
A pointer to background info, and some user stories.


=== Added File Zope3/src/zope/fssync/README.txt ===
Filesystem synchronization
==========================

For background and the original description by Jim Fulton, see:

  http://dev.zope.org/Zope3/FileSystemSynchronizationProposal

This version is based loosely on a prototype written by Jim Fulton and
Deb Hazarika.  It is now maintained by Guido van Rossum.


User stories
------------

* A user with site development privileges plans to go offline for a
  weekend and wants to work on (part of) the site on his laptop during
  that time.  On Friday, before going offline, he checks out a subtree
  of the site to his laptop's disk.  This maps folders to directories
  and other objects to files.  Metadata is stored in a subdirectory
  named @@Zope, some of it as XML.  Over the weekend he edits the
  files and perhaps the metadata on his laptop.  On Monday, once
  online again, he commits his work back to the site.

* It is possible that someone else might have made changes to the site
  that conflict with the work done offline.  The commit operation
  should fail in this case without making any changes.  Our user
  should then invoke an update command that merges the site's changes
  into his local work area.  If there are any merge conflicts, he
  should then resolve these manually.  Once conflicts are resolved, he
  can commit his changes successfully, assuming there are no
  additional changes made to the site in the mean time; otherwise, the
  commit will fail again and the cycle starts over.

* Like CVS, after doing a successful commit, you can continue to work
  and do another commit later.

* There should be commands to show the differences in the local copy,
  and to show the status of each file or directory.

* Merging changes should deal with simultaneous changes in the same
  file, at least for text files; what CVS does is pretty reasonable
  (this seems to be based on the diff3 command).

* Update and commit should handle addition and removal of files and
  directories.  For local additions and removals, an explicit command
  must be given to confirm these, to avoid committing files that were
  accidentally created or lost.

* Commands that are reasonable to do offline (e.g. add, remove,
  status, and the simplest form of diff) must be performed entirely
  offline.