相关疑难解决方法(0)

使用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获取特定数据的大目标的一部分.

谢谢.

git libgit2 libgit2sharp

8
推荐指数
1
解决办法
4357
查看次数

LibGit2Sharp 相当于 git diff --stat

我正在寻找一种方法来捕获我的工作目录中每个文件中有多少行发生了变化 - 就像git diff --stat在 git 中一样 - 有没有办法用 LibGit2Sharp 做到这一点?

我知道我可以从补丁中获得总 LinesAdded/Deleted,但我想知道一个文件一个文件。

libgit2 libgit2sharp

3
推荐指数
1
解决办法
1001
查看次数

如何使用libgit2sharp更改/删除/添加文件?

我有两个约会 - 从和到.我必须在日期差异之间找到存储库中更改的文件并列出它.这是一个相关的问题,它可以得到树之间的差异.从LibGit2Sharp中的提交中获取已修改/添加/删除的文件.

c# git libgit2 libgit2sharp

2
推荐指数
1
解决办法
1741
查看次数

标签 统计

libgit2 ×3

libgit2sharp ×3

git ×2

c# ×1