问题标签 [libgit2]

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 回答
131 浏览

git - 如何在 git 架构上查找指定文件的最新更改

我想知道一种算法,它可以在我学习 git 核心架构时检测指定文件中的最近更改。

您知道git log -n1 -- <file>在指定文件中显示最近更改的提交。知道最新的变化非常简单。我随便想自己实现它。

我使用 libgit2 来遍历每个提交。我花了几天时间,但我无法理解。git commit 模型使用类似 DAG 的结构,我很难找到它。

检测指定文件中最近更改的最佳方法是什么?

0 投票
1 回答
5377 浏览

git - 使用 libgit2sharp 获取提交与其父级之间的更改

我正在使用 libgit2sharp(libgit2 的 C# 包装器)并且一直遇到问题,因为它没有很多我希望的功能(希望我能尽快为它做出贡献;这似乎是一个非常有用的项目)

我现在要做的事情是获取从特定提交及其父项更改的文件列表。我不会试图弄清楚合并及其两个父级之间发生了什么变化。我对定期提交更感兴趣。

这些人(https://github.com/libgit2/libgit2sharp/issues/89)正在做类似的事情。我认为他们的程序是一个合理的想法,但我对 GIT 内部的理解有点弱(最终用户的 GIT 指南有很多指南,但内部结构没有那么多)

我很好奇 GIT 本身是如何执行“git diff”命令的。假设 GIT 实际上并不存储增量,而是文件的完整版本(如果它未更改,它只会指向现有的 SHA。可以从各种来源找到此信息,例如这里http://xentac.net/2012/01 /19/the-real-difference-between-git-and-mercurial.html)。这似乎使两个提交之间的更改变得更加困难(在我的情况下是一个特定的提交及其单亲),因为数据不是作为提交的一部分存储的(如果您检查 libgit2sharp 的 Commit.cs 中的 Commit 类,这一点很清楚文件)。

我可以从提交中访问的是树。执行以下操作来查找此信息是否有意义:

1)从所需的提交开始,沿着树向下走,并将所有 SHA 值存储在一个集合中。

2) 从父级开始进行所需的提交,然后沿着其树向下走,将其所有 blob SHA 值存储在另一个集合中。

3) 更改文件的 SHA 将是不在两组交集的文件。

我用这种方法看到的问题是它看起来没有办法从 blob 的 SHA 值中获取文件名(我在 libgit2sharp 的 Blob.cs 文件中没有看到任何可以做到这一点的东西)。

我知道这个问题有很多方面,但它们是从 git 获取特定数据的大目标的一部分。

谢谢。

0 投票
3 回答
3836 浏览

c# - 在 LibGit2Sharp 中找出提交所属的分支?

我正在循环提交LibGit2Sharp

我可以检索和之类的属性AuthorMessage但我看不到它属于哪个分支?理想情况下,我希望有一个指向分支对象的指针,但在这种情况下,即使是名称也可以。

这是调试器显示的内容:

在此处输入图像描述

这就是我要找的:

在此处输入图像描述

TortoiseGit 显示最相关分支名称的行为:

在此处输入图像描述

示例存储库:https ://docs.google.com/open?id=0B-3-X85VysdNcmZIaGVTSDZSenVGbTJxYlI2SUlsZw

0 投票
1 回答
225 浏览

git - 是否可以使用 libgit2 将文件的一部分添加到 Git 索引?

我正在使用 libgit2,实际上是 libgit2sharp,有没有办法添加类似于add -pCLI 中的文件的部分内容?

我没有从文档中找到任何东西:http: //libgit2.github.com/libgit2/#HEAD/group/index

0 投票
2 回答
2290 浏览

windows - 有没有人用 libgit2、libgit2sharp、Ngit 替换 msysgit 的 Windows?

