摘自:http://eatsalt.blog.163.com/blog/static/879402662009102402949523/
通过SVNKit,你可以很容易的操作控制Subversion。
1 2 3 4 5 6 7 8 910 11 12 13 1415 16 17 18 1920 21 22 23 2425 26 27 28 2930 31 32 33 3435 36 37 38 3940 41 42 43 4445 46 47 48 4950 51 52 53 5455 56 57 58 5960 61 62 63 6465 66 67 68 6970 71 72 73 7475 76 77 78 7980 81 82 83 8485 86 87 88
Java代码 File dstPath = new File( "c:/svnkit" ); SVNURL url = SVNURL. parseURIEncoded( "http://svn.svnkit.com/repos/svnkit/branches/1.1.x/" ); SVNClientManager cm = SVNClientManager. newInstance (); SVNUpdateClient uc = cm. getUpdateClient (); uc. doCheckout ( url, dstPath, SVNRevision. UNDEFINED , SVNRevision. HEAD , true ); File dstPath = new File( "c:/svnkit" ); SVNURL url = SVNURL. parseURIEncoded( "http://svn.svnkit.com/repos/svnkit/branches/1.1.x/" ); SVNClientManager cm = SVNClientManager. newInstance (); SVNUpdateClient uc = cm. getUpdateClient (); uc. doCheckout ( url, dstPath, SVNRevision. UNDEFINED , SVNRevision. HEAD , true ); Updates it to the latest revision: Java代码 uc. doUpdate ( dstPath, SVNRevision. HEAD , true ); uc. doUpdate ( dstPath, SVNRevision. HEAD , true ); And finally commits local changes in "www" subdirectory if there are any: Java代码 SVNCommitClient cc = cm. getCommitClient (); cc. doCommit ( new File[] { new File( dstPath, "www" )}, false , "message" , false , true ); SVNCommitClient cc = cm. getCommitClient (); cc. doCommit ( new File[] { new File( dstPath, "www" )}, false , "message" , false , true ); Access Subversion repository directly: Java代码 SVNURL url = SVNURL. parseURIEncoded ( "http://svn.svnkit.com/repos/svnkit/branches/1.1.x/" ); SVNRepository repos = SVNRepositoryFactory. create ( url); long headRevision = repos. getLatestRevision (); Collection entriesList = repos. getDir ( "www" , headRevision, null , ( Collection) null ); for ( Iterator entries = entriesList. iterator (); entries. hasNext ();) { SVNDirEntry entry = ( SVNDirEntry) entries. next (); System. out . println ( "entry: " + entry. getName ()); System. out . println ( "last modified at revision: " + entry. getDate () + " by " + entry. getAuthor ()); } SVNURL url = SVNURL. parseURIEncoded ( "http://svn.svnkit.com/repos/svnkit/branches/1.1.x/" ); SVNRepository repos = SVNRepositoryFactory. create ( url); long headRevision = repos. getLatestRevision (); Collection entriesList = repos. getDir ( "www" , headRevision, null , ( Collection) null ); for ( Iterator entries = entriesList. iterator (); entries. hasNext ();) { SVNDirEntry entry = ( SVNDirEntry) entries. next (); System. out . println ( "entry: " + entry. getName ()); System. out . println ( "last modified at revision: " + entry. getDate () + " by " + entry. getAuthor ()); } Replace JNI Subversion bindings with SVNKit: Java代码 // pure Java implementation of the standard Subversion Java interface SVNClientInterface jniAPI = SVNClientImpl. newInstance (); byte [] contents = jniAPI. fileContent ( "http://svn.svnkit.com/repos/svnkit/branches/1.1.x/changelog.txt" , Revision. HEAD ); // pure Java implementation of the standard Subversion Java interface SVNClientInterface jniAPI = SVNClientImpl. newInstance (); byte [] contents = jniAPI. fileContent ( "http://svn.svnkit.com/repos/svnkit/branches/1.1.x/changelog.txt" , Revision. HEAD );
官方站点: http://www.svnkit.com DOC: http://svnkit.com/javadoc/index.html