作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一个存储库中有大量项目。我想确定所有这些项目的波动性,即上次影响每个项目的提交的时间。我有所有项目路径的列表,我正在尝试为每个路径找到最后一次提交。我的代码如下所示:
public CommitInfo GetLastCommit(string path)
{
// resolve any \..\ and pathing weirdness
path = Path.GetDirectoryName(Path.GetFullPath(path));
var relativePath = path.Substring(BaseRepoPath.Length + 1).Replace("\\", "/");
if (!CommitCache.TryGetValue(relativePath, out CommitInfo result))
{
var options = new RepositoryOptions()
{
WorkingDirectoryPath = BaseRepoPath
};
using (var repo = new Repository(BaseRepoPath, options))
{
var filter = new CommitFilter()
{
IncludeReachableFrom = BranchName
};
var commit = repo.Commits.QueryBy(relativePath, filter).First().Commit;
result = new CommitInfo
{
When = commit.Author.When.DateTime,
Who = commit.Author.Name,
Message = commit.Message,
Files = commit.Tree.Select(x => x.Name).ToList()
};
repo.Dispose();
}
CommitCache.Add(relativePath, result);
}
return result;
}
var commit = repo.Commits.QueryBy(relativePath, filter).First().Commit;
最佳答案
您的要求是通过 lib2gitsharp 包生成以下 git 命令。
$ git log -1 -C "relativePath"
var commit = repo.Commits.QueryBy(relativePath, filter).Take(1).First().Commit;
关于libgit2sharp - 如何使用 LibGit2Sharp 获取文件夹的最后一次提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53598990/
我需要遍历存储库的提交并为每次提交获取受影响的文件。这是我目前巨大的性能瓶颈。 我有一个 libgit 函数的 C++ 包装器,但这段代码应该足够容易理解。 std::vector Commit::g
我正在使用 libgit2(在 C++ 中)创建一个 git 存储库和一个提交。它工作正常,但是, checkout 会破坏所有本地文件。 但是它们似乎仍然存在于 repo 中。这就是我尝试查看存储库
我是一名优秀的程序员,十分优秀!