使用LibGit2Sharp,只需通过枚举Commits
即可模拟git log
命令。你也可以过滤提交列表,或者指定一些排序选项(比如让列表按照拓扑顺序排序)。更多信息可以在与git log
相关的LibGit2Sharp wiki page上找到。
使用像QuickGraph的图形库(当然还有其他,如可以在这个其他SO question找到),你可以建立这样的图形:
var graph = new AdjacencyGraph<Commit, Edge<Commit>>();
using (var repo = new Repository(path_to_your_repo))
{
foreach (var c in repo.Commits.Take(20))
{
graph.AddVerticesAndEdgeRange(c.Parents.Select(p => new Edge<Commit>(c, p)));
}
}
然后,您可以输出此图到几可视化格式(graphML,Glee,graphwiz)。要在graphwiz(.DOT)格式输出它:
var graphviz = new GraphvizAlgorithm<Commit,Edge<Commit>>(graph);
graphviz.FormatVertex +=
(o, e) =>
{
e.VertexFormatter.Label = string.Format("{0} {1}", e.Vertex.Id.ToString(7),
e.Vertex.MessageShort.Replace("\"", "\\\""));
};
graphviz.Generate(new FileDotEngine(), @"d:\graph");
这更是一个数据可视化的问题,看的图形可视化的.NET库(git的历史是一个直接的无环图) – CharlesB 2013-03-05 10:24:30