Дополнительные функции TFS отсутствуют в репозитории git, размещенном в TFS

#git #visual-studio #tfs

#git #visual-studio #tfs

Вопрос:

Когда вы используете Git в качестве поставщика исходного кода для проекта TFS, Visual Studio обычно предоставляет в Team Explorer ряд функций, которых нет в проекте Git, не размещенном в TFS. К ним относятся рабочие элементы, сборки, отчеты и ссылки на функции веб-портала.

Изображение, показывающее некоторые из добавленных функций

Я добавил подключение к проекту TFS. Однако я клонировал из созданного мной сетевого локального зеркала Git, чтобы не иметь этих дополнительных функций. Я создал зеркало, потому что сервер TFS находится через Интернет отсюда, и наше соединение медленное. По сути, зеркало должно использовать прокси-сервер Team Foundation Server, который можно использовать при использовании TFVC.

Если я клонирую из TFS, то функции доступны, но я не хочу, чтобы push / pull выполнялся непосредственно на сервере TFS.

Как я могу сохранить эти дополнительные функции TFS доступными, продолжая использовать зеркало?

Ответ №1:

Доступность этих функций, похоже, привязана к origin удаленному репозиторию Git. origin должно быть установлено на сервере TFS.

При клонировании из другого местоположения это местоположение будет origin по умолчанию. Аналогично, если у вас есть репозиторий, клонированный из TFS, но затем переключенный origin на другой сервер (даже если вы сохраняете сервер TFS как удаленный с другим именем), вы теряете эти функции в Visual Studio.

Вам нужно будет использовать инструменты командной строки git, чтобы исправить это, поскольку в настоящее время нет графического интерфейса Visual Studio для управления удаленными устройствами.

Если вы клонировали из зеркала, восстановление функциональности состоит из следующего:

 git remote rename origin mirror
git remote add origin <TFS Clone URL>
  

При переименовании origin удаленного устройства отслеживание существующих ветвей было соответствующим образом обновлено, поэтому нажатие / нажатие на эти ветви будет происходить против mirror

Вы можете получить <TFS Clone URL> его из существующего клона (запущенного git remote -v в репозитории) или с веб-портала Team Foundation Server. На веб-портале есть кнопка «Клонировать», которая выводит нужный URL-адрес в разделе «Код» / «Исследовать». Обычно он имеет вид http://<server>:<port>/tfs/<collection>/_git/<project> .

Если вы клонировали из TFS, но хотите, чтобы другой удаленный (зеркальный) был по умолчанию для push / pull:

 git remote add mirror <Clone URL for mirror>
git branch --set-upstream-to=mirror/master master
  

Это добавляет зеркало в качестве нового удаленного вызываемого mirror . Затем он создает master ветку mirror/master , вместо origin/master которой будет использоваться Visual Studio mirror , когда вы нажимаете push или pull в Visual Studio.

Вам нужно будет повторить последнюю строку выше для каждой другой существующей локальной ветки, которую вы хотите отправить / отправить на зеркало, а не на сервер TFS.

Примечание: это по-прежнему оставляет ограничение, заключающееся в том, что при публикации с разветвлением через Visual Studio для восходящего потока устанавливается origin значение, поэтому вам придется перейти в командную строку, чтобы сбросить значение восходящего mirror потока. Однако вы МОЖЕТЕ нажать mirror на вкладку «Несинхронизированные коммиты», не публикуя ветку. Это, по крайней мере, делает его работоспособным, но, к сожалению, несовместимо с тем, как обычно публикуются ветки. Надеемся, что более новые версии TFS либо позволяют этим дополнительным функциям работать, если КАКОЙ-либо удаленный сервер является сервером TFS, либо предоставляют возможность указать, на какой удаленный сервер публиковать новую ветку.