问题标签 [go-git]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
231 浏览

git - 如何使用用户/密码身份验证通过 go-git 克隆存储库?

我正在尝试使用用户/密码(BasicAuth)执行一组 git clone 操作,它运行正常,但在某些时候它会因错误而停止。

  1. 我正在使用git.PlainClone(...)+ http.BasicAuth{}
  2. 我尝试了几个具有相同结果的文件夹。我收到类似的消息,但每次运行都不同:error: mkdir /tmp/foo/.git/refs/remotes/origin/addusers: not a directory.
  3. 它适用于开放的 Git 存储库。

这是代码:

错误:

0 投票
0 回答
36 浏览

go - go-git 从轻量级标签中获取树

我正在尝试从 git 标签获取文件树,一切正常,直到我发现一些标签没有注释,因此不是 TagObject

这是我当前的代码:

但现在我必须将其更改为以下内容才能访问轻量级标签

第三部分 (tree, err = t.Tree()) 当然不再起作用,因为 *plumbing.Reference 没有字段或方法 Tree

有什么办法可以从

得到一棵树?

0 投票
1 回答
108 浏览

git - 如何签出最新版本标签

我知道如何使用Checkout(&git.checkoutOptions)with plumbing.ReferenceName("<branchName>")or签出特定的提交或分支plumbing.Hash("<commit hash>"),但我希望能够克隆特定的发布版本。关于如何做到这一点的任何想法?

0 投票
1 回答
190 浏览

go - 如何使用 go-git 包获取特定哈希的 git 标签以获取类似于 git describe --tags --always 的输出

我正在使用 go-git 包来获取标签,在使用函数“TagObject”时,它返回 null。我应该怎么写?

实际文件:

测试文件:

如何在我的实际文件中获取标签?错误:

0 投票
1 回答
115 浏览

git - 如何在 go 中用 go-git 模仿 git --work-tree ...

我有一个裸存储库,我需要在其中添加和提交一组文件。据我了解,将文件添加到索引需要一个worktree。在命令行上使用git,我会将git-dir选项设置为指向裸目录,同时将work-tree选项设置为指向要添加到索引的文件所在的工作树。像这样:

值得一提的是,“.git”目录不是,也不能简单地命名为“.git”。它实际上是一个“自定义”“.git”目录。喜欢git --git-dir /path/to/.notgit ...

我尝试设置core.worktree配置选项。但是,core.bare设置为true这会导致致命错误。两者都来自命令行:

并使用go-git

我的一个想法是依靠该git.PlainOpenWithOptions功能,希望能够让我提供一个工作树作为选项。然而,看看git.PlainOpenOptions结构类型,这很快就崩溃了。

git --work-tree ...我该如何模仿go-git


编辑 1:解释说“.git”不完全命名为“.git”。

0 投票
1 回答
93 浏览

go - 分支之间的 go-git diff

go-git 可以获取两个分支之间的差异,或者,例如,当前分支和主分支?

使用 GIT,您可以获得当前分支和主分支之间的差异:

在两个分支之间:

我发现这个答案可以使用 (*object.Commit).Patch,但在提交之间,而不是分支之间。

0 投票
1 回答
41 浏览

git - 无法使用 go-git 和访问令牌运行 https git clone

使用go-git/v5并尝试克隆https如下:

token表单的字符串在哪里ghp_XXXXXXXXX(我的个人 GH 访问令牌)

repo等于我的私人回购https://github.com/pkaramol/arepo

错误是

我还尝试将基本身份验证与我的用户名和令牌作为密码一起使用

现在错误变为:

通过https克隆的正确方法是什么?

该令牌具有repo范围 fwiw

编辑:

实例化fs如下

使用的http包如下

0 投票
0 回答
115 浏览

go - Golang - 在不克隆 repo 的情况下获取 git 远程分支列表

我想要一个 git repo 的所有远程分支的列表。现在,这个 git repo 可以是私有的/公共的。我有权访问令牌以访问存储库。

我正在使用这个特定的 SDK:https ://pkg.go.dev/github.com/go-git/go-git/v5

一种方法是..

但是,这涉及到首先克隆 repo。如何在不克隆 repo 的情况下获取列表?

提前感谢!

0 投票
1 回答
51 浏览

go - Go Git - 递归子模块

我有一个包含子模块的项目,如此处所示。

我正在使用 go-git pkg 并尝试使用此处显示的选项进行克隆,

它不会递归地拉取子模块。我只看到空目录。我错过了什么吗?

0 投票
2 回答
97 浏览

go - 如何使用 go-git 进行单元测试

如何为使用 git-go 克隆 repo 的代码编写单元测试

下面是我创建的函数的示例。我正在克隆多个存储库并读取该存储库中的特定文件,我不确定如何对该函数进行单元测试。