java - 如何使用 JGit 检查 Git 克隆是否已经完成

标签 java git git-clone jgit

我学习 git 并使用 JGit 从 java 代码访问 Git 存储库。默认情况下,Git 不允许克隆到非空目录。我们如何确定已经为本地计算机中的特定 git 存储库完成了 git 克隆,以便我们只能在随后执行 Git pull?

目前我正在使用这种方法:

 if a root folder is existing in the specified location
     clone has been done
     pull 
 else
     clone

但不确定这是否正确。有更好的想法吗?

谢谢。

最佳答案

这是我在 Jgit 邮件列表中指定的方法:

检查git仓库是否存在:

if (RepositoryCache.FileKey.isGitRepository(new File(<path_to_repo>), FS.DETECTED)) {

     // Already cloned. Just need to open a repository here.
} else {

     // Not present or not a Git repository.
}

但这不足以检查 git 克隆是否“成功”。部分克隆可以使 isGitRepository() 评估为真。要检查 git clone 是否成功完成,至少需要检查一个引用是否不为空:

private static boolean hasAtLeastOneReference(Repository repo) {

    for (Ref ref : repo.getAllRefs().values()) {
        if (ref.getObjectId() == null)
            continue;
        return true;
    }

    return false;
}

感谢 Shawn Pearce 的回答!

关于java - 如何使用 JGit 检查 Git 克隆是否已经完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586502/

相关文章:

java - 如何将 java 字符串转换为代码页 857

Python:查找给定 git 存储库的所有提交与其差异的映射

git - 在一个本地目录中克隆多个 git 存储库?

java - 如何以及在何处使用 Java 中的静态修饰符?

java - Hibernate 工具 - DAO 生成

git - 推荐的 gitattributes 设置是什么?

Git 克隆错误 “HTTP code 405 from proxy after CONNECT”

git - 带有Docker构建的PHP和Composer:无法克隆git

git - 代理连接在访问 git 时中止

java - 如何在 Java 中制作不包含绝对路径名的 Zip/Jar