Uploaded image for project: 'Subversion'
  1. Subversion
  2. SVN-3371

Introduce Subversion HTTP protocol v2

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • trunk
    • 1.7.0
    • mod_dav_svn
    • None

    Description

      [From trunk/notes/http-protocol-v2.txt]
      
      GOAL
      ====
      
      Write a new HTTP protocol for svn -- one which has no pretense of
      adhering to some pre-existing standard, and which is designed for
      speed and comprehensibility.  This ain't your Daddy's WebDAV.
      
      
      PURPOSE / HISTORY
      =================
      
      Subversion standardized on Apache and the WebDAV/DeltaV protocol as a
      back in the earliest days of development, based on some very strong
      value propositions:
      
        A. Able to go through corporate firewalls
        B. Zillions of authn/authz options via Apache
        C. Standardized encryption (SSL)
        D. Excellent logging
        E. Built-in repository browsing
        F. Caching within intermediate proxies
        G. Interoperability with other WebDAV clients
      
      Unfortunately, DeltaV is an insanely complex and inefficient protocol,
      and doesn't fit Subversion's model well at all.  The result is that
      Subversion speaks a "limited portion" of DeltaV, and pays a huge
      performance price for this complexity.
      
      
      REQUIREMENTS
      ============
      
      Write a new HTTP protocol for svn ("HTTP v2").  Map RA requests
      directly to HTTP requests.
      
        * svn over HTTP should be much faster (eliminate extra turnarounds)
       
        * svn over HTTP should be almost as easy to extend as svnserve.
      
        * svn over HTTP should be comprehensible to devs and users both
          (require no knowledge of DeltaV concepts).
      
        * svn over HTTP should be designed for optimum cacheability by web
          proxies.
      
        * svn over HTTP should make use of pipelined and parallel requests
          when possible.
      

      Attachments

        1. 1_dav-svn-parse-skel-patch.txt
          5 kB
          C. Michael Pilato

        Issue Links

          Activity

            STARTED on the branches/http-protocol-v2 branch.
            

            cmpilato C. Michael Pilato added a comment - STARTED on the branches/http-protocol-v2 branch.

            Created an attachment (id=1091)
            Patch which adds skel parser to mod_dav_svn
            
            

            cmpilato C. Michael Pilato added a comment - Created an attachment (id=1091) Patch which adds skel parser to mod_dav_svn

            Attachment 1_dav-svn-parse-skel-patch.txt has been added with description: Patch which adds skel parser to mod_dav_svn

            cmpilato C. Michael Pilato added a comment - Attachment 1_dav-svn-parse-skel-patch.txt has been added with description: Patch which adds skel parser to mod_dav_svn

            I've attached a patch which teaches mod_dav_svn how to parse svn_skel_t-shaped
            request bodies.  We've toyed with using skels as the new protocol, say for
            custom HTTPv2 POST bodies and the like.
            

            cmpilato C. Michael Pilato added a comment - I've attached a patch which teaches mod_dav_svn how to parse svn_skel_t-shaped request bodies. We've toyed with using skels as the new protocol, say for custom HTTPv2 POST bodies and the like.

            does "this ain't your Daddy's WEBDAV" mean, that it is not WEBDAV any more and no 
            webdav client would work any more?
            

            Original comment by ford

            subversion-importer Subversion Importer added a comment - does "this ain't your Daddy's WEBDAV" mean, that it is not WEBDAV any more and no webdav client would work any more? Original comment by ford

            Per our project's compatibility promises, all Subversion 1.x releases will
            continue to support the protocols they have always supported.  So while the new
            approach shortcuts and bypasses some of the requirements of the WebDAV protocol,
            and the newer Subversion clients will take advantage of these shortcuts where
            they can, older clients -- Subversion or generic DAV (cadaver, etc.) -- will
            continue to work just fine.  You'll still be able to mount your Subversion
            repositories as WebDAV shares, too.
            
            [SIDEBAR:  I'm marking this issue as FIXED in 1.7.0.  The goal was to introduce
            the new protocol, which is done.  We can track individual future improvements in
            their own issues.]
            

            cmpilato C. Michael Pilato added a comment - Per our project's compatibility promises, all Subversion 1.x releases will continue to support the protocols they have always supported. So while the new approach shortcuts and bypasses some of the requirements of the WebDAV protocol, and the newer Subversion clients will take advantage of these shortcuts where they can, older clients -- Subversion or generic DAV (cadaver, etc.) -- will continue to work just fine. You'll still be able to mount your Subversion repositories as WebDAV shares, too. [SIDEBAR: I'm marking this issue as FIXED in 1.7.0. The goal was to introduce the new protocol, which is done. We can track individual future improvements in their own issues.]

            People

              cmpilato C. Michael Pilato
              cmpilato C. Michael Pilato
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: