Is there any way to get the SVN structure as a tree struture in java?
I want what all entries under services and if it again contains a directory its enteries also in a tree?
Thanks.
Note : i have seen the getDir(). But here i have to keep on iterating it.
解决方案
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("");
}
@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();
}