Как visual studio 2013 запоминает сопоставление между удаленным репозиторием git / tfs и локальным путем?

#git #tfs #visual-studio-2013

#git #tfs #visual-studio-2013

Вопрос:

Как Visual Studio запоминает, какой репозиторий GIT / TFS (Git поверх TFS) в данном командном проекте был клонирован на локальный компьютер?

При просмотре репозиториев git в командном проекте Visual Studio показывает значок справа от репозиториев, которые еще не были клонированы.

изображение интеграции git / visual studio: какие репозитории доступны, а какие были клонированы

Этот значок исчезает, как только репозиторий был клонирован на локальном компьютере. С этого момента Visual Studio сохраняет сопоставление (remote repository, local path) где-нибудь.

  • Где сохраняются эти сопоставления?
  • Существует ли API, предоставляющий доступ к этой информации?

Ответ №1:

Подробное описание — пока

Похоже, что файл %APPDATA%MicrosoftVisualStudio12.0Team ExplorerGitTeamProjects.config содержит эту информацию.

 <?xml version="1.0" encoding="utf-8"?>
<!--This file caches information about Git team projects.-->
<collection_list>
  <collection guid="9737cdde-596c-43f5-bea7-eadbe664f536" collectionUri="http://tfs:8080/tfs/tahaa" />
  <collection guid="d3ee7565-1499-4a84-9eb3-7e97bf3a932e" collectionUri="http://tfs:8080/tfs/test2013">
    <project name="_TestBuilds" projectUri="vstfs:///Classification/TeamProject/2706587b-a4b3-4404-a5b1-0e8f210eddc5">
      <repository name="SetupConfigurator" guid="54ff434a-bced-4457-8b7c-7f2ab2577514" LastActiveClone="K:TFSSetupConfigurator" />
      <repository name="Trunk" guid="a08927d7-4e0a-4035-ae5d-964bf03926a4" LastActiveClone="K:_TestBuilds" />
      <repository name="IntegrationTests" guid="37286658-9138-4bab-bc93-9eeb67addd36" LastActiveRepo="Yes" LastActiveClone="K:GitRepositoriesIntegrationTests" />
    </project>
  </collection>
</collection_list>
  

Я изменил его один раз, и Visual Studio, похоже, тогда потеряла сопоставления.

Но после восстановления исходного содержимого Visual Studio, похоже, больше его не использует.

Я также нашел список репозиториев, хранящихся в реестре (в HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio12.0TeamFoundationGitSourceControlRepositories ).

 Repositories
   hash
     Name(REG-SZ)
     Path(REG-SZ)
   hash
     Name(REG-SZ)
     Path(REG-SZ)
   ...
  

Visual Studio 2015

Имя файла немного изменилось: %APPDATA%MicrosoftVisualStudio14.0Team ExplorerTeamExplorer.config

Путь к реестру изменился до HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio14.0TeamFoundationGitSourceControlRepositories

Как обновить сопоставления Visual Studio

Давайте предположим, что все ваши репозитории git находятся в одной папке на локальном компьютере, и что путь к этой папке равен K:GitRepositories

  1. откройте Visual Studio 2015
  2. откройте Team Explorer
  3. нажмите значок подключения
  4. в разделе «Локальные репозитории Git» нажмите кнопку Добавить
  5. введите ‘K:GitRepositories ‘ в текстовом поле затем ‘Добавить’

Готово! Ваши сопоставления были обновлены.

Комментарии:

1. 1 У меня есть prod TFS-сервер и тестовый TFS-сервер, и мне нужно было сопоставить одно и то же репозиторий git с обоими. Я нашел файл GitTeamProjects.config, но это ничего не дало. После нахождения этого сообщения я увидел элемент реестра и смог это исправить. Потрясающая находка и спасибо за публикацию!

2. Мне нужно было изменить местоположение, в котором хранился мой локальный репозиторий, и я не смог найти нигде в VS2013, чтобы изменить его. Изменение настроек в реестре в указанном вами расположении сработало отлично, спасибо!