我使用SVNKit库开发了一个Java程序,该库将负责在版本控制下更新或提交目录。目录内容可以由我无法控制的另一个程序更改,该程序可以添加,删除或编辑文件,忽略设置颠覆信息。
问题是«我的程序如何知道要提交什么»?
因为没有添加新文件,所以我尝试处理 rootDirectory 的 doImport,但它会导致 SVNException 表明该文件已存在于存储库端。
SVNCommitClient cc = cm.getCommitClient();
cc.doImport(new File(subVersionedDirectory), SVNURL.parseURIEncoded(repositoryURL), "<import> " + commitMessage, null, false, true, SVNDepth.fromRecurse(true));
我还发现一段代码可能会在提交之前将丢失的文件标记为已删除
cc.setCommitParameters(new ISVNCommitParameters() {
// delete even those files
// that are not scheduled for deletion.
public Action onMissingFile(File file) {
return DELETE;
}
public Action onMissingDirectory(File file) {
return DELETE;
}
// delete files from disk after committing deletion.
public boolean onDirectoryDeletion(File directory) {
return true;
}
public boolean onFileDeletion(File file) {
return true;
}
});
cc.doCommit(new File[]{new File(subVersionedDirectory)}, false, "<commit> " + commitMessage, null, null, false, true, SVNDepth.INFINITY);