On Tue, Apr 01, 2014 at 11:51:43AM -0000, s...@apache.org wrote: > Author: stsp > Date: Tue Apr 1 11:51:43 2014 > New Revision: 1583639 > > URL: http://svn.apache.org/r1583639 > Log: > Create the ra-git branch: git repository access for Suversion > > This allows Subversion clients to interact with git repositories, > paving the way towards better integration of both systems. > > This code originated in a private git repository maintained by me and Carlos. > Due to popular demand we're now moving development of this library to > svn.apache.org. Since the Subversion project has finally been convinced > that git has the better backend[1], we hope to accelerate development of > the git repository access layer by joining forces on this project with > the other SVN and libgit2 developers. > > [1] https://issues.apache.org/jira/browse/INFRA-7524 > > We hope to get libsvn_ra_git production ready in time for Subversion 1.9.0. > > The long-term intention is that git will become the default repository > backend for Subversion 1.10 and later, lifting much of the burden of > backend development off the SVN team. BDB has already been deprecated in > 1.8 because of this burden. Development of the FSFS successor FSX has been > slower than anticipated but FSX will stay as an optional backend in case > empirical data demonstrates that it outperforms git in large deployments. > But the default migration path for the current FSFS userbase will be git. > > See the BRANCH-README for design and implementation notes and a list > of remaining TODO items.
For those who are going to test/review this: I forgot to mention that we currently use libgit-0.20.0 as our base. A different version of libgit2 might not work as expected. Building libgit2 is a breeze, by the way. It has a very portable cmake-based build system and no externals dependencies (except libssh, but that isn't yet supported by ra-git anyway). Have fun! For those interested, here's a "screenshot" of the action: $ svn checkout git+https://github.com/carlosmn/jagged DBG: ra_plugin.c: 952: creating git repos in '/tmp/svn-HGOtGH' DBG: ra_plugin.c: 144: trying remote url 'https://github.com/carlosmn/jagged' DBG: ra_plugin.c: 191: found remote url 'https://github.com/carlosmn/jagged', fs_path: '' DBG: ra_plugin.c: 213: fetching from https://github.com/carlosmn/jagged DBG: ra_plugin.c: 628: Counting objects: 670, done. DBG: ra_plugin.c: 628: DBG: ra_plugin.c: 628: Compressing objects: 100% (351/351), done. DBG: ra_plugin.c: 628: DBG: ra_plugin.c: 648: objects: 670 total 670 indexed 670 received 0 local, deltas: 171 total 171 indexed, 1274089 bytes received DBG: ra_plugin.c: 661: update refs/remotes/origin/master DBG: ra_plugin.c: 242: scanning git commits... DBG: ra_plugin.c: 272: r1 -> 6ad856118a0f42e4ea82b0d3ef70f39983aa19d7 DBG: ra_plugin.c: 272: r2 -> 1396344f68f5699bd7008c575ea7dd2b8f124c02 DBG: ra_plugin.c: 272: r3 -> 02299b15b2fa4df1203349245558acee7d5cfe75 DBG: ra_plugin.c: 272: r4 -> 7f589e38136c94ff838fce17f6b15ff4ad6391b9 DBG: ra_plugin.c: 272: r5 -> 35972242ef82ac0f587ca335a1769e61c2831e08 DBG: ra_plugin.c: 272: r6 -> 40b6fc0744fcc44419b4a6652a20b710a3d2db7d DBG: ra_plugin.c: 272: r7 -> b1dafc5459544d29605cc89654e12953537be950 DBG: ra_plugin.c: 272: r8 -> d5ac4160703d4f7d769f0b31ca29875583ccec8c DBG: ra_plugin.c: 272: r9 -> b2780bd85748fc3f7d9a1d0b26da69d1b322a5ce DBG: ra_plugin.c: 272: r10 -> e498f545c9469d29e21de15338aa7ddef51df63c DBG: ra_plugin.c: 272: r11 -> b41dc899b020fcc776ae44c896c220dca9345538 DBG: ra_plugin.c: 272: r12 -> 3769e9508a4e50fec3c912b497bfe486adbf09cb DBG: ra_plugin.c: 272: r13 -> 400f30f3a451855d9b42d4a5e7e6ae0f13ab5810 DBG: ra_plugin.c: 272: r14 -> 843557ed5c9ecf7044449fe58bed538aa31c291a DBG: ra_plugin.c: 272: r15 -> 4f6567d5655f782503d41d0e702a36fce1f2827c DBG: ra_plugin.c: 272: r16 -> 212461b0ac473b6cffc48d65a00250d71d9e9f3b DBG: ra_plugin.c: 272: r17 -> 54fe89bbe52aaf3dc9d9a38963735a4a31860ae8 DBG: ra_plugin.c: 272: r18 -> 891727fa17a953bcf686d59beeeb8b886a37a93c DBG: ra_plugin.c: 272: r19 -> c0971512a155a7efc819bb534df20092dd62d838 DBG: ra_plugin.c: 272: r20 -> 0211055f2766fddb58da64fac6f5b35814d3dfe8 DBG: ra_plugin.c: 272: r21 -> ffecc89926ebb8ea947caa89d7e9cf4f29f2361a DBG: ra_plugin.c: 272: r22 -> 0a9109b7950a26fc734e9ccdefab0e510506b345 DBG: ra_plugin.c: 272: r23 -> fdd11adc6615331c94aba142a3b7f2a2875f44b5 DBG: ra_plugin.c: 272: r24 -> 144af3a9e22f0fa05ac3539766b2f8e8d51bdfc7 DBG: ra_plugin.c: 272: r25 -> c08e6a2821558bda74eed4378476bf9d54362145 DBG: ra_plugin.c: 272: r26 -> 503094b8bd84187e6412a05621b8fbb81f9072f9 DBG: ra_plugin.c: 272: r27 -> 892ebc2709dec722e389d796d347ad7adf15091d DBG: ra_plugin.c: 272: r28 -> a3c4a52d5ba910252131cb57b13f14ddab8514d2 DBG: ra_plugin.c: 279: done scanning git commits (28 revisions) A jagged/.gitignore A jagged/.travis.yml A jagged/scripts A jagged/scripts/build.sh A jagged/scripts/build.cmd A jagged/scripts/arch.mk A jagged/src A jagged/src/main A jagged/src/main/native A jagged/src/main/native/libjagged A jagged/src/main/native/libjagged/util.h A jagged/src/main/native/libjagged/exception.h A jagged/src/main/native/libjagged/reference.h A jagged/src/main/native/libjagged/repository.h A jagged/src/main/native/libjagged/object.c A jagged/src/main/native/libjagged/misc.c A jagged/src/main/native/libjagged/CMakeLists.txt A jagged/src/main/native/libjagged/reference.c A jagged/src/main/native/libjagged/repository.c A jagged/src/main/native/libjagged/global.c A jagged/src/main/native/libjagged/oid.h A jagged/src/main/java A jagged/src/main/java/org A jagged/src/main/java/org/libgit2 A jagged/src/main/java/org/libgit2/jagged A jagged/src/main/java/org/libgit2/jagged/TreeEntry.java A jagged/src/main/java/org/libgit2/jagged/ObjectId.java A jagged/src/main/java/org/libgit2/jagged/DetachedHead.java A jagged/src/main/java/org/libgit2/jagged/Mode.java A jagged/src/main/java/org/libgit2/jagged/Version.java A jagged/src/main/java/org/libgit2/jagged/Commit.java A jagged/src/main/java/org/libgit2/jagged/Capabilities.java A jagged/src/main/java/org/libgit2/jagged/Options.java A jagged/src/main/java/org/libgit2/jagged/Branch.java A jagged/src/main/java/org/libgit2/jagged/Reference.java A jagged/src/main/java/org/libgit2/jagged/FilteringOptions.java A jagged/src/main/java/org/libgit2/jagged/ConfigurationLevel.java A jagged/src/main/java/org/libgit2/jagged/Tree.java A jagged/src/main/java/org/libgit2/jagged/Signature.java A jagged/src/main/java/org/libgit2/jagged/ObjectType.java A jagged/src/main/java/org/libgit2/jagged/core A jagged/src/main/java/org/libgit2/jagged/core/GitError.java A jagged/src/main/java/org/libgit2/jagged/core/NativeLoader.java A jagged/src/main/java/org/libgit2/jagged/core/HashCode.java A jagged/src/main/java/org/libgit2/jagged/core/BlobMetadata.java A jagged/src/main/java/org/libgit2/jagged/core/GitErrorType.java A jagged/src/main/java/org/libgit2/jagged/core/Lazy.java A jagged/src/main/java/org/libgit2/jagged/core/ReferenceType.java A jagged/src/main/java/org/libgit2/jagged/core/Ensure.java A jagged/src/main/java/org/libgit2/jagged/core/GitException.java A jagged/src/main/java/org/libgit2/jagged/core/NativeHandle.java A jagged/src/main/java/org/libgit2/jagged/core/BlobFilteredContentStream.java A jagged/src/main/java/org/libgit2/jagged/core/Platform.java A jagged/src/main/java/org/libgit2/jagged/core/BlobContentStream.java A jagged/src/main/java/org/libgit2/jagged/core/CommitMetadata.java A jagged/src/main/java/org/libgit2/jagged/core/NativeMethods.java A jagged/src/main/java/org/libgit2/jagged/ReferenceCollection.java A jagged/src/main/java/org/libgit2/jagged/GitObject.java A jagged/src/main/java/org/libgit2/jagged/Blob.java A jagged/src/main/java/org/libgit2/jagged/Repository.java A jagged/src/test A jagged/src/test/java A jagged/src/test/java/org A jagged/src/test/java/org/libgit2 A jagged/src/test/java/org/libgit2/jagged A jagged/src/test/java/org/libgit2/jagged/BlobTest.java A jagged/src/test/java/org/libgit2/jagged/ReferenceTest.java A jagged/src/test/java/org/libgit2/jagged/RepositoryTest.java A jagged/src/test/java/org/libgit2/jagged/TreeTest.java A jagged/src/test/java/org/libgit2/jagged/GitTest.java A jagged/src/test/java/org/libgit2/jagged/ObjectIdTest.java A jagged/src/test/java/org/libgit2/jagged/VersionTest.java A jagged/src/test/java/org/libgit2/jagged/CommitTest.java A jagged/src/test/java/org/libgit2/jagged/core A jagged/src/test/java/org/libgit2/jagged/core/NativeTestMethods.java A jagged/src/test/java/org/libgit2/jagged/core/ExceptionTest.java A jagged/src/test/java/org/libgit2/jagged/CapabilitiesTest.java A jagged/src/test/java/org/libgit2/jagged/OptionsTest.java A jagged/src/test/native A jagged/src/test/native/libjagged_test A jagged/src/test/native/libjagged_test/CMakeLists.txt A jagged/src/test/native/libjagged_test/exception.c A jagged/src/test/resources A jagged/src/test/resources/testrepo A jagged/src/test/resources/testrepo/.gitted A jagged/src/test/resources/testrepo/.gitted/HEAD A jagged/src/test/resources/testrepo/.gitted/description A jagged/src/test/resources/testrepo/.gitted/logs A jagged/src/test/resources/testrepo/.gitted/logs/HEAD A jagged/src/test/resources/testrepo/.gitted/logs/refs A jagged/src/test/resources/testrepo/.gitted/logs/refs/heads A jagged/src/test/resources/testrepo/.gitted/logs/refs/heads/master A jagged/src/test/resources/testrepo/.gitted/config A jagged/src/test/resources/testrepo/.gitted/index A jagged/src/test/resources/testrepo/.gitted/objects A jagged/src/test/resources/testrepo/.gitted/objects/05 A jagged/src/test/resources/testrepo/.gitted/objects/05/5fe18dd1aef07991ebd08b4d54fc761dd022fb A jagged/src/test/resources/testrepo/.gitted/objects/d1 A jagged/src/test/resources/testrepo/.gitted/objects/d1/796967d47949153bb852c07304d9e5f2f0040c A jagged/src/test/resources/testrepo/.gitted/objects/2d A jagged/src/test/resources/testrepo/.gitted/objects/2d/08ab4853a55488a4e3323ebf804c3a732a2f6d A jagged/src/test/resources/testrepo/.gitted/objects/dc A jagged/src/test/resources/testrepo/.gitted/objects/dc/48b6c38e967e57965e36c6f7a1c3ec5c3e1ff4 A jagged/src/test/resources/testrepo/.gitted/objects/d4 A jagged/src/test/resources/testrepo/.gitted/objects/d4/bcc68acd4410bf836a39f20afb2c2ece09584e A jagged/src/test/resources/testrepo/.gitted/objects/5e A jagged/src/test/resources/testrepo/.gitted/objects/5e/ab02d63a3676df528bcd878ac935ec0c4d5bdc A jagged/src/test/resources/testrepo/.gitted/objects/57 A jagged/src/test/resources/testrepo/.gitted/objects/57/cf500670b83b1ad4d86db6436bb91531cf3e27 A jagged/src/test/resources/testrepo/.gitted/objects/e7 A jagged/src/test/resources/testrepo/.gitted/objects/e7/7ab1c63f3fbde9c5ef9972939aa0717012d7c0 A jagged/src/test/resources/testrepo/.gitted/objects/8f A jagged/src/test/resources/testrepo/.gitted/objects/8f/be49af0d14c65f881b57709acae2ea3414089a A jagged/src/test/resources/testrepo/.gitted/objects/96 A jagged/src/test/resources/testrepo/.gitted/objects/96/a82bbe56b718c4c452491014c91d9b63ab8a79 A jagged/src/test/resources/testrepo/.gitted/info A jagged/src/test/resources/testrepo/.gitted/info/exclude A jagged/src/test/resources/testrepo/.gitted/refs A jagged/src/test/resources/testrepo/.gitted/refs/heads A jagged/src/test/resources/testrepo/.gitted/refs/heads/master A jagged/src/test/resources/testrepo/one.txt A jagged/src/test/resources/testrepo/three.txt A jagged/src/test/resources/testrepo/two.txt A jagged/.gitmodules A jagged/pom.xml A jagged/README.md A jagged/Makefile A jagged/make.cmd A jagged/settings A jagged/settings/java-cleanup.xml A jagged/settings/java-formatting.xml A jagged/LICENSE Checked out revision 28.