scord reduces the disk space used by a Subversion working copy by storing only a single copy of unmodified files. Subversion users may find the disk savings useful for large source code or media repositories. scord stands for "Subversion Check Out, Reduced Disk" and is under the MIT license.
A subversion working copy (without scord) uses 2x the disk space of the working files because it contains two copies of each file; the second is a pristine version used by subversion to compute diffs and report status without contacting the repository [SVN Book]. While this saves bandwidth (sometimes significantly, eg large working copies!) and permits offline operation, it is unfortunate when most working versions are unmodified (rendering the pristine versions unnecessary). The subversion developers and other users have long understood this drawback, but difficult issues have and continue to postpone solutions (see Why not ... for the why).
scord solves this issue by interposing between filesystem access and the filesystem itself, where it detects when the working version becomes modified or is reverted and is able to respond by recreating or eliminating the pristine version. scord is thus able to store explicit pristine versions for only locally modified files.
To use scord you must be able to trust it with your local modifications; scord's internal file updates use the same techniques to safeguard against crashes as subversion uses for working copy updates.
scord serves a filesystem in which you keep your subversion working copy(ies). A scord filesystem is no different from any other filesystem; scord merely detects disk space reduction opportunities in subversion working copies. To start using scord:
$ mkdir .scord_photos/ photos/
# scord will expose the filesystem in photos/ and store scord data in .scord_photos/:
$ scord .scord_photos/ photos/
$ svn checkout photos/
$ svn info photos/
# see the disk savings:
$ du -sh .scord_photos/ photos/
# stop scord via fusermount or kill -SIGTERM:
$ fusermount -u photos/
What's New in This Release: [ read full changelog ]
· Add "delayed unshare" support: unshare a file only when it changes, instead of as soon as the file is opened for writing
· Allow modification of shared files even when the file is open elsewhere
· Improve and correct shared file modification and access time tracking: when sharing two files, set the shared file's mtime and atime to the working copy's times. The old behavior was to generally use the max of the times. For systems like make, the new approach both avoids needless file regeneration after an operation such as 'svn add; svn commit' and ensures that working copy mtimes do not unintentionally decrease.
· Nanosecond timestamp bug fix: the nanosecond portion of a shared file's access time was mistakingly set using the working copy's modification time, when it should be set using the access time
· Fix compile errors for gcc 4.3