수정되지 않는 버그. 다른 운영 체제가 파일 이름에 문자를 허용하는 방법에 포함됩니다. 현재 JGit 또는 Git에서 해결책을 찾을 수 없습니다.리포지토리 복제시 JGit 오류가 발생합니다.
Git.cloneRepository()를 실행하려고하면 파일, 디렉토리 이름 또는 볼륨 lable에 대한 구문 오류가 발생합니다. 이것은 내 소프트웨어의이 부분에 관한 코드의 변경없이 갑자기 나타났습니다.
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() 등을 사용하여이를 바로 잡으려고 노력했다.이 코드는 불과 며칠 전에 훌륭하게 작동했다. 어떤 제안?
오류가 발생하면 임의로 보입니다. 질문이 게시 된 후 30 분이 지나도 동일한 저장소에 오류가 표시되지 않습니다. –