zoukankan      html  css  js  c++  java
  • svnkit递归获取指定目录下的全部文件

    package demo.wc;

    import java.util.Collection;
    import java.util.Iterator;

    import org.tmatesoft.svn.core.SVNDirEntry;
    import org.tmatesoft.svn.core.SVNException;
    import org.tmatesoft.svn.core.SVNNodeKind;
    import org.tmatesoft.svn.core.SVNURL;
    import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
    import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
    import org.tmatesoft.svn.core.io.SVNRepository;
    import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
    import org.tmatesoft.svn.core.wc.SVNWCUtil;

    /*
     * 此类用来显示版本库的树状结构。
     * 此类用底层API(Low Level API)直接访问版本库。
     * 此程序框架于1-5的示例(High Level API)稍有不同。
     * */
    public class DisplayRepositoryTree {

        public static void main(String[] args) {


    //     初始化支持svn://协议的库。 必须先执行此操作。
    SVNRepositoryFactoryImpl.setup();

            /*
             * 相关变量赋值
             */
    String url = "https://jy-PC/svn/Myjy/";//https://jy-PC/svn/Myjy/
            String name = "admin";
            String password = "admin";
            //定义svn版本库的URL。
            SVNURL repositoryURL = null;
            //定义版本库。
            SVNRepository repository = null;
            /*
             * 实例化版本库类
             * */
            try {
             //获取SVN的URL。
             repositoryURL=SVNURL.parseURIEncoded(url);
             //根据URL实例化SVN版本库。
                repository = SVNRepositoryFactory.create(repositoryURL);
            } catch (SVNException svne) {
                /*
                 * 打印版本库实例创建失败的异常。
                 */
                System.err
                        .println("创建版本库实例时失败,版本库的URL是 '"
                                + url + "': " + svne.getMessage());
                System.exit(1);
            }

            /*
             * 对版本库设置认证信息。
             */
            ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(name, password);
            repository.setAuthenticationManager(authManager);

            /*
             * 上面的代码基本上是固定的操作。
             * 下面的部门根据任务不同,执行不同的操作。
             * */
            try {

                //打印版本库的根
    //            System.out.println("Repository Root: " + repository.getRepositoryRoot(true));
                //打印出版本库的UUID
    //            System.out.println("Repository UUID: " + repository.getRepositoryUUID(true));
                System.out.println("");
                //打印版本库的目录树结构
                listEntries(repository, "");
            } catch (SVNException svne) {
                System.err.println("打印版本树时发生错误: "
                        + svne.getMessage());
                System.exit(1);
            }
            /*
             * 获得版本库的最新版本树
             */
            long latestRevision = -1;
            try {
                latestRevision = repository.getLatestRevision();
            } catch (SVNException svne) {
                System.err
                        .println("获取最新版本号时出错: "
                                + svne.getMessage());
                System.exit(1);
            }
            System.exit(0);
        }


        /*
         * 此函数递归的获取版本库中某一目录下的所有条目。
         */
        public static void listEntries(SVNRepository repository, String path)
                throws SVNException {
            //获取版本库的path目录下的所有条目。参数-1表示是最新版本。
            Collection entries = repository.getDir(path, -1, null,(Collection) null);
            Iterator iterator = entries.iterator();
            while (iterator.hasNext()) {
                SVNDirEntry entry = (SVNDirEntry) iterator.next();
                System.out.println("/" + (path.equals("") ? "" : path + "/") + entry.getName());
                if (entry.getKind() == SVNNodeKind.DIR) {
                    listEntries(repository, (path.equals("")) ? entry.getName(): path + "/" + entry.getName());
                }
            }
        }
    }

  • 相关阅读:
    设置win 10 软件开机启动
    win10 无法使用内置管理员账户打开应用
    设置 npm 源为淘宝镜像
    git sh.exe 乱码
    mybatis 获取新增数据的主键
    框架 get 请求乱码
    js在浏览器下的区别小结(部分)
    js调试的一点小知识
    git常用命令
    css水平居中(一)
  • 原文地址:https://www.cnblogs.com/firstdream/p/8467293.html
Copyright © 2011-2022 走看看