Item11689: Release PlainFileStoreContrib
Priority: Enhancement
Current State: Closed
Released In: n/a
Target Release: n/a
An implementation of a Foswiki store using nothing more sophisticated than files.
Advantages:
- Uses simple files - no RCS operations required
- Very simple
The default store implementations in Foswiki use a version control tool - RCS - in the background. There are some issues
with these implementations:
- RcsWrap invokes external programs. These are reasonably fast, but cause major performance problems when used with a web server accelerator, such as
fcgi
or mod_perl
. Most sites therefor use:
- RcsLite, which is a pure-perl implementation of RCS. This doesn't use any external programs but is very inefficient with topics that have large numbers of versions.
The
PlainFileContrib implements topic and attachment histories by keeping a complete file for each version of the topic/attachment. This means it is a lot less efficient in terms of disk space than RCS - at least, it is less efficient for text files; binary files, such as images, are equally bad. For many sites this is an acceptable tradeoff, as disk space is relatively cheap, and Foswiki doesn't use much even with this store.
There is currently no way to move from an RCS-based store to a PlainFile store, so this extension has to be regarded
as experimental at this stage. If there is sufficient interest, I will develop tools to support migration to and from
RCS histories.
Developers note: this contrib is tested using the standard store unit tests.
Feedback please to
PlainFileStoreContrib
--
CrawfordCurrie - 23 Mar 2012
Running on Release01x01
distro:72ce49e2916b ----------------------------
---++ Module Failure summary
ConfigureTests has 1 unexpected results (of 23):
* F: ConfigureTests::test_Package_sub_install
VCStoreTests has 2 unexpected results (of 36):
* F: VCStoreTests::verify_NoHistory_NoTOPICINFO_getRevisionInfo_VCStoreTests_PlainFile
* F: VCStoreTests::verify_NoHistory_TOPICINFO_getRevisionInfo_VCStoreTests_PlainFile
VCMetaTests has 2 unexpected results (of 15):
* F: VCMetaTests::verify_checkin_attachment_VCMetaTests_PlainFile
* F: VCMetaTests::verify_rename_VCMetaTests_PlainFile
StoreImplementationTests has 4 unexpected results (of 48):
* F: StoreImplementationTests::verify_copyAttachment_StoreImplementationTests_PlainFile
* F: StoreImplementationTests::verify_eachAttachment_StoreImplementationTests_PlainFile
* F: StoreImplementationTests::verify_moveAttachment_StoreImplementationTests_PlainFile
* F: StoreImplementationTests::verify_moveWeb_StoreImplementationTests_PlainFile
----------------------------
3182 of 3191 test cases passed(3175)+failed(7) ok from 3312 total, 121 skipped
0 + 9 = 9 incorrect results from unexpected passes + failures
1..79763
--
PaulHarvey - 15 Nov 2012
Since I did the work the
VCStoreTests have been recoded (in August) to assume the RCS file implementation of the store - something I had worked hard to avoid. So expect the VC* tests to fail. The StoreImplementation failures may be due to the tests on the release branch being outdated; the tests on trunk pass, and are definitive.
Uploaded, to see if it generates any more interest.
--
CrawfordCurrie - 28 Feb 2013