Differences between revisions 4 and 5
Revision 4 as of 2012-12-04 01:41:42
Size: 2466
Editor: HyrumWright
Comment: Some comments on ra_local API work
Revision 5 as of 2013-01-06 02:09:26
Size: 3996
Editor: HyrumWright
Comment: Some notes about client library editors
Deletions are marked like this. Additions are marked like this.
Line 17: Line 17:
=== Client API Consumers === === libsvn_client ===
Line 19: Line 19:
=== RA API Support === ==== Editor Drivers ====
Line 21: Line 21:
=== Repos API Support === ||'''File'''||'''Status'''||'''Notes'''||
||{{{libsvn_client/add.c}}}||Completed||Implemented on {{{ev2-export}}} branch; not yet on trunk||
||{{{libsvn_client/commit_util.c}}}||Completed||Implemented on {{{ev2-export}}} branch; not yet on trunk||
||{{{libsvn_client/copy.c}}}||Completed||Implemented on {{{ev2-export}}} branch; not yet on trunk||
||{{{libsvn_client/delete.c}}}||Completed||Implemented on {{{ev2-export}}} branch; not yet on trunk||
||{{{libsvn_client/import.c}}}||Completed||Implemented on {{{ev2-export}}} branch; not yet on trunk||
||{{{libsvn_client/prop_commands.c}}}||Completed||Implemented on {{{ev2-export}}} branch; not yet on trunk||
Line 23: Line 29:
=== FS API Support === ==== Editor Receivers ====

||'''File'''||'''Status'''||'''Notes'''||
||{{{libsvn_client/export.c}}}||Completed||Enabled on trunk with {{{--enable-ev2-impl}}} configure flag||
||{{{libsvn_client/repos_diff.c}}}||Not Started||||

==== Editors Passed Through to Other File ====

These files just grab an editor from a source and then delegate the driving of it somewhere else, either in this library or elsewhere.

||'''File'''||'''Status'''||'''Notes'''||
||{{{libsvn_client/diff.c}}}||Not Started||||
||{{{libsvn_client/externals.c}}}||Not Started||||
||{{{libsvn_client/merge.c}}}||Not Started||||
||{{{libsvn_client/update.c}}}||Not Started||||
||{{{libsvn_client/switch.c}}}||Not Started||||
||{{{libsvn_client/status.c}}}||Not Started||||

=== libsvn_wc ===

=== libsvn_ra ===

=== libsvn_repos ===

=== libsvn_fs ===

=== Additional Tools ===

==== svnsync ====

==== svnrdump ====

Ev2 Implementation Plan

This page describes (as near as I can tell) the various bits that need to be done to have a fully-Ev2-compliant Subversion. Lots of this work is parallelizable, and I've tried to note dependencies where possible.

Many pieces of Ev2 do not interfere with the public API, or need not be public until we are ready to ship. They can be developed on trunk, without any compile-time guards. The pieces that are customer-impacting, are protected by the --enable-ev2-impl configuration flag, and should be guarded with the ENABLE_EV2_IMPL compiler macro until we are ready to release Ev2. We try to guard the choice of implementation, rather than the implementation itself with these flags, so that Ev2 implementations are built even when not being run. These design choice mean that the bulk of Ev2 development can (and should!) happen on trunk, in parallel with other Subversion feature development.

For performance reasons, we should release all of Ev2 simultaneously. While it would be possible to have part of a release use Ev1 and part use Ev2, the nature of the shims means that the amount of overhead in an editor drive using them is generally O(size of drive) with some reasonably large coefficients. As a result, we'd like to avoid having common or unbounded code paths run through the shims by default (as opposed to an error path, or a fallback for backward compatibility purposes).

Preliminary Work

This table lists work that needs to be done prior to the rest of the implementation, and generally blocks any of the remaining sections.

Task

Status

Notes

Ev2 API Design

Completed

The API is not yet "frozen," so additional tweaks are still possible, though not expected.

Ev2->Ev1 Shim

Completed

Tested using existing editors in Subversion, only as bug-free as the tests are complete.

Ev1->Ev2 Shim

Completed

ditto

libsvn_client

Editor Drivers

File

Status

Notes

libsvn_client/add.c

Completed

Implemented on ev2-export branch; not yet on trunk

libsvn_client/commit_util.c

Completed

Implemented on ev2-export branch; not yet on trunk

libsvn_client/copy.c

Completed

Implemented on ev2-export branch; not yet on trunk

libsvn_client/delete.c

Completed

Implemented on ev2-export branch; not yet on trunk

libsvn_client/import.c

Completed

Implemented on ev2-export branch; not yet on trunk

libsvn_client/prop_commands.c

Completed

Implemented on ev2-export branch; not yet on trunk

Editor Receivers

File

Status

Notes

libsvn_client/export.c

Completed

Enabled on trunk with --enable-ev2-impl configure flag

libsvn_client/repos_diff.c

Not Started

Editors Passed Through to Other File

These files just grab an editor from a source and then delegate the driving of it somewhere else, either in this library or elsewhere.

File

Status

Notes

libsvn_client/diff.c

Not Started

libsvn_client/externals.c

Not Started

libsvn_client/merge.c

Not Started

libsvn_client/update.c

Not Started

libsvn_client/switch.c

Not Started

libsvn_client/status.c

Not Started

libsvn_wc

libsvn_ra

libsvn_repos

libsvn_fs

Additional Tools

svnsync

svnrdump

Network Layer Implementations

ra_local

Most functions should just forward to their svn_repos counterparts, so completions here should closely track the repos API section above.

ra_serf

ra_svn

Concluding Work

Some of this could be finished after the corresponding section above, but most of it requires completion of all the above sections to proceed.

Ev2ImplementationPlan (last edited 2013-01-06 02:09:26 by HyrumWright)