gpt4 book ai didi

c# - Libgit2Sharp:在两个标签之间的所有提交中获取文件

转载 作者:太空宇宙 更新时间:2023-11-03 23:18:17 25 4
gpt4 key购买 nike

我可以在 GitBash 中这样做:$ git diff --name-only v01...HEAD -- *.sql

给出:

组件/1/数据库/存储过程/spDC1.sql
组件/1/数据库/存储过程/spDC2.sql

我不知道如何在 LibGit2Sharp 中执行此操作。有任何想法吗?谢谢

最佳答案

这是我的一个项目的示例,它在两次提交(当前 HEAD 与 master 分支)之间获取一个 ICommitLog 集合:

    // git log HEAD..master --reverse
public ICommitLog StalkerList {
get {
var filter = new CommitFilter {
SortBy = CommitSortStrategies.Reverse | CommitSortStrategies.Time,
Since = master,
Until = head.Tip,
};
return repo.Commits.QueryBy (filter);
}
}

一旦您拥有所需范围内的所有提交的 ICommitLog 集合,您就可以循环遍历每个提交以获取在该提交内受到影响的文件列表(当然你需要通过您的“*.sql”要求添加文件名过滤):

    public String[] FilesToMerge (Commit commit)
{
var fileList = new List<String> ();
foreach (var parent in commit.Parents) {
foreach (TreeEntryChanges change in repo.Diff.Compare<TreeChanges>(parent.Tree, commit.Tree)) {
fileList.Add (change.Path);
}
}
return fileList.ToArray ();
}

关于c# - Libgit2Sharp:在两个标签之间的所有提交中获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36456718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com