How to get tree structure from SVN using java

为君一笑 提交于 2019-12-06 15:29:27

If you need all the tree, you may do that with "status" request with report telling that you have an empty working copy. One "status" request should be faster than a number of getDir() requests. An example how to do that with SVNKit

   final SVNRepository svnRepository = SVNRepositoryFactory.create(url);
    try {
        svnRepository.status(revision, "", SVNDepth.INFINITY, new ISVNReporterBaton() {
            @Override
            public void report(ISVNReporter reporter) throws SVNException {
                reporter.setPath("", null, revision, SVNDepth.INFINITY, true);
                reporter.finishReport();
            }
        }, new ISVNEditor() {
            @Override
            public void targetRevision(long revision) throws SVNException {

            }

            @Override
            public void openRoot(long revision) throws SVNException {
                System.out.println("<root>");
            }

            @Override
            public void deleteEntry(String path, long revision) throws SVNException {
            }

            @Override
            public void absentDir(String path) throws SVNException {
            }

            @Override
            public void absentFile(String path) throws SVNException {
            }

            @Override
            public void addDir(String path, String copyFromPath, long copyFromRevision) throws SVNException {
                System.out.println("directory: " + path);
            }

            @Override
            public void openDir(String path, long revision) throws SVNException {
            }

            @Override
            public void changeDirProperty(String name, SVNPropertyValue value) throws SVNException {
            }

            @Override
            public void closeDir() throws SVNException {
            }

            @Override
            public void addFile(String path, String copyFromPath, long copyFromRevision) throws SVNException {
                System.out.println("file: " + path);
            }

            @Override
            public void openFile(String path, long revision) throws SVNException {
            }

            @Override
            public void changeFileProperty(String path, String propertyName, SVNPropertyValue propertyValue) throws SVNException {
            }

            @Override
            public void closeFile(String path, String textChecksum) throws SVNException {
            }

            @Override
            public SVNCommitInfo closeEdit() throws SVNException {
                return null;
            }

            @Override
            public void abortEdit() throws SVNException {
            }

            @Override
            public void applyTextDelta(String path, String baseChecksum) throws SVNException {
            }

            @Override
            public OutputStream textDeltaChunk(String path, SVNDiffWindow diffWindow) throws SVNException {
                return null;
            }

            @Override
            public void textDeltaEnd(String path) throws SVNException {
            }
        });
    } finally {
        svnRepository.closeSession();
    }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!