Java svn client call example
1.pom dependencies
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
<version>1.3.5</version>
</dependency>
2.java calling code
import org.tmatesoft.svn.core.SVNDepth;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNLogClient;
import org.tmatesoft.svn.core.wc.SVNRevision;
import org.tmatesoft.svn.core.wc.SVNUpdateClient;
public class SvnTest {
static {
DAVRepositoryFactory.setup();
}
private SVNClientManager manager;
private SVNURL repositoryBaseUrl;
public SvnTest() {
DefaultSVNOptions options = new DefaultSVNOptions();
manager = SVNClientManager.newInstance(options);
// manager = SVNClientManager.newInstance(options,
// "username","passwrod"); //If username password is required
try {
repositoryBaseUrl = SVNURL
.parseURIDecoded("http://svn.apache.org/repos/asf/logging/log4j/trunk/src/main/java/org/apache/log4j/or"); // 传入svn地址
} catch (SVNException e) {
// TODO Auto-generated catch block
e.printStackTrace ();
}
}
public void test() throws SVNException {
SVNLogClient logClient = manager.getLogClient();
// svn list
DirEntryHandler handler = new DirEntryHandler (); // 在 svn
// Processing of each file directory during co, implementing the ISVNDirEntryHandler interface
logClient.doList(repositoryBaseUrl, SVNRevision.HEAD, SVNRevision.HEAD,
false, true, handler); // List the directory of the current svn address and process each file
// svn co
UpdateEventHandler svnEventHandler = new UpdateEventHandler(); // Processing of each file during svn co
SVNUpdateClient client = manager.getUpdateClient();
client.setIgnoreExternals(true);
client.setEventHandler (svnEventHandler);
File to = new File("e:\\log\\testsvn"); // The file storage directory from co
client.doCheckout(repositoryBaseUrl, to, SVNRevision.HEAD,
SVNRevision.HEAD, SVNDepth.INFINITY, false);
// svn update
client.setIgnoreExternals(true);
client.setEventHandler (svnEventHandler);
client.doUpdate(to, SVNRevision.HEAD, SVNDepth.INFINITY,true, false);
}
public static void main(String[] args) throws SVNException {
SvnTest svntest = new SvnTest();
svntest.test();
}
}
import java.util.ArrayList;
import java.util.List;
import org.tmatesoft.svn.core.ISVNDirEntryHandler;
import org.tmatesoft.svn.core.SVNDirEntry;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNNodeKind;
import com.alibaba.tools.code.SearchConfig;
public class DirEntryHandler implements ISVNDirEntryHandler {
@Override
public void handleDirEntry(SVNDirEntry dirEntry) throws SVNException {
System.out.println(dirEntry.getRelativePath() + "/" + dirEntry.getName());
}
}
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.tmatesoft.svn.core.SVNCancelException;
import org.tmatesoft.svn.core.SVNNodeKind;
import org.tmatesoft.svn.core.wc.ISVNEventHandler;
import org.tmatesoft.svn.core.wc.SVNEvent;
import org.tmatesoft.svn.core.wc.SVNEventAction;
public class UpdateEventHandler implements ISVNEventHandler {
public void handleEvent(SVNEvent event, double progress) {
SVNEventAction action = event.getAction();
SVNNodeKind nodeKind = event.getNodeKind();
if (SVNNodeKind.DIR.equals(nodeKind)) {
// folder
System.out.println(event.getFile().getName());
} else {
// treat as file for all other type
if (action == SVNEventAction.UPDATE_DELETE) {
try {
System.out.println(event.getFile().getName() + "\t" + FileUtils.readFileToString(event.getFile()));
} catch (IOException e) {
}
} else if (action == SVNEventAction.UPDATE_ADD || action == SVNEventAction.UPDATE_UPDATE) {
try {
System.out.println(event.getFile().getName() + "\t" + FileUtils.readFileToString(event.getFile()));
} catch (IOException e) {
}
}
}
}
public void checkCancelled() throws SVNCancelException {
}
}
output:
/or
jms / jms
jms / MessageRenderer.java / MessageRenderer.java
jms / package.html / package.html
sax / sax
sax/AttributesRenderer.java/AttributesRenderer.java
sax/package.html/package.html
DefaultRenderer.java/DefaultRenderer.java
ObjectRenderer.java/ObjectRenderer.java
RendererMap.java/RendererMap.java
ThreadGroupRenderer.java/ThreadGroupRenderer.java
package.html/package.html
testsvn
testsvn
Source: http://www.linuxidc.com/Linux/2012-06/61781.htm