我计划用我的插件(一个 Visual Studio 2012 扩展)替换git.exefrom windows 路径的用法,以在当前文件的边缘显示 Git Diff。- https://github.com/laurentkempe/GitDiffMarginlibgit2sharpGitDiffMargin
我想知道是否有等效的方法libgit2sharp可以使用 来启动外部 difftool git difftool -y filename?
我认为启动外部进程不应该是 LibGit2Sharp 的责任。LibGit2Sharp 的目标是提供一种轻松操作 git 存储库的方法。
这意味着您可以使用它来:
获取工作目录中的文件与先前版本(索引中)的文件之间的差异。为此,您可以使用Repository.Diff.Compare(IEnumerable<string> paths, bool includeUntracked, ExplicitPathsOptions explicitPathsOptions)重载,它返回一个TreeChanges对象。从那里,您可以TreeEntryChanges通过treeChanges的索引器获取一个对象,该对象对应于给定文件的更改(使用.Patch属性获取补丁的实际内容)。
使用Repository.Config命名空间获取配置的 diff 工具(例如:repo.Config.Get<string>("diff.tool").Value,尽管您还应该检查该方法返回的值是否Get()为 null,以防用户未配置 diff 工具)。这样,您就可以自己启动 diff 工具。
其他资源(v0.11.0):
注意:似乎在某些时候,您需要知道某行是否已更改。我认为现在没有一种简单的方法可以做到这一点(除了手动解析补丁内容之外)。然而,在 LibGit2Sharp问题跟踪器上提出问题可能会引发一些围绕该问题的讨论(请随意权衡您想要哪种 API 来执行此操作!)。
编辑:在启动外部比较工具之前,您需要将索引中的文件内容复制到临时文件夹中。您可以通过执行以下操作来查找索引中文件的 blob:
但是...当您获取 blob 内容时,当前没有应用任何过滤器,因此由于 crlf 差异,比较可能会产生误报。目前,libgit2 上存在一个问题,旨在提出一个允许应用过滤器的 API。
| 归档时间: |
|
| 查看次数: |
945 次 |
| 最近记录: |