SVNKit application

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

 

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326770276&siteId=291194637