2015-08-31 5 views
3

Я добавляю интеграцию Git к моему расширению Visual Studio Diff All Files, что позволяет быстро различать (то есть сравнивать) все файлы в окне Team Explorer с предыдущим версия. Я работаю со страницей Git Changes (в Team Explorer), так как когда я получаю the Microsoft.TeamFoundation.Git.Controls.Extensibility.IChangesExt service, файлы в свойстве IncludedChanges содержат полный путь к файлу на диске. Однако при работе со страницей данных Git Commit Details я получаю the Microsoft.TeamFoundation.Git.Controls.Extensibility.ICommitDetailsExt service, свойство Changes которых содержит только пути к файлу относительно ветви git.Расширение Visual Studio: получить путь репозитория от Git Commit Подробности страницы

Я использую the LibGit2Sharp library, чтобы взаимодействовать с репозиторием Git и иметь возможность доступа к репозиторию git. Для LibGit2Sharp требуется путь к файлу в репозитории. Поскольку свойство ICommitDetailsExt Changes содержит только пути к файлу относительно git repo, я не знаю, как получить путь к репозиторию Git (так что я могу получить предыдущие версии файла для сравнения).

Сначала я подумал, что могу просто получить доступ к пути к файлу решения с использованием объекта DTE, но понял, что можно просмотреть ожидающие изменения и предыдущие коммиты в Git repo из Team Explorer без самого открытия решения , так что это не сработает.

Итак, как я могу узнать, что Git-репозиторий на странице Git Commit Details показывает, что происходит? Ни одно из других свойств в службе ICommitDetailsExt, похоже, не содержит информацию о репозитории, которая мне нужна (т. Е. Полный путь к файлу в репо). Есть ли другая услуга, которую я мог бы получить, которая даст информацию о поставщике Git?

Я также опубликовал this question on the MSDN forums в надежде, что Microsoft может предоставить ответ.

Заранее спасибо.

ответ

5

Хотя возможно не идеальный - один вариант (для VS 2013 Update 3+ и VS 2015) заключается в использовании точки расширения IGitExt для получения текущего активного репозитория. Это было добавлено в Visual Studio 2013 Update 3, поэтому это не сработает для более ранних клиентов. IGitExt содержит свойство для получения текущих ActiveRepositories (которое в настоящее время будет содержать только один элемент).

Я не нашел документацию по msdn для этого (пока), но вы можете посмотреть расширение GitHub для Visual Studio, чтобы увидеть, как они используют его для примера getting the IGitExt service и accessing the ActiveRepositories.

+0

Спасибо, я нашел требуемую сборку в «C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TeamFoundation \ Team Explorer \ Microsoft.TeamFoundation.Git.Provider.dll" и полное имя типа - Microsoft.VisualStudio.TeamFoundation.Git.Extensibility.IGitExt. – deadlydog

 Смежные вопросы

  • Нет связанных вопросов^_^