问题标签 [nodegit]

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 投票
1 回答
621 浏览

javascript - 如何使用nodegit从标签名中获取提交sha?

我有这个:

如果 tagName 只是提交的别名,则此代码有效,但如果标签是使用 nodegit 创建的正确标签,则会给我一个错误:

使用git show [tagname]时显示如下:

那么我如何从这个标签引用中获得提交本身(c465e)?

0 投票
1 回答
2174 浏览

javascript - 如何使用 nodegit 获取当前分支名称?

我需要知道当前已签出哪个分支。

我看到的一种解决方案是列出分支并检查哪个'==='当前'HEAD'。还有其他方法吗?

0 投票
1 回答
1035 浏览

node.js - NodeGit如何获取另一个分支的最后提交ID?

我有两个分支从我的系统 Master 和 Dev 中签出。

我的工作目录是 Master 中的 Master 我想在知道差异后将文件推送/合并到 dev。

例如在 Master 中我正在处理 abc.txt 文件,我想检查 dev 中存在的文件与 master 之间的区别。我该怎么做?

收到此错误

推送时出错 == 错误:找不到速记“dev”的引用(节点:93479) UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:1):错误:找不到速记“dev”的引用

代码

0 投票
1 回答
185 浏览

node.js - 使用 nodegit 修改提交元数据

我正在尝试使用nodegit更改提交中的电子邮件。

这是我的代码:

工作没有错误,但没有应用任何更改。我究竟做错了什么?

0 投票
1 回答
1014 浏览

node.js - 无法在电子项目中导入本机 nodejs 模块

我正在开发一个使用 webpack 构建的开源电子项目。我的项目的一项要求是使用必须构建为本机模块的nodegit库。

在使用本机模块和电子时,我遵循了看似传统的建议。也就是说,我运行了 electron-rebuild配置了要使用的源包,最后配置了 node-loader来捕获任何.node文件的导入。

不幸的是,当我去包含模块时,我最终得到了这个错误:

在这一点上我唯一能看到的可疑之处是,当我重建模块以使用电子时,我只得到一个Release目录,而导入似乎正在寻找Debug

在此处输入图像描述

然而,这可能是一个红鲱鱼,因为 nodegit 被写入尝试Debug作为Release失败后的后备。

这里的一般问题是“如何让这个本机模块在我的项目中工作?”。

在 repo 也有一个相应的问题,尽管如果我的问题与库本身无关,或者有一些电子原生模块的老兵,我认为 SO 将是一个好地方也检查一下。

0 投票
0 回答
161 浏览

javascript - 使用 NodeGit 克隆存储库时忽略 .gitconfig

我正在尝试使用NodeGit从私有存储库中为我的应用程序下载一些教程。我正在使用令牌通过 https 进行身份验证和下载。问题是,如果用户已设置

.gitconfig,它将失败,回调返回不支持的凭据类型错误。我尝试使用Config API,但不确定我是否正确执行此操作,因为文档中没有对此的描述。

这是我的代码:

如何让 NodeGit 忽略用户.gitconfig

0 投票
0 回答
495 浏览

git - 如何使用 NodeGit 拉出所有分支?

我正在尝试更新我的本地存储库。

根据文档,执行 fetchAll 会从远程获取所有分支,这就是我目前正在做的事情。没有什么能像pullAll 那样自动将这些遥控器与我的本地遥控器合并。

我现在的想法是在执行 fetchAll 后获取所有分支

然后遍历它们,过滤掉匹配的并做一些字符串的东西来适应它们到repository.mergeBranches("master", "origin/master");

在这样做的同时,我只是认为这不是认真的方法,而且必须以某种方式找到捷径。

如何简单地将本地存储库与远程存储库同步,包括所有分支,而无需再次克隆存储库?

0 投票
1 回答
103 浏览

node.js - 在承诺循环中使用承诺的正确方法

你好,

我将 Promise 用于初始化节点项目。

我想在我的 MongoDb 中插入我的 git 存储库上所有分支上的文件名。

我使用 nodegit 来操作 repo,对于每个 nodegit 方法,返回都是一个 Promise。但我需要循环所有分支引用以获取所有文件和分支名称。

之后,我可以准备我的数组以在下一个承诺中插入数据库。

代码如下:

该代码通过两种方式完成:

  • 第一的 :

我确信在这个 repo 中没有其他进程使用 git!

  • 第二 :

我的所有文件都为“分支”获得相同的值,但它们位于不同的分支上。

谢谢你们帮助我!

赛亚。

0 投票
1 回答
1113 浏览

git - Nodegit - 我如何暂存和提交文件?(简单的例子!)

使用 Node-git 我只想:

  1. 打开一个仓库(文件已被写入/更新的地方)
  2. 暂存文件
  3. 做承诺

使用 git cli 我会写这样的东西

我正在尝试按照此处描述如何使用 nodegit 执行此操作的示例,但很难遵循这些代码行:

有必要这么长吗?repo.refreshIndex()、index.write()、index.writeTree()等的作用是什么?API 文档对初学者不太友好。

感谢开导!

0 投票
1 回答
128 浏览

libgit2 - nodegit:getHeadCommit() 保存目录(libgit2)

nodegit在我使用和调用克隆存储库后getHeadCommit(),节点进程会保存该目录,从而防止它被代码(fs-extra remove)或操作系统删除。

错误信息:

我的代码有错误吗?或者有没有一种方法可以在nodegit使用后释放存储库目录repository.getHeadCommit()