问题标签 [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.
git - 如何在 git 架构上查找指定文件的最新更改
我想知道一种算法,它可以在我学习 git 核心架构时检测指定文件中的最近更改。
您知道git log -n1 -- <file>
在指定文件中显示最近更改的提交。知道最新的变化非常简单。我随便想自己实现它。
我使用 libgit2 来遍历每个提交。我花了几天时间,但我无法理解。git commit 模型使用类似 DAG 的结构,我很难找到它。
检测指定文件中最近更改的最佳方法是什么?
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 获取特定数据的大目标的一部分。
谢谢。
c# - 在 LibGit2Sharp 中找出提交所属的分支?
我正在循环提交LibGit2Sharp
:
我可以检索和之类的属性Author
,Message
但我看不到它属于哪个分支?理想情况下,我希望有一个指向分支对象的指针,但在这种情况下,即使是名称也可以。
这是调试器显示的内容:
这就是我要找的:
TortoiseGit 显示最相关分支名称的行为:
示例存储库:https ://docs.google.com/open?id=0B-3-X85VysdNcmZIaGVTSDZSenVGbTJxYlI2SUlsZw
git - 是否可以使用 libgit2 将文件的一部分添加到 Git 索引?
我正在使用 libgit2,实际上是 libgit2sharp,有没有办法添加类似于add -p
CLI 中的文件的部分内容?
我没有从文档中找到任何东西:http: //libgit2.github.com/libgit2/#HEAD/group/index
windows - 有没有人用 libgit2、libgit2sharp、Ngit 替换 msysgit 的 Windows?
嗨,我喜欢 Git,但与人和朋友共享 windows 项目似乎并不好玩,因为与 tortoisehg 或 tortoisesvn 相比,gitextensions tortoisegit 开箱即用很难(不是说它是 DVCS)。仅在 bash shell 中使用 msysgit 也不像 linux/Mac 一样好。
那么是否有任何新的竞争者(alpha 项目等(甚至与其他库))?
我很想看到这些新的 Git 库起飞!
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 错误。
```
git - 如何在 LibGit2Sharp 中获取有关 Stashes 的详细信息?
有什么方法可以获取存储列表及其名称(可能还有其他信息),然后查看哪些文件发生了变化和差异?
我正在使用 LibGit2Sharp
python - 使用 pygit2 (libgit2) 将 blob 或树添加到创建的存储库?
我正在尝试使用 pygit2 库。
似乎我被困在了第一步。它的文档没有解释如何创建一个 blob 并将其添加到树中。它主要是关于如何使用现有的 git 存储库,但我想创建一个并将 blob、提交等添加到我的存储库。是否可以直接从文件创建 blob,还是应该读取文件内容并设置 blob.data?
如何创建 Blob 或树并将其添加到存储库?
c# - 使用 LibGit2Sharp 循环遍历 Git 存储库中的每个提交?
我尝试循环遍历new LibGit2Sharp.Repository(path).Commits
,但它似乎只通过 master 中的提交(或者我猜 HEAD 指向哪里?)。
我将如何遍历存储库中的每个提交,无论它在哪个分支中,并按照提交发生时间(日期)的顺序遍历它们?
我这样做的目的是git log
为了按日期顺序列出不考虑分支的提交。
如果我还可以循环遍历未引用的提交(即,如果您git reset
远离某些提交并且这些提交不再被引用并且即将获得 gc'd),则可以加分。
想法?
git - 如何找到具有特定父级的所有提交?
如何在存储库中找到具有特定父级的所有提交?
例如,如果我有一个 commit A
,我想找到与A
. 什么是最有效的,即在 LibGit2Sharp 中执行此操作的高效而正确的方法?