Operational Details

This page lists the underlying Subversion command that occur when a Piston operation is executed.

Import

svn export REPOS_URL TARGET
svn add --force TARGET
svn propset piston:root, piston:uuid, piston:remote-revision, piston:local-revision TARGET
svn propset piston:locked LOCK_REVISION TARGET if --lock

Convert

svn propget svn:externals TARGET
Parse the returned value (is there a revision argument ?)
Call Import on the returned value

Lock

svn propset piston:locked REVISION TARGET

Unlock

svn propdel piston:locked TARGET

Update

svn info REPOS_URL (Confirm Repository UUID, abort if unchanged)
svn checkout --revision ${piston:remote-revision} REPOS_URL TARGET.tmp
svn update --revision new revision from info TARGET

For each changed item:
  Add:
    cp TARGET.tmp/PATH TARGET/PATH && svn add TARGET/PATH

  Modify:
    cp TARGET.tmp/PATH TARGET/PATH
    apply any local modifications
    svn merge --revision ${piston:local-revision}:HEAD TARGET/PATH

  Delete:
    svn remove TARGET/PATH

rm -rf TARGET.tmp
svn propset piston:remote-revision, piston:local-revision TARGET
svn propset piston:locked if --lock