gpt4 book ai didi

java - SVNKit - 获取修改以提交

转载 作者:搜寻专家 更新时间:2023-11-01 02:13:29 27 4
gpt4 key购买 nike

我使用 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);

最佳答案

我的程序如何知道要提交什么?

我找到的解决方案是在commit之前使用doStatus将删除和添加的文件信息设置到工作副本

cm = SVNClientManager.newInstance(new DefaultSVNOptions());
// Use do status to set deleted and added files information into SVN working copy management
cm.getStatusClient().doStatus(subVersionedDirectory, SVNRevision.HEAD, SVNDepth.INFINITY, false, false, false, false, new ISVNStatusHandler() {
@Override
public void handleStatus(SVNStatus status) throws SVNException {
if (SVNStatusType.STATUS_UNVERSIONED.equals(status.getNodeStatus())) {
cm.getWCClient().doAdd(status.getFile(), true, false, false, SVNDepth.EMPTY, false, false);
} else if (SVNStatusType.MISSING.equals(status.getNodeStatus())) {
cm.getWCClient().doDelete(status.getFile(), true, false, false);
}
}
}, null);
cm.getCommitClient().doCommit(new File[]{subVersionedDirectory}, false, "<commit> " + commitMessage, null, null, false, true, SVNDepth.INFINITY);

关于java - SVNKit - 获取修改以提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12297516/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com