You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Ben Collins-Sussman <su...@newton.ch.collab.net> on 2001/03/11 23:11:53 UTC

commit mechanism

OK, so I did a lot of coding this weekend, only to find out that I'm
right in the miile of a design dispute about exactly how
svn_client_commit() should work.  My code is halfway between. :)

Rather than check in my work, let me present the two sides here.


Scenario 1 (Karl's Way):

  * Let svn_client_commit *always* bump revisions after driving the
    commit editor, using the target list returned from
    crawl_local_mods.

  * Modify ra->get_commit_editor prototype so that 

       * ra layer no longer bumps individual targets after a commit 
       * we can somehow get the new revision number back into
         svn_client_commit.

  * The track editor goes away completely, it's no longer needed.

  * Committing to XML is no longer a special case;  it's just another
    editor to fetch instead of an RA one.

  -- This design is based on the idea that "svn_client_commit"
     embodies the fulfillment of a complete commit.  In this scenario,
     the commit editor is just a communication tool to write changes
     into a repository.

Scenario 2 (Greg's Way):

  * Put the track editor in libsvn_ra, and modify it to do *nothing*
    but build a target list at a particular address.

  * ra_local uses the track editor under the hood.

  * svn_client_commit treats XML as a special case:

       * compose it with the track editor before driving the commit.
       * after the commit, loop over track editor's list and bump
       * targets.

  -- This design is based on the idea that "driving a commit editor"
     embodies the fulfillment of a complete commit.  In this scenario,
     the commit editor actually completes the commit, not its caller.