Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Subversion in 2010 and Beyond


Published on

Learn what's coming from the developers building it.

Highlights include:

This update of the current WebDAV HTTP protocol will boost performance while preserving the benefits of providing web access to Subversion.

A rich server-side JAVA API that leverages Subversion's established code base. SVNJ will enable the Subversion community to reach out to millions of JAVA developers to create the same rich functionality and extensibility on the server that's available on the client.

A new feature that cleanly removes obsolete files and other data from Subversion repositories. Obliterate will include comprehensive audit and recovery capabilities to guarantee that history is always available.

Working Copy
New features include centralized metadata storage and improved extensibility. These enhancements will lay the groundwork for offline commits and other capabilities normally associated with distributed version control systems.

Published in: Technology
  • Be the first to comment

Subversion in 2010 and Beyond

  1. 4. Subversion 1.7 & HTTPv2 <ul><li>Hyrum K. Wright </li></ul><ul><li>Director of Open Source, WANdisco </li></ul><ul><li>President, Subversion Corporation </li></ul>
  2. 5. Introduction <ul><li>HTTPv2 </li></ul><ul><li>Purpose </li></ul><ul><li>Benefits </li></ul><ul><li>Compatibility </li></ul><ul><li>Subversion 1.7 </li></ul><ul><li>Features </li></ul><ul><li>Release Process </li></ul><ul><li>How you can help </li></ul>
  3. 6. HTTPv2 <ul><li>History </li></ul><ul><ul><li>Subversion initially standardized on Apache and WebDAV/DeltaV </li></ul></ul><ul><ul><li>DeltaV turned out to be complex and inefficient </li></ul></ul><ul><ul><li>DeltaV was not widely deployed outside Subversion </li></ul></ul><ul><ul><li>The result is a large performance penalty </li></ul></ul><ul><li>Increase performance of Subversion’s WebDAV layer </li></ul><ul><ul><li>Remove PROPFIND discovery turnarounds </li></ul></ul>
  4. 7. HTTPv2 Benefits <ul><li>Reduced number of roundtrips </li></ul><ul><ul><li>Useful on high-latency links (such as intercontinental links) </li></ul></ul><ul><li>Easier for future developers to extend </li></ul><ul><li>Better caching with web proxies </li></ul>
  5. 8. HTTPv2 Compatibility <ul><li>All 1.x servers and 1.y clients will continue to be compatible </li></ul><ul><li>Older clients with new servers, and vice versa, will continue to use the older slower protocol </li></ul>
  6. 9. Subversion 1.7 <ul><li>Features </li></ul><ul><ul><li>Working Copy - Next Generation (WC-NG) </li></ul></ul><ul><ul><li>HTTPv2 </li></ul></ul><ul><ul><li>svn patch </li></ul></ul><ul><ul><li>preliminary obliterate support </li></ul></ul><ul><ul><li>plenty of bugfixes and microfeatures </li></ul></ul><ul><li>Community involvement for beta program </li></ul><ul><ul><li>Better real world testing </li></ul></ul><ul><li>First major release as part of the Apache Software Foundation </li></ul>
  7. 10. Subversion 1.7 Timeline <ul><li>No firm date, though we expect it to be during the first half of this year </li></ul><ul><ul><li>Unique open source development strategy dictates “it’s done when it’s done” </li></ul></ul><ul><ul><li>You can help by donating developer time and resources </li></ul></ul><ul><li>Community-driven release process </li></ul><ul><ul><li>Beta program </li></ul></ul><ul><ul><li>Release candidates </li></ul></ul><ul><ul><li>General release </li></ul></ul><ul><li>Caveat </li></ul><ul><ul><li>Any forward-looking feature prognostications and release statements are purely speculative, and may change at any time. </li></ul></ul>
  8. 13. Subversion WC-NG The Next Generation Working Copy <ul><li>Philip Martin </li></ul><ul><li>Lead Developer </li></ul>
  9. 14. Topics <ul><li>What is libsvn_wc? </li></ul><ul><li>Old design and problems </li></ul><ul><li>New design </li></ul><ul><li>Benefits </li></ul><ul><li>Current status </li></ul>
  10. 15. What is libsvn_wc? <ul><li>API and library to handle working copies </li></ul><ul><li>Used by </li></ul><ul><ul><li>Subversion command line client </li></ul></ul><ul><ul><li>Other clients: TortoiseSVN, Subclipse </li></ul></ul><ul><ul><li>Language bindings </li></ul></ul><ul><li>Convoluted Code </li></ul>
  11. 16. Old Design <ul><li>Meta-data stored in each directory </li></ul><ul><li>One lock file per directory </li></ul><ul><li>Deleted directories remain in the working copy </li></ul><ul><li>Entries cached in memory </li></ul><ul><li>Log files </li></ul><ul><li>Short-lived database views </li></ul>
  12. 17. New Design <ul><li>Centralised meta-data </li></ul><ul><li>SQLite database </li></ul><ul><li>Workqueues instead of log files </li></ul><ul><li>Properties in the database </li></ul><ul><li>SHA1 indexed text-base storage </li></ul><ul><li>Backward compatible </li></ul>
  13. 18. Benefits <ul><li>Faster locking </li></ul><ul><li>Able to remove deleted directories </li></ul><ul><li>API more friendly to GUIs </li></ul><ul><li>Less reliance on a case-sensitive filesystem </li></ul><ul><li>Shared text-bases </li></ul>
  14. 19. Current Status <ul><li>One SQLite database per directory </li></ul><ul><li>Most in-memory entry caching removed </li></ul><ul><li>Workqueues instead of log files </li></ul><ul><li>Properties not yet in SQLite database </li></ul><ul><li>Text-base not yet in SHA1 index </li></ul><ul><li>Regression tests </li></ul>
  15. 20. Obliterating History in Subversion <ul><li>Julian Foad </li></ul><ul><li>Senior Subversion Committer </li></ul>
  16. 21. Obliterate – what for? <ul><li>User scenarios: </li></ul><ul><ul><li>Hide some private data that I committed by mistake </li></ul></ul><ul><ul><li>Remove a huge unwanted file that I committed by mistake </li></ul></ul><ul><ul><li>one file in one revision </li></ul></ul><ul><li>Admin scenarios: </li></ul><ul><ul><li>Remove an obsolete project from the repository to recover server disk space </li></ul></ul><ul><ul><li>many files in many revisions </li></ul></ul>
  17. 22. Granularity Aaa Bbb Ccc No Yes Yes Yes
  18. 23. Server or Client client server svnadmin svn obliterate ... repo WC
  19. 24. Authorization <ul><li>Pre-obliterate hook </li></ul><ul><ul><li>Control by user names </li></ul></ul><ul><ul><li>Control by paths </li></ul></ul><ul><ul><li>Obliteration is completely DISABLED until hook is installed </li></ul></ul><ul><li>Inputs </li></ul><ul><ul><li>User name </li></ul></ul><ul><ul><li>Obliteration Set (PATH@REV ...) </li></ul></ul><ul><li>Result </li></ul><ul><ul><li>Allow or Deny (with optional error message) </li></ul></ul>client server Deny or allow ? pre-oblit. hook script repo
  20. 25. Audit Trail <ul><li>Obliterate alters history, it does not create more history </li></ul><ul><li>Obliterate makes existing history-altering tasks easier and quicker </li></ul><ul><li>There will be an audit trail </li></ul><ul><ul><li>who, when, what </li></ul></ul><ul><li>This info will be stored </li></ul><ul><ul><li>On the server – in a dedicated log file </li></ul></ul><ul><ul><li>(Maybe) In a user-visible place – such as a rev-prop </li></ul></ul><ul><li>In a user-visible place, if paths are sensitive, it can just say “within directory D” or “within revision R” </li></ul>
  21. 26. Challenges <ul><li>FSFS / BDB </li></ul><ul><ul><li>FSFS needs a successors table </li></ul></ul><ul><li>Large span of revisions – efficiency </li></ul><ul><li>Working copy behaviour </li></ul><ul><li>Local (file://) vs. remote (svn://, http://) </li></ul><ul><li>Adjusting the future history (next slide) </li></ul>
  22. 27. Adjusting the future history <ul><li>Obliterate file 'F' @ r50: </li></ul>
  23. 28. Milestones <ul><li>M1: simplest possible case – youngest revision of a file </li></ul><ul><li>M2: any node in any revision </li></ul><ul><li>M3: FSFS; large range of revisions </li></ul><ul><li>Unplanned: BDB, GUI </li></ul><ul><li>More detail: </li></ul><ul><li> </li></ul><ul><li>or </li></ul><ul><li> </li></ul>
  24. 31. SubversionJ Server-side Java for Subversion <ul><li>Dave Brown </li></ul>
  25. 32. SubversionJ: Server-side Subversion bindings in Java <ul><li>Deploy as J2EE-standard web application </li></ul><ul><ul><li>Tomcat, Jetty, Weblogic, etc. </li></ul></ul><ul><ul><li>Instead of mod_dav_svn in Apache httpd </li></ul></ul><ul><li>Bridge to C API’s via JNI </li></ul><ul><ul><li>libsvn_repos </li></ul></ul><ul><ul><li>libsvn_fs </li></ul></ul><ul><ul><li>Java Delta Editor (svn_delta_editor_t) </li></ul></ul><ul><ul><li>… others as needed? </li></ul></ul><ul><li>Re-use! </li></ul>
  26. 33. SubversionJ: == 1000 words…
  27. 34. SubversionJ: what’s in it for you? <ul><li>Easy drop-in to existing java deployments </li></ul><ul><li>Analogous to existing client bindings </li></ul><ul><ul><li>Interesting client-based apps in java, python, ruby </li></ul></ul><ul><ul><li>SubversionJ enables the same on the server </li></ul></ul><ul><ul><li>“ Bug-for-bug” compatible with the rest of Subversion </li></ul></ul><ul><li>Server extensions for java shops </li></ul><ul><ul><li>Authorization </li></ul></ul><ul><ul><li>Replication ! </li></ul></ul><ul><ul><li>Storage (?) </li></ul></ul>
  28. 35. SubversionJ: Goals <ul><li>Build great products </li></ul><ul><ul><li>Java on the server helps us </li></ul></ul><ul><ul><li>More Subversion adoption helps us </li></ul></ul><ul><li>Give users deployment option beyond Apache / httpd </li></ul><ul><ul><li>Flexibility of Apache installation is a blessing / curse </li></ul></ul><ul><ul><li>Get us out of the Apache / httpd business </li></ul></ul>
  29. 36. SubversionJ: Project Philosophy <ul><li>Stay in sync with core Subversion project </li></ul><ul><ul><li>Always maintain compatibility </li></ul></ul><ul><ul><li>Rely only on supported Subversion API’s </li></ul></ul><ul><li>Pragmatic </li></ul><ul><ul><li>Features & API’s driven by use cases </li></ul></ul><ul><ul><li>Minimal wheel re-invention </li></ul></ul>
  30. 37. SubversionJ: Open Source <ul><li>Why Open Source? </li></ul><ul><ul><li>Open more of Subversion to java developers </li></ul></ul><ul><ul><li>Give back to the community </li></ul></ul><ul><li>Apache 2.0 / BSD style license </li></ul><ul><ul><li>Same as the rest of the Subversion project </li></ul></ul><ul><ul><li>Friendly for commercial redistribution </li></ul></ul>
  31. 38. SubversionJ: Current Status <ul><li>Pre-alpha code </li></ul><ul><ul><li>Read only: checkout / update working </li></ul></ul><ul><ul><li>Java delta editor working </li></ul></ul><ul><ul><li>Checkin operations are work-in-progress </li></ul></ul><ul><li>SVN 1.7 (HTTP-v2) protocol first; backward compat. Later </li></ul><ul><ul><li>Automated unit, functional tests </li></ul></ul>
  32. 39. SubversionJ: Availability <ul><li>Availability – soon! </li></ul><ul><li>Public repository going live imminently </li></ul><ul><ul><li>Watch for announcement </li></ul></ul><ul><li>Get involved! </li></ul><ul><ul><li>Feedback, participation welcome </li></ul></ul><ul><li>[email_address] </li></ul>
  33. 40. Subversion Services <ul><li>Jim Campigli </li></ul><ul><li>COO & VP, Product Marketing </li></ul>
  34. 41. Agenda <ul><li>Subversion Consulting Services </li></ul><ul><li>Subversion Training Services </li></ul><ul><li>Subversion Support Services </li></ul>
  35. 42. Consulting Services <ul><li>Migration and Deployment Planning </li></ul><ul><ul><li>Assess what data needs to be migrated </li></ul></ul><ul><ul><li>Map existing development processes to Subversion. </li></ul></ul><ul><ul><li>Map legacy version control system’s functionality to Subversion. </li></ul></ul><ul><li>Go-Live Support </li></ul><ul><ul><li>Remote on-call with access to your Subversion servers </li></ul></ul><ul><ul><li>On-site support </li></ul></ul><ul><li>Implementation Health Check </li></ul><ul><ul><li>Full audit of your Subversion implementation </li></ul></ul>
  36. 43. Training Services <ul><li>Classes are designed to provide background and hands-on experience needed to become productive immediately. </li></ul><ul><li>Developer and Administrator training available in the following formats: </li></ul><ul><ul><li>Web-based training. </li></ul></ul><ul><ul><li>Public Class at one of our training centers </li></ul></ul><ul><ul><li>Private Class at the customer’s location </li></ul></ul><ul><ul><li>Custom training </li></ul></ul><ul><li>Classes can be taken in conjunction with consulting services. </li></ul><ul><li>Train the trainer for large organizations with dedicated training staff. </li></ul>
  37. 44. Support Services <ul><li>Designed to eliminate the risk of deploying an open source solution such as Subversion. </li></ul><ul><li>Our core developers ensure support tickets are resolved and fixes delivered on a timely basis. </li></ul><ul><li>Subversion enhancement requests can also be submitted. </li></ul><ul><li>Platinum level support includes a “Bug Buddy” assigned to your specific Subversion issues. </li></ul>
  38. 45. Questions and Next Steps <ul><li>For more information on Subversion or to request a copy of slides used in today’s presentation, please contact: </li></ul><ul><ul><li>Email: [email_address] </li></ul></ul><ul><ul><li>Web: </li></ul></ul><ul><ul><li>Phone: 866 846 0404 (U.S.) </li></ul></ul><ul><ul><li>Phone: +44 (0)114 3039985 (Europe) </li></ul></ul><ul><ul><li>Join the Subversion Community today! </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li>Learn more about Subversion services and training </li></ul></ul><ul><ul><li> </li></ul></ul>