사용자가 업로드 한 파일을 유지 관리해야하는 프로젝트에 JGit을 사용하고 있습니다. 파일이 이미있는 경우 새 파일을 만들고 커밋/업로드 된 파일 집합과 연결합니다.JGit 확장 성 제한
각 파일이 업로드 된 파일 즉, 서버 시스템의 저장소에 커밋하고 DB에 저장된 파일을 추가하여 고객과 해당 파일 버전 목록, 즉 commitIds를 연결합니다.
그러나 업로드 파일을 거의 반복하지 않으면 (각 업로드는 약 200 개의 파일로 구성 될 수 있음) JGit은 파일을 커밋하고 commitIds를 올바르게 생성 할 수는 있지만 커미트 된 파일을 다시 보여줄 때 파일의 내용을 확인할 수는 없습니다 .
불행히도 파일을 복구하는 동안 로그에 오류가 표시되지 않습니다.
따라서 나는 길을 잃었습니다. 그리고 무엇이 잘못되었는지를 이해하기 위해 애 쓰고 있습니다.
내 질문은 :
- 가 JGIT 충분한 확장 성을 가지고 있습니까? 즉, 가져 오는 시간은 성장함에 따라 충분히 빠릅니까?
파일을 올바르게 검색하면 어떻게해야합니까? 다음은
FileUtils.copyFile(aFile,destFile);
AddCommand add = git.add();
add.addFilepattern(".").call();
CommitCommand commit = git.commit();
commit.setAuthor(user.getFirstName(), user.getUserId());
commit.setMessage("comments").call();
ObjectId lastCommitId = git.getRepository().resolve(org.eclipse.jgit.lib.Constants.HEAD);
는 GIT 저장소입니다 사용하고 코드의 조각과 aFile 변수는 파일 이름 난의 내용을 가져 오지 애 쓰고 lastCommitId를 사용
입니다 그 파일은 내가 받고 :
MissingObjectException: Missing unknown 0000000000000000000000000000000000000000
파일을 구하는 데 사용되는 코드는 :
AlBlue, 고맙습니다.하지만 저에게 commitId가있는 객체가있을 때 왜 저에게 zeroId가 생기는 이유는 무엇입니까? "MissingObjectException : Missing unknown 0000000000000000000000000000000000000000"이되는 것을 피하는 방법? – user2907154
코드에서 생성과 동일한 프로세스에서 커밋을 시도하고 있습니까? 실제로 데이터베이스에 지속되는'call()'을 수행하지 않는 것으로 보입니다. 그래서 그 커밋을 열려고 시도하면'call()'으로 커밋되기 전에 커밋의 id가'0000 ... '이기 때문에 누락 된 객체 예외가 발생합니다. – AlBlue