There is a file-format enhancement to Fossil that seeks to make Fossil run more efficiently on projects with a large number of files in each checkout. Help in testing this enhancement will be appreciated.
Fossil has been working great on projects with a thousand files or less in each checkout (which is to say, on most open-source projects). But some recent experiments with projects that have over 60,000 files in each checkout revealed inefficiencies. A small backwards-compatible enhancement to the file format is needed to address those inefficiencies. With each check-in, Fossil constructs a "manifest" which is a file listing all other files that are part of the check-in. The manifest works great for smaller projects, but when the number of files gets large, the overhead of handling the manifests becomes a problem. The present enhancement is to allow a check-in to be a "delta-manifest". A delta-manifest, instead of recording every file in the check-in, only records the files that have changed from some prior check-in. Delta manifests are usually much, much smaller than regular manifests (called "baseline-manifests") and can be processed more quickly. In the experimental enhanced Fossil, a delta-manifest is generated instead of a baseline-manifest if the delta-manifest is less than 1/125th the size of the baseline-manifest. The 125 threshold has been experimentally determined to give good results. Other changes in the experimental Fossil include a new "repo-cksum" setting. By doing: fossil setting repo-cksum off Fossil will skip a lot of cross-checking designed to detect errors early and prevent a software bug from causing loss-of-work. Additional information about these cross-checks can be found on the http://www.fossil-scm.org/fossil/doc/tip/www/selfcheck.wiki webpage. The repo-cksum is enabled by default and we recommend that you leave it on where practical. But it does present a performance burden for large projects and can be turned off for those cases, if necessary. Finally, the experimental Fossil no long automatically generates the "manifest" and "manifest.uuid" files in the root directory of each check-out. Those files were never used by Fossil - they were generated for the convenience of the application. The makefiles for both Fossil itself and for SQLite depend on the manifest and manifest.uuid files being present. But other projects found them annoying, so they are now off by default. Use the "fossil setting manifest on" command to enable them. The enhancements are currently on the "experimental" branch: http://www.fossil-scm.org/fossil/timeline?r=experimental Unix users should be able to download and build an experimental version themselves. Windows users are encouraged to do the same if they are able, but for those that do not have a suitable build environment, a precompiled binary is made available at: http://www.fossil-scm.org/fossil-w32-201010192027.zip It will be very helpful if you can try out this experimental Fossil and report both successes and failures. This is a great opportunity for you to contribute to the Fossil project even if you don't have the skills or desire to go code diving. Some additional testing hints: To create a dummy repository for testing purposes, copy some existing repository then "detach" it: cp fossil.fossil test.fossil fossil test-detach -R test.fossil By "detaching" the test repository, you eliminate the possibility of accidentally syncing changes you commit to the test repository into your real repository. Other options that you might find useful: fossil commit --delta ... fossil commit --baseline ... fossil commit --test ... The --delta option to the commit command forces the generation of a delta-manifest even if Fossil would prefer to do a baseline manifest. Similarly, --baseline forces the generation of a baseline-manifest even if Fossil would prefer a delta. The --test argument to commit causes the commit to be a dry-run. Nothing is actually committed. Instead, the manifest is printed on standard output. If you do a lot of testing or experimentation with Fossil, another command-line option you might find useful is --sqltrace. That option (which works with all commands) prints all SQL statements that Fossil evaluates as they are evaluated. Thanks for testing out the recent Fossil changes. Please be sure to report either success or failure (whichever you encounter) with the new Fossil to this mailing list, or directly to me at d...@sqlite.org. -- D. Richard Hipp d...@sqlite.org
_______________________________________________ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users