Current View

Below is a simplified view of the existing Subversion FS layers and those layers directly affected by it.

curFSSmplViewImg.jpg

As noted, BDB dependencies are located at various levels in the system. To ease implementation of new FS back ends, I feel more BDB isolation is required.

Please understand that I understand that all of this is open for debate or public flogging as needed?


Summary of Changes

Below is a summary of out-of-repos changes made:

  1. All explicit references, to BDB structures in svn_fs_t have been removed and replaced with a void reference to "FS type specific data".
  2. All functions containing Berkeley have been re-named. Except for svn_fs_set_berkeley_errcall.
  3. Added a vtable located in svn_fs_t, to provide mechanism for FS implementers to supplant implementations of most of the exposed functions at the API level.
  4. Moved all BDB related code to BDB sub-dir.
  5. Created a trail vtable so that different DB APIs can back the trail.c code. This file and his companion include has been moved to the util sub-directory
  6. Created a db access functions vtable for what I'm referring to as the baseline FS implementation. This will allow for other DBs to be used to back the current FS as it exists today. This may not be the best solution for a SQL DB long term but will provide a jumping off point for enhanced versions of a SQL FS. The end result can be a hybrid or a completely new FS at the veneer level.
  7. Renamed the BDB functions in the bdb directory with a new prefix: svn_fs__bdb
  8. Added svn_config_t parameter to the create calls. This will allow configuration parameters specific to the FS implementation to be passed in. I will Explain this in a soon to come document on a SQL FS.


Summary of Planned Changes

Below are plans for coming changes:

  1. Move tree.c, dag.c and their partners to baseline_impl directory. Look for and move util candidates.
  2. Commit some existing config.c extensions.
  3. Commit a reworked svn_sql_config container class that is more generic.
  4. Build and commit a fs_loader module which utilizes the config container class.
  5. Continue SQL work "On a branch hopefully?".


Final View

The end result should be more like this:

finalFSSmplViewImg.jpg