gpt4 book ai didi

java - 为什么 Java SVNKit 在错误的位置添加文件夹

转载 作者:行者123 更新时间:2023-12-02 01:24:43 30 4
gpt4 key购买 nike

在我的 svn 存储库中,目录层次结构如下:

/dirA(exists)/
/dirB(exists)/

dirA 中包含哪个 dirB,并且两者都存在。

现在,我想在 dirB 中添加一个文件夹(dirC),在 dirC 中添加一个文件(file1.txt),所以我希望目录层次结构如下:

/dirA(exists)/
/dirB(exists)/
/dirC(added)/
/file1.txt(added)

使用 SVNKit,我的 SVNRepository 实例指向 dirA,我使用 getCommitEditor() 获取 ISVNEditor 的实例,并调用它的 openRoot(-1) 方法,如下所示:

ISVNEditor svnEditor = svnRepository.getCommitEditor("add folder and file.", null);
svnEditor.openRoot(-1);

我调用ISVNEditor的addDir()方法和addFile()方法来添加文件夹和文件,如下所示:

svnEditor.addDir("dirB/dirC", null, -1);
svnEditor.addFile("dirB/dirC/file1.txt", null, -1);
svnEditor.applyTextDelta("dirB/dirC/file1.txt", null);

SVNDeltaGenerator deltaGenerator = new SVNDeltaGenerator();
String checksum = deltaGenerator.sendDelta("dirB/dirC/file1.txt", new ByteArrayInputStream(data), svnEditor, true);
svnEditor.closeFile("dirB/dirC/file1.txt", checksum);//Closes the new added file.
svnEditor.closeDir(); //Closes the new added folder.
svnEditor.closeDir(); //Closes the root folder.

svnEditor.closeEdit();

之后,为什么dirC被添加到dirA而不是dirB,目录层次结构变成这样:

/dirA(root)/
/dirB(exists)/
/dirC(added)/
/file1.txt(added)

当我调用时,我已指示 dirC 位于 dirB 下

svnEditor.addDir("dirB/dirC", null, -1),

但是好像不起作用?预先感谢您回答我的问题。

最佳答案

为了更改文件夹,您需要提供 dirB 的本地版本。

//provide your local revision of dirB
long r = ...;
svnEditor.openDir( "dirB" , r );

所以现在你在你的目录下。到达那里后,您可以在 dirB 下添加文件或文件夹。如果您想进一步深入,例如在 dirC 中,那么您必须再次提供 dirC 的本地版本并在其中添加一个文件。

关于java - 为什么 Java SVNKit 在错误的位置添加文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57109413/

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