嗨,我喜欢 Git,但与人和朋友共享 windows 项目似乎并不好玩,因为与 tortoisehg 或 tortoisesvn 相比,gitextensions tortoisegit 开箱即用很难(不是说它是 DVCS)。仅在 bash shell 中使用 msysgit 也不像 linux/Mac 一样好。

那么是否有任何新的竞争者(alpha 项目等(甚至与其他库))?

我很想看到这些新的 Git 库起飞!

0 投票
1 回答
1099 浏览

ios5 - 在 iOS 应用程序中包含 ObjectiveGit 库

打开 ObjectieGitFramework.xcodeproj 文件时,我现在可以成功构建 iOS 方案。虽然需要进行大量的实验。让我们从头开始——我是怎么做到的。

我做了什么:

首先,我克隆了一个 ObjectiveGit 的分支。

源:https ://github.com/libgit2/objective-git/pull/54

现在打开项目并构建会导致一个错误和一个警告。我让 Xcode 自动更新项目设置来解决警告。 错误

现在我进入目录并使用cmakelibgit2构建:

源:https ://github.com/libgit2/libgit2

除其他外,这会导致libgit2.0.15.0.dylib正在创建的文件中。 查找器中的文件图像

我将它拖入 Xcode 并将其添加到 ObjectiveGit 和 iOS 目标。现在我转到 ObjectiveGit-iOS 的构建阶段选项卡,让它看起来像这样:

在此处输入图像描述

问题

此时我可以构建项目,并且可以使用ObjectiveGit. 但是,当我将项目拖到另一个项目中,添加ObjectiveGit-iOS为目标依赖项并添加libObjectiveGit-iOS.a时,link binary with libraries我无法导入ObjectiveGit/ObjectiveGit.h,而且我遇到了一些其他奇怪的错误(见下图)。我对 xcode 中的库知之甚少,所以我根本不知道为什么这不起作用。

在此处输入图像描述 在此处输入图像描述

现在,这是我曾经遇到的一个错误,但现在没有了。我不知道我做了什么导致它。 在此处输入图像描述

更新

当将此添加到header search path奇怪的事情发生时。它导致没有找到文件,而是 70 个其他 Mach-o 错误。

```

0 投票
1 回答
439 浏览

git - 如何在 LibGit2Sharp 中获取有关 Stashes 的详细信息?

有什么方法可以获取存储列表及其名称(可能还有其他信息),然后查看哪些文件发生了变化和差异?

我正在使用 LibGit2Sharp

0 投票
1 回答
1597 浏览

python - 使用 pygit2 (libgit2) 将 blob 或树添加到创建的存储库?

我正在尝试使用 pygit2 库。

似乎我被困在了第一步。它的文档没有解释如何创建一个 blob 并将其添加到树中。它主要是关于如何使用现有的 git 存储库,但我想创建一个并将 blob、提交等添加到我的存储库。是否可以直接从文件创建 blob,还是应该读取文件内容并设置 blob.data?

如何创建 Blob 或树并将其添加到存储库?

0 投票
1 回答
1873 浏览

c# - 使用 LibGit2Sharp 循环遍历 Git 存储库中的每个提交?

我尝试循环遍历new LibGit2Sharp.Repository(path).Commits,但它似乎只通过 master 中的提交(或者我猜 HEAD 指向哪里?)。

我将如何遍历存储库中的每个提交,无论它在哪个分支中,并按照提交发生时间(日期)的顺序遍历它们?

我这样做的目的是git log为了按日期顺序列出不考虑分支的提交。

如果我还可以循环遍历未引用的提交(即,如果您git reset远离某些提交并且这些提交不再被引用并且即将获得 gc'd),则可以加分。

想法?

0 投票
1 回答
1392 浏览

git - 如何找到具有特定父级的所有提交?

如何在存储库中找到具有特定父级的所有提交?

例如,如果我有一个 commit A,我想找到与A. 什么是最有效的,即在 LibGit2Sharp 中执行此操作的高效而正确的方法?