[英]Visual Studio Extensibility: Get the Git repository's path from Team Explorer's Git Commit Details page
我正在将Git集成添加到我的Visual Studio扩展程序Diff All Files ,它允许快速区分(即比较)Team Explorer窗口中的所有文件与先前版本。 我使用Git Changes页面(在团队资源管理器中),因为当我获得Microsoft.TeamFoundation.Git.Controls.Extensibility.IChangesExt服务时 ,其IncludedChanges属性中的文件包含磁盘上的完整文件路径。 但是,在使用Git Commit Details页面时,我得到了Microsoft.TeamFoundation.Git.Controls.Extensibility.ICommitDetailsExt服务 ,其Changes属性仅包含相对于git分支的文件路径。
我正在使用LibGit2Sharp库与Git存储库进行交互,并且能够访问git存储库LibGit2Sharp需要存储库中文件的路径。 由于ICommitDetailsExt Changes属性仅包含相对于git repo的文件路径,因此我不知道如何获取Git repo的路径(因此我可以检索要比较的文件的先前版本)。
起初我以为我可以使用DTE对象访问解决方案文件的路径,但是意识到可以在没有解决方案本身打开的情况下查看挂起的更改以及之前对团队资源管理器的Git仓库的提交,以便赢得不行。
那么我如何知道Git Commit Details页面显示的提交来自哪些? ICommitDetailsExt服务上的其他任何属性似乎都没有我所拥有的存储库信息(即repo中文件的完整文件路径)。 是否有一种不同的服务可以为Git提供商提供信息?
我也在MSDN论坛上发布了这个问题 ,希望微软可以提供答案。
提前致谢。
虽然可能并不理想 - 一个选项(对于VS 2013 Update 3+和VS 2015),是使用IGitExt可扩展性点来获取当前的活动存储库。 这是在Visual Studio 2013 Update 3中添加的,因此这对早期客户端不起作用。 IGitExt包含一个获取当前ActiveRepositories的属性(当前只包含一个项目)。
我没有找到关于msdn的文档(但是),但您可以查看GitHub for Visual Studio扩展,看看他们如何使用它来获取IGitExt服务和访问ActiveRepositories属性的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.