Caveats
Speed
Piston is slow. The update process particularly so. Piston uses a brute force approach to merging the remote repository's content. Subversion cannot merge from remote repositories, so instead Piston checks out the folder at the initial revision, and then updates to the target revision, parsing the results and replaying the changes locally.
If a file was locally modified, its changes will be merged back in. If that produces a conflict, Piston will not detect it. However, the next commit will be rejected by Subversion.
Copies & Renames
Piston does not track copies or renames. Since Subversion does renames in two phases (copy + delete), that is what Piston does.
Local Operations Only
Piston only works if you have a working copy. It also never commits your working copy directly. You are responsible for reviewing the changes and applying any pending fixes.
Remote Repository UUID
Piston caches the remote repository's UUID, allowing it to know if the remote repository is still the same. Piston refuses to work against a different repository than the one we checked out from originally.
SVN Properties Used
- piston:uuid
-
The remote repository's UUID, which we always confirm before doing any operations.
- piston:root
-
The repository root URL from which this Piston folder was exported from.
- piston:remote-revision
-
The Last Changed Rev of the remote repository.
- piston:local-revision
-
The Last Changed Rev of the Piston managed folder, to enable us to know if we need to do any merging.
- piston:locked
-
The revision at which this folder is locked. If this property is set and non-blank, Piston will skip the folder with an appropriate message.