那不是那么困难。如果要保留复制历史记录,可以运行以下代码
ISVNCommitEditor editor = svnRepository.getCommitEditor("", null);
editor.openRoot(latestRevision);
editor.openDir("path", latestRevision); //or use addDir if it doesn't exist
editor.openDir("path/to", latestRevision); //or use addDir if it doesn't exist
editor.openDir("path/to/new", latestRevision); //or use addDir if it doesn't exist
editor.addDir("path/to/new/directory", "/path/to/old/directory", copySourceRevision);
editor.closeDir();
editor.closeDir();
editor.closeDir();
editor.closeDir();
editor.closeDir();
editor.closeEdit();
但是如果你不想保留历史,你可以创建编辑器
ISVNCommitEditor editor = svnRepository.getCommitEditor("", null);
然后打电话
anotherSvnRepository.setLocation(copySourceUrl, true);
anotherSvnRepository.update(copySourceRevision, "", SVNDepth.INFINITY, false, reporter, customEditor);
而不是reporter
使用此代码:
ISVNReporterBaton reporter = new ISVNReporterBaton() {
@Override
public void report(ISVNReporter reporter) throws SVNException {
reporter.setPath("", null, copySourceRevision, SVNDepth.INFINITY, true);
reporter.finishReport();
}
};
customEditor
应该是editor
上面构造的包装器,它将editor
使用正确的路径调用(也许您应该添加一些 openDir/closeDir 调用以使编辑器调用正确)。
例如,您可以查看我的svnkitfilter项目的源代码,该项目执行类似的操作。
要了解目录/文件是否存在,请使用 SVNRepository#checkPath 方法。