`

使用JGit获取指定分支的文件内容

    博客分类:
  • git
阅读更多
/**
     * 获取指定分支、指定文件的内容
     * @param gitRoot git仓库目录
     * @param branchName 分支名称
     * @param fileName 文件名称
     * @return
     * @throws Exception
     */
    public static String getContentWithFile(String gitRoot, final String branchName, String fileName)
                                                                                                     throws Exception {
        final Git git = Git.open(new File(gitRoot));
        Repository repository = git.getRepository();

        repository = git.getRepository();
        RevWalk walk = new RevWalk(repository);
        Ref ref = repository.getRef(branchName);
        if (ref == null) {
            //获取远程分支
            ref = repository.getRef(REF_REMOTES + branchName);
        }
        //异步pull
        ExecutorService executor = Executors.newCachedThreadPool();
        FutureTask<Boolean> task = new FutureTask<Boolean>(new Callable<Boolean>() {
            @Override
            public Boolean call() throws Exception {
                /*//创建分支
                CreateBranchCommand createBranchCmd = git.branchCreate();
                createBranchCmd.setStartPoint(REF_REMOTES + branchName).setName(branchName).call();*/
                return git.pull().call().isSuccessful();
            }
        });
        executor.execute(task);

        ObjectId objId = ref.getObjectId();
        RevCommit revCommit = walk.parseCommit(objId);
        RevTree revTree = revCommit.getTree();

        TreeWalk treeWalk = TreeWalk.forPath(repository, fileName, revTree);
        //文件名错误
        if (treeWalk == null)
            return null;

        ObjectId blobId = treeWalk.getObjectId(0);
        ObjectLoader loader = repository.open(blobId);
        byte[] bytes = loader.getBytes();
        if (bytes != null)
            return new String(bytes);
        return null;
    }

 

1
2
分享到:
评论

相关推荐

    JGit工具类包 超全 可用

    - 在JGit中,递归可能应用于遍历仓库中的所有文件、处理所有分支或递归合并子模块等场景。例如,如果一个项目包含多个子模块,递归调用可以帮助处理每个子模块的Git操作。 综上所述,这个"JGit工具类包"提供了一...

    jgit jar&doc;

    这个压缩包包含了JGit的主要库文件以及相关的文档资源。 首先,我们关注`org.eclipse.jgit-2.0.0.201206130900-r.jar`这个文件。这是一个JGit的核心库,包含了JGit的主要功能。2.0.0是其版本号,201206130900可能是...

    jgit-cli:与常规 Git CLI 相比,用于调查 JGit 差异的命令行实用程序

    使用 JGit 模拟 Git 原生 CLI Usage: java -jar jgit-cli-XX.jar [options] [command] [command options] Options: --help Default: false Commands: blame Show what revision and author last modified each ...

    org.eclipse.jgit-5.10.0.202012080955-r-API文档-中文版.zip

    赠送jar包:org.eclipse.jgit-5.10.0....使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    org.eclipse.jgit-3.0.0.201306101825-r.zip

    Eclipse JGit提供了一个全面的Git API,包括对仓库的创建、添加文件、提交、分支管理、合并、重置、标签等功能。它还支持通过HTTP、SSH和本地文件系统访问Git仓库。JGit特别适用于需要在Java应用内部集成Git功能的...

    matlab开发-JGit4MATLAB

    **正文** 标题“matlab开发-JGit4MATLAB”揭示了一个关键...而`jgit.m`和`@JGit`目录下的内容则构成了实现这一功能的MATLAB代码。`egit2.png`可能提供了一个可视化的工作流程示例,帮助用户理解如何在实际应用中操作。

    org.eclipse.jgit.lfs-5.10.0.202012080955-r-API文档-中文版.zip

    赠送jar包:org.eclipse.jgit.lfs-5.10.0.202012080955-r.jar; 赠送原API文档:org....使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持

    org.eclipse.jgit-5.10.0.202012080955-r-API文档-中英对照版.zip

    赠送jar包:org.eclipse.jgit-5.10.0....使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    org.eclipse.jgit.lfs-5.10.0.202012080955-r-API文档-中英对照版.zip

    赠送jar包:org.eclipse.jgit.lfs-5.10.0.202012080955-r.jar; 赠送原API文档:org.eclipse.jgit.lfs-5.10...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中

    Java操作GitLab工具JGit 工具类

    JGit是一个可以用java来对git进行操作的插件,可以通过代码连接git...使用时添加pom依赖 &lt;groupId&gt;org.eclipse.jgit &lt;artifactId&gt;org.eclipse.jgit &lt;version&gt;3.7.0.201502260915-r 其他的常用操作已在代码中包含

    提供JGit Java Git实现的示例和代码片段.zip

    3. **读取仓库信息**:获取仓库的Head引用,列出所有分支,查看提交历史等。 4. **文件操作**:添加、删除、修改文件,并将这些更改提交到仓库。 5. **分支管理**:创建、切换、合并分支,解决合并冲突。 6. **远程...

    jgit-4.8-jar包

    JGit 是提供了一套类似 Git 命令的 Java API,可以方便地在程序中进行 git 操作 jgit-4.8.0.201706111038-r.jar

    silly-jgit.zip

    silly-jgit 是 Git 核心库的纯 Java 实现。 标签:silly

    jgit-cookbook, 提供 JGit Java Git实现的示例和代码 Fragment.zip

    jgit-cookbook, 提供 JGit Java Git实现的示例和代码 Fragment jgit食谱 提供 JGit的Java Git实现示例和代码 Fragment 。JGit框架丰富多样,它有两层,一个低级的插件 api,以及一个高级别的系列的命令,比如 ...

    org.eclipse.jgit.ant-3.3.2.201404171909-r.zip

    Ant是Apache的一款构建工具,而JGit的Ant任务库则允许开发者在Ant构建脚本中直接使用JGit的功能,比如克隆、提交、拉取和分支管理等。这对于自动化构建流程非常有用,特别是对于那些依赖于Git版本控制的Java项目。 ...

    org.eclipse.jgit.pgm-3.2.0.0.2-UNOFFICIAL-ROBERTO-RELEASE.zip

    标题中的"org.eclipse.jgit.pgm-3.2....学习和使用这两个开源项目,开发者不仅可以提升Git操作的技能,还能掌握如何利用API来增强多媒体内容展示。同时,参与社区和贡献代码也是提升自身编程能力和影响力的好机会。

    jgit jar包

    org.eclipse.jgit-4.5.0.201609210915-r.jar 通过java执行git命令

    jgit-cookbook:提供有关JGit Java Git实现的示例和代码段

    注意:请使用诸如网站来获取有关JGit使用的一般问题,而不是本项目中的问题。 对于片段的问题和缺少片段的建议,应该使用问题。 自然,可以在此处包括来自stackoverflow的良好答案的摘录。入门抓住它git clone git:...

    org.eclipse.jgit-4.9.0.201710071750-r.jar

    JGit 是提供了一套类似 Git 命令的 Java API,可以方便地在程序中进行 git 操作

Global site tag (gtag.js) - Google Analytics