首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用go-git克隆存储库后读取文件

使用go-git克隆存储库后读取文件
EN

Stack Overflow用户
提问于 2020-02-05 17:15:29
回答 1查看 3.6K关注 0票数 0

我希望能够使用go执行运行时的go操作。

我最近发现了go-git包,它在这方面非常有用。

我还能够执行pull操作,大致如下:

代码语言:javascript
运行
复制
import {
  git "gopkg.in/src-d/go-git.v4"
}

repo, err := git.Clone(memory.NewStorage(), nil, &git.CloneOptions{
    URL: "https://github.com/pkaramol/myrepo",
})

err := repo.Pull(&git.PullOptions{
    RemoteName: "origin"
})

我的问题是,假设我使用的是上述回购的内存中签出),我如何能够从存储库中读取(我的go程序)的文件?即假设文件

代码语言:javascript
运行
复制
https://github.com/pkaramol/myrepo/someConfig.yaml

如果我需要只是这个特定的文件,那么执行的git克隆(仍然在mem中)是否更可取?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-05 18:34:10

从医生那里

使用给定的选项将存储库克隆到给定的Storer和worktree文件系统中,如果工作树为0,则创建一个空的存储库。

如果希望访问工作树,请不要传递零文件系统。使用类似于Gopkg.in/src/go-Billy.v4/memfs.Memory的东西

代码语言:javascript
运行
复制
package main

import (
    "gopkg.in/src-d/go-git.v4"
    "gopkg.in/src-d/go-git.v4/storage/memory"
    "gopkg.in/src-d/go-billy.v4/memfs"
)

func main() {
    fs := memfs.New()

    repo, err := git.Clone(memory.NewStorage(), fs, &git.CloneOptions{
        URL: "https://github.com/pkaramol/myrepo",
    })

    file, err := fs.Open("someConfig.yaml")
}

您不能克隆单个文件(这不是git的工作方式),但是可以限制使用CloneOptions.Depth下载的提交数量。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60080923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档