• java 的svn客户端调用示例


    1.pom依赖

    		<dependency>
    			<groupId>org.tmatesoft.svnkit</groupId>
    			<artifactId>svnkit</artifactId>
    			<version>1.3.5</version>
    		</dependency>

    2.java调用代码

    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"); //如果需要用户名密码
    		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
    															// co时对每个文件目录的处理,实现ISVNDirEntryHandler接口
    		logClient.doList(repositoryBaseUrl, SVNRevision.HEAD, SVNRevision.HEAD,
    				false, true, handler); // 列出当前svn地址的目录,对每个文件进行处理
    
    		// svn co
    		UpdateEventHandler svnEventHandler = new UpdateEventHandler(); // svn  co时对每个文件的处理
    		SVNUpdateClient client = manager.getUpdateClient();
    		client.setIgnoreExternals(true);
    		client.setEventHandler(svnEventHandler);
    		File to = new File("e:\\log\\testsvn"); // 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 {
        }
    
    }
    

    输出:

     

    /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
    

     

     

     

    API参考:

    http://svnkit.com/javadoc/org/tmatesoft/svn/core/wc/SVNUpdateClient.html#doUpdate(java.io.File, org.tmatesoft.svn.core.wc.SVNRevision, boolean)


  • 相关阅读:
    整数的可除性
    椭圆曲线的基本概念
    数组方法分析-笔记
    JS-作用域
    JS-变量存储
    Web框架-inoic
    圣杯布局
    js,php中的面向对象
    正则
    math对象
  • 原文地址:https://www.cnblogs.com/secbook/p/2655167.html
Copyright © 2020-2023  润新知