问题标签 [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 投票
0 回答
230 浏览

git - 使用 nodegit 创建本地推送到远程

因此,我尝试使用 nodegit 库以编程方式执行以下操作:

Checkout hotfix branch 从 hotfix branch 获取 head commmit 创建一个 topic 分支,其 head 指向 hotfix branch head 将上游主题分支设置为远程 Cherry 从 master 中选择一个提交并应用于主题分支 Pause 开发人员修复cherry pick 合并并提交本地更改 然后代码pushs 自动创建一个拉取请求所以看起来我们一直到#4。当我使用 VSO Rest SDK for node 远程执行这些步骤并且没有冲突时,一切都可以在 VSO 上正常运行。它只是在本地使用 nodegit。

看起来从 nodegit 返回的所有对象都是本机对象,因此无法使用调试评估查看任何数据。拿到原型就行了。这是nodegit代码。每次我尝试设置上游分支时,都会收到有关引用无效的错误。这是代码。看到什么了吗?

在上面的代码中,冲突是我用来构造本地 nodegit 对象的 VSO 对象。

0 投票
0 回答
118 浏览

git - 如何使用 nodegit 检测 git 存储库分歧

从nodegit获取提交后origin/master,有什么方法可以检测到本地存储库是否与原点不同?

基本上我正在寻找一种相当于命令行的方法......

我尝试过使用repo.getStatus().then(...),但它解析为一个空列表。

0 投票
0 回答
345 浏览

electron - 如何在 Electron 环境中使用 nodegit

我很难在环境nodegit中运行的Angular 9应用程序中使用electron。这不是安装问题,也不是编译问题,因为我可以让它以某种方式工作......

当我在主进程中执行所有调用时nodegit(通过 IPC 消息),我的调用者需要访问完整的类,例如 Repository。当我们通过 IPC 发送响应时,它会被序列化。所以,在线路的另一端,我得到的只是一个空对象。

这工作正常。它克隆了 repo,但调用者没有收到实际的 Repository 类,因为它正在被序列化。

我能做些什么?

我尝试nodegit直接在渲染器中使用,但它需要一个回调来进行身份验证,看起来回调在渲染器中没有被正确调用......

这是我尝试移至渲染器进程的代码

克隆过程开始(因为我可以看到创建的项目文件夹),我的凭据回调被调用(因为我在控制台中看到'credentialsCallback'),但我收到此错误:

错误:需要远程身份验证但未设置回调

尽管我的回调被调用。

我正在使用const git = electron.remote.require('nodegit');,因为如果我require('nodegit')直接使用,我会在主进程控制台中收到此错误

./node_modules/promisify-node/index.js 中的警告 107:14-27 关键依赖项:依赖项的请求是一个表达式

./node_modules/nodegit/build/Release/nodegit.node 中的警告 1:0 模块解析失败:意外字符 '�' (1:0) 您可能需要适当的加载器来处理此文件类型,目前没有加载器配置为处理这个文件。请参阅https://webpack.js.org/concepts#loaders (此二进制文件省略了源代码)

那么我在这里做错了什么?

我正在使用电子 6.0.7

我正在使用nodegit 0.26.4

0 投票
1 回答
211 浏览

node.js - 使用 NodeGit 签出特定的提交

我有一个 NodeGit 存储库对象,repo和一个sha代表提交 id 的字符串代码commit_id。如何使用 NodeGit 执行此提交的 git checkout,它的作用与命令相同git checkout $commit_id

到目前为止,我已经尝试Reference使用提交 ID 创建一个,然后使用checkoutRef它来检查参考。但是,存储库没有改变,我得到了错误Error: the given reference name '<my commit id>' is not valid

谢谢您的帮助。

0 投票
1 回答
145 浏览

node.js - 使用 NodeGit 在存储库中执行 `git clean`

我有一个 NodeGit 存储库,repo. 此存储库在已跟踪和未跟踪的文件和目录中都有一些本地更改。如何清理这个存储库,效果与git clean -f -d命令相同,以便之后本地更改不再存在?

谢谢您的帮助。

0 投票
1 回答
140 浏览

node.js - 使用 nodegit 克隆一个裸仓库

你好,

我正在克隆一个工作树作为一个裸仓库nodegit

这会创建一个裸仓库,就像

注意:newbare对 中的所有localrepo分支都有引用/git/newbare/refs/remote/origin,但只有localrepo's活动分支被克隆到newbare's本地引用中

这意味着如果localrepo克隆时在master上,则newbare仅跟踪master

现在我可以git跟踪所有分支origin

如果您想在此处获取有关获取的更多信息,请查看refspec 。

问题

我不知道如何在裸目录中设置跟踪分支,所有分支都remote/origin使用nodegit

0 投票
0 回答
1246 浏览

node.js - 重构 git 标签时出现“使用现有 refs 调用的初始 ref 事务”错误

我正在开发一个git遥控器,它在推送时将提交树转换为本地 IPFS 数据结构,并在获取时重建它们。

该过程适用于提交,但是当我尝试重新创建标签时,命令成功,但克隆失败并出现错误:fatal: BUG: initial ref transaction called with existing refs.

要复制问题,请将此程序放在PATH名称为git-remote-failtest. 然后,运行git clone failtest:: test

0 投票
1 回答
439 浏览

node.js - 在 Electron 中运行 nodegit 失败

nodegit 0.26.5通过npmElectron 应用程序的渲染器部分安装并导入包。在编译期间,我收到以下错误:

在我的node_modules/nodegit/build目录中,我只有一个Release目录。有人知道我在这里想念什么吗?

我创建了一个 repo,它是从样板模板中派生出来的。我只添加nodegit@types/nodegit作为依赖项并将其导入details.component.ts

https://github.com/Githubber2021/electron-nodegit-error

重现问题。任何人都可以在他们的机器上重现错误吗?我在这里想念什么?非常感谢您的任何帮助或提示!!

0 投票
0 回答
329 浏览

node.js - 如何创建一个 Git Repo URL 供其他人在 NodeJS 中克隆?

我正在尝试在我的本地设置一个中央存储库,在 NodeJS 上运行,其他人可以访问、创建自己的 git 存储库、克隆、提交、推送、从他们的 git 存储库中提取。这个想法更像是设置一个在 NodeJS 上运行的本地 Github。我目前正在使用nodegit库。

我可以git init --bare通过使用创建一个新的存储库 () ,还可以使用Git.Repository.init(repopath, is_bare)为该存储库 () 设置自定义克隆 urlgit remote set-urlGit.Remote.setUrl(repository, remote, cloneUrl)

但我坚持创建像“http://example.com/repo/example.git”这样的克隆 URL。如何在 NodeJS 中创建一个其他人可以用来 git clone 的 repo URL?它应该指向哪里?我应该为 repo URL 提供什么样的响应?

目前我的代码如下:

任何帮助表示赞赏!

0 投票
1 回答
128 浏览

node.js - 使用 nodegit 创建 git 存储库时出错

它成功创建了文件夹、文件和存储库,但抛出了错误。我不确定错误到底是什么意思,我无法通过代码来弄清楚?

TEST1 TypeError: fse.ensureDir(...).then(...).then(...).then(...).then(...).then(...).then(. ..).then(...).then(...).done 不是 Object.createGitRepository 中的函数 (c:\CodeRepos\work\github\aa\ac\service\GitService.js:50:6 ) 在 Layer.handle [as handle_request] (c:\CodeRepos\work\github\aa\ac) 的 createRepository (c:\CodeRepos\work\github\aa\ac\controllers\repository-ctrl.js:55:33) \node_modules\express\lib\router\layer.js:95:5) 在下一个 (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\route.js:137:13) 在Route.dispatch (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\route.js:112:3) 在 Layer.handle [as handle_request] (c:\CodeRepos\work\github \aa\ac\node_modules\express\lib\router\layer.js:95:5) 在 c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:281:22在 Function.process_params (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:335:12)在下一个(c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router \index.js:275:10) 在 Function.handle (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:174:3) 在路由器 (c:\CodeRepos \work\github\aa\ac\node_modules\express\lib\router\index.js:47:12) 在 Layer.handle [as handle_request] (c:\CodeRepos\work\github\aa\ac\node_modules\express \lib\router\layer.js:95:5) 在 trim_prefix (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:317:13) 在 c:\CodeRepos \work\github\aa\ac\node_modules\express\lib\router\index.js:284:7 在 Function.process_params (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\ index.js:335:12) 在下一个 (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:275:10)10)10)10)10)\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:275:10) 在 Function.handle (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib \router\index.js:174:3) 在路由器 (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:47:12) 在 Layer.handle [as handle_request ] (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix (c:\CodeRepos\work\github\aa\ac\node_modules\express \lib\router\index.js:317:13) 在 c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:284:7 在 Function.process_params (c:\ CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:335:12)在下一个(c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\ index.js:275:10)\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:275:10) 在 Function.handle (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib \router\index.js:174:3) 在路由器 (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:47:12) 在 Layer.handle [as handle_request ] (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix (c:\CodeRepos\work\github\aa\ac\node_modules\express \lib\router\index.js:317:13) 在 c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:284:7 在 Function.process_params (c:\ CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:335:12)在下一个(c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\ index.js:275:10)\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:174:3) 在路由器 (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router \index.js:47:12) 在 Layer.handle [as handle_request] (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix ( c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:317:13) 在 c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router \index.js:284:7 在 Function.process_params (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:335:12) 在下一个 (c:\CodeRepos\工作\github\aa\ac\node_modules\express\lib\router\index.js:275:10)\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:174:3) 在路由器 (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router \index.js:47:12) 在 Layer.handle [as handle_request] (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix ( c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:317:13) 在 c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router \index.js:284:7 在 Function.process_params (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:335:12) 在下一个 (c:\CodeRepos\工作\github\aa\ac\node_modules\express\lib\router\index.js:275:10)\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router \index.js:317:13) 在 c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:284:7 在 Function.process_params (c:\CodeRepos\work\ github\aa\ac\node_modules\express\lib\router\index.js:335:12) 在下一个 (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js: 275:10)\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router \index.js:317:13) 在 c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:284:7 在 Function.process_params (c:\CodeRepos\work\ github\aa\ac\node_modules\express\lib\router\index.js:335:12) 在下一个 (c:\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js: 275:10)\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:275:10)\CodeRepos\work\github\aa\ac\node_modules\express\lib\router\index.js:275:10)

似乎就行了:

返回 nodegit.Repository.init(path.resolve(__dirname, newRepoDir), 0);

我觉得可能是相关的,但它没有解决它