gpt4 book ai didi

java - JGit:远程存储库的状态

转载 作者:行者123 更新时间:2023-11-29 03:21:35 24 4
gpt4 key购买 nike

我正在尝试在 Eclipse 中使用 JGit 获取 Git 存储库的状态。
我在这里找到了一些例子:1 , 2并 merge 它们:

import java.io.File;
import java.io.IOException;

import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.InvalidRemoteException;
import org.eclipse.jgit.api.errors.TransportException;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
import org.eclipse.jgit.api.Status;

public class Main {

private static final String REMOTE_URL = "https://github.com/github/testrepo.git";

public static void main(String[] args) throws IOException, InvalidRemoteException, TransportException, GitAPIException {
// prepare a new folder for the cloned repository
File localPath = File.createTempFile("TestGitRepository", "");
localPath.delete();

// then clone
System.out.println("Cloning from " + REMOTE_URL + " to " + localPath);
Git.cloneRepository()
.setURI(REMOTE_URL)
.setDirectory(localPath)
.call();

// now open the created repository
FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repository = builder.setGitDir(localPath)
.readEnvironment() // scan environment GIT_* variables
.findGitDir() // scan up the file system tree
.build();

System.out.println("Having repository: " + repository.getDirectory());

Status status = new Git(repository).status().call();
System.out.println("Added: " + status.getAdded());
System.out.println("Changed: " + status.getChanged());
System.out.println("Conflicting: " + status.getConflicting());
System.out.println("ConflictingStageState: " + status.getConflictingStageState());
System.out.println("IgnoredNotInIndex: " + status.getIgnoredNotInIndex());
System.out.println("Missing: " + status.getMissing());
System.out.println("Modified: " + status.getModified());
System.out.println("Removed: " + status.getRemoved());
System.out.println("Untracked: " + status.getUntracked());
System.out.println("UntrackedFolders: " + status.getUntrackedFolders());

repository.close();
}
}

但是我得到以下错误:

Exception in thread "main" org.eclipse.jgit.errors.NoWorkTreeException: Bare Repository has neither a working tree, nor an index
at org.eclipse.jgit.lib.Repository.getWorkTree(Repository.java:1245)
at org.eclipse.jgit.treewalk.FileTreeIterator.<init>(FileTreeIterator.java:88)
at org.eclipse.jgit.api.StatusCommand.call(StatusCommand.java:126)
at Main.main(Main.java:38)

最佳答案

如果您将代码段的 FileRepositoryBuilder 部分替换为以下行,该代码段将起作用。

Git git = Git.open( localPath );
Repository repository = git.getRepository();

请注意,您的代码片段将构建器的 GitDir 设置为 localPath,但本地路径表示刚刚克隆的存储库的工作目录。

关于java - JGit:远程存储库的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23324219/

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