gpt4 book ai didi

java - 克隆存储库时 JGit 错误

转载 作者:行者123 更新时间:2023-12-01 14:33:39 24 4
gpt4 key购买 nike

无法修复的错误。它嵌入到不同操作系统如何允许文件名中使用字符中。目前在 JGit 或 Git 中找不到解决方案。

当我尝试运行 Git.cloneRepository() 时,我收到文件、目录名或卷标签语法错误。这种情况突然开始出现,而没有对我的软件的这部分代码进行任何更改。

JRE:1.7

我使用的代码:

private void cloneCommit() throws Exception {
try {
File mineDir = new File(m_target, this.m_name);

if (!mineDir.exists()) {
mineDir.mkdir();
mineDir.setWritable(true);
mineDir.setExecutable(true);
}

Git g = null;

WindowCacheConfig cfg = new WindowCacheConfig();
cfg.setPackedGitMMAP(false);
WindowCache.reconfigure(cfg);

g = Git.cloneRepository()
.setURI(m_localUri)
.setDirectory(mineDir)
.call();

g.reset().setRef(this.m_current.getName()).setMode(ResetType.HARD).call();

GlobalMessages.commitPulled(this.m_i, this.m_current.getName());

g.getRepository().close();

m_runningThreads--;

} catch (Exception e) {
errorHandlingMining(e, this.m_current);
}
}

错误消息:

org.eclipse.jgit.api.errors.JGitInternalException: Incorrect syntax for file name, directory name or volume label
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:130)
at se.lnu.cs.doris.git.GitRepository$Cloner.cloneCommit(GitRepository.java:423)
at se.lnu.cs.doris.git.GitRepository$Cloner.guardedCloner(GitRepository.java:446)
at se.lnu.cs.doris.git.GitRepository$Cloner.run(GitRepository.java:440)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Incorrect syntax for file name, directory name or volume label
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createTempFile(Unknown Source)
at org.eclipse.jgit.dircache.DirCacheCheckout.checkoutEntry(DirCacheCheckout.java:968)
at org.eclipse.jgit.dircache.DirCacheCheckout.doCheckout(DirCacheCheckout.java:457)
at org.eclipse.jgit.dircache.DirCacheCheckout.checkout(DirCacheCheckout.java:391)
at org.eclipse.jgit.api.CloneCommand.checkout(CloneCommand.java:229)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:127)
... 4 more

我不明白问题出在哪里。我尝试通过跳过第一个 if 子句,仅使用 mineDir.createNewFile() 等来纠正它。几天前,该代码运行得非常好。有什么建议吗?

最佳答案

从堆栈跟踪来看,错误发生在克隆存储库后的 checkout 阶段。在此阶段,HEAD 提交中记录的文件和文件夹将在工作目录中创建。

那么,是否有一个提交引入了一个名称中包含特殊字符的文件?要找到答案,请查看克隆存储库的历史记录。

关于java - 克隆存储库时 JGit 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16670312/

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