当前位置:贵波网 > 内容 > 正文

使用SVNkit来checkout的时候出错

2021-08-01 14

同样遇到这个问题,已解决,不知道你是否跟我情况一样,下面是我的能跑通的代码

注意点:

1.需要jar包:

2.svn: E200030: SQLite error 报这个错,记住先把你checkout的本地目录下的文件先删除,包括.svn的文件夹,然后在执行

(1)第一个类 SvnTest.java

import java.io.File;

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.io.svn.SVNRepositoryFactoryImpl;

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();

        SVNRepositoryFactoryImpl.setup();

    }  

  

    private SVNClientManager manager;  

    private SVNURL repositoryBaseUrl;  

    String url = "svn://localhost/ATMS/src/servlet";

    String filePath = "E:/Tomcat6/webapps/AIMS/resource";

   

    public SvnTest() {  

        DefaultSVNOptions options = new DefaultSVNOptions();  

        manager = SVNClientManager.newInstance(options);  

        manager = SVNClientManager.newInstance(options,  

         "yjh","123"); //如果需要用户名密码  

        try {  

            repositoryBaseUrl = SVNURL  

                    .parseURIDecoded(url); // 传入svn地址  

        } catch (SVNException e) {  

            e.printStackTrace();  

        }  

  

    }  

  

    public void test() throws SVNException {  

        SVNLogClient logClient = manager.getLogClient();  

  

        DirEntryHandler handler = new DirEntryHandler(); // 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(filePath); // 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 { 

    try {

    SvnTest svntest = new SvnTest();  

            svntest.test();  

} catch (Exception e) {

e.printStackTrace();

}

    } 

}

________________________________

(2)第二个类 DirEntryHandler.java

import org.tmatesoft.svn.core.ISVNDirEntryHandler;  

import org.tmatesoft.svn.core.SVNDirEntry;  

import org.tmatesoft.svn.core.SVNException;  

  

public class DirEntryHandler implements ISVNDirEntryHandler {  

  

    @Override  

    public void handleDirEntry(SVNDirEntry dirEntry) throws SVNException {  

  

        System.out.println(dirEntry.getRelativePath() + "/" + dirEntry.getName());  

    }  

  

}

__________________________________

(3)第三个类 UpdateEventHandler.java

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)) {  

       

                System.out.println(event.getFile().getName());  

  

        } else {  

       

            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 {  

    }  

  

}  

——————————————————————-

然后运行第一个类。

我的代码和你的是一样的,可我检出以后手动提交和java代码提交都报错,你的能提交不?
本周热门
热门文章
热门关注