历史记录在子目录
History log in sub directory
我正在尝试弄清楚如何获取子目录的提交日志。根据 this thread,它应该在 libgit2sharp.
中工作正常
为了测试,我使用了一个小型存储库,https://github.com/ornatwork/nugetpackages.git 整个存储库共有 8 个条目。
我在根目录 c:/nugetpackages 中本地克隆了它,我可以从那个文件夹中克隆它。
git 日志 -- devbox
在命令行上,我将按预期获得 /devbox 子目录的两个提交条目。
使用 libgit2sharp
执行相同操作的 Xunit 测试代码示例
[Fact]
public void testSub()
{
// Extract the git commit history
using (var repo = new Repository(@"C:\nugetpackages"))
{
Trace.WriteLine("repo count=" + repo.Commits.Count());
// absolute path
IEnumerable<LogEntry> history = repo.Commits.QueryBy(@"C:\nugetpackages\devbox");
Trace.WriteLine("subdir count=" + history.Count());
}
}
我期望计数为 8 和 2,但这是我得到的结果。
回购计数=8
子目录计数=0
我错过了什么?
使用存储库基本目录中的相对路径:
using (var repo = new Repository(@"/Users/sushi/code/sushi/Xamarin.Forms.Renderer.Tests"))
{
D.WriteLine("repo count=" + repo.Commits.Count());
IEnumerable<LogEntry> history = repo.Commits.QueryBy(@"AlarmSO");
D.WriteLine("subdir count=" + history.Count());
}
更新:
Follow up, is there a way to combine subdir with a filter, for example. CommitFilter filter = new CommitFilter(); filter.FirstParentOnly = true;
不确定这是否是您要找的...如果不是,请提出新问题,谢谢。
using (var repo = new Repository(@"/Users/sushi/code/sushi/RealmJson"))
{
var subDir = "media";
var commits = repo.Commits.QueryBy(new CommitFilter { FirstParentOnly = true }).Where(
(Commit c) => c.Tree.Any(
(TreeEntry te) => te.Path.StartsWith(subDir, StringComparison.Ordinal)));
foreach (var commit in commits)
{
D.WriteLine($"{commit.Sha} : {commit.MessageShort}");
}
}
我正在尝试弄清楚如何获取子目录的提交日志。根据 this thread,它应该在 libgit2sharp.
中工作正常为了测试,我使用了一个小型存储库,https://github.com/ornatwork/nugetpackages.git 整个存储库共有 8 个条目。
我在根目录 c:/nugetpackages 中本地克隆了它,我可以从那个文件夹中克隆它。
git 日志 -- devbox
在命令行上,我将按预期获得 /devbox 子目录的两个提交条目。
使用 libgit2sharp
执行相同操作的 Xunit 测试代码示例 [Fact]
public void testSub()
{
// Extract the git commit history
using (var repo = new Repository(@"C:\nugetpackages"))
{
Trace.WriteLine("repo count=" + repo.Commits.Count());
// absolute path
IEnumerable<LogEntry> history = repo.Commits.QueryBy(@"C:\nugetpackages\devbox");
Trace.WriteLine("subdir count=" + history.Count());
}
}
我期望计数为 8 和 2,但这是我得到的结果。
回购计数=8
子目录计数=0
我错过了什么?
使用存储库基本目录中的相对路径:
using (var repo = new Repository(@"/Users/sushi/code/sushi/Xamarin.Forms.Renderer.Tests"))
{
D.WriteLine("repo count=" + repo.Commits.Count());
IEnumerable<LogEntry> history = repo.Commits.QueryBy(@"AlarmSO");
D.WriteLine("subdir count=" + history.Count());
}
更新:
Follow up, is there a way to combine subdir with a filter, for example. CommitFilter filter = new CommitFilter(); filter.FirstParentOnly = true;
不确定这是否是您要找的...如果不是,请提出新问题,谢谢。
using (var repo = new Repository(@"/Users/sushi/code/sushi/RealmJson"))
{
var subDir = "media";
var commits = repo.Commits.QueryBy(new CommitFilter { FirstParentOnly = true }).Where(
(Commit c) => c.Tree.Any(
(TreeEntry te) => te.Path.StartsWith(subDir, StringComparison.Ordinal)));
foreach (var commit in commits)
{
D.WriteLine($"{commit.Sha} : {commit.MessageShort}");
}
}