Как игнорировать файлы/каталоги в TFS, чтобы избежать их перехода в центральный репозиторий источников?

Можно ли настроить файлы/папки для игнорирования на основе каждого проекта в источнике управления TFS?

Например, у меня есть веб-сайт с папкой с ресурсами, в которую я не хочу входить в исходный элемент управления. Эти активы поддерживаются отдельной системой. Кроме того, я не хочу помещать несколько гигабайт активов в исходный элемент управления, но мне нужно несколько образцов на моей машине dev, но я не хочу их проверять.

Если я работаю над этим сайтом, привязанным к исходному элементу управления, и я обновляю дерево, эти файлы будут автоматически добавляться снова

Я хочу, чтобы это не происходило.

Ответ 1

Для VS2015 и VS2017

Работает с TFS (локально) или VSO (Visual Studio Online - предложение, размещенное на Azure)

В документации NuGet содержатся инструкции о том, как этого добиться, и я только что успешно следовал им в Visual Studio 2015 и Visual Studio 2017 против VSTS (TFS, размещенной в Azure). Все полностью обновлено по состоянию на ноябрь 2016 г. Август 2018 г.

Я рекомендую вам следовать инструкциям NuGet, но просто чтобы напомнить, что я сделал:

  1. Убедитесь, что папка с вашими packages не привязана к TFS. Если это так, вытащи это оттуда.
  2. Все остальное, что мы создаем ниже, попадает в ту же папку, в которой находится ваш файл .sln если не указано иное (инструкции NuGet не совсем ясны по этому поводу).
  3. Создайте папку .nuget. Вы можете использовать Windows Explorer, чтобы назвать его .nuget. чтобы он успешно сохранился как .nuget (он автоматически удаляет последний период), но попытка напрямую назвать его .nuget может не сработать (вы можете получить сообщение об ошибке или изменить имя в зависимости от вашей версии Windows). Или назовите каталог nuget и откройте родительский каталог в командной строке. тип. ren nuget.nuget
  4. Внутри этой папки создайте файл NuGet.config добавьте следующее содержимое и сохраните его:

NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>
  1. Вернитесь в папку .sln и создайте новый текстовый файл и назовите его .tfignore (если вы используете Windows Explorer, используйте тот же прием, что и выше, и назовите его .tfignore.)
  2. Поместите в этот файл следующее содержимое:

.tfignore:

# Ignore the NuGet packages folder in the root of the repository.
# If needed, prefix 'packages' with additional folder names if it 
# not in the same folder as .tfignore.
packages

# include package target files which may be required for msbuild,
# again prefixing the folder name as needed.
!packages/*.targets
  1. Сохраните все это, зафиксируйте его в TFS, затем закройте и снова откройте Visual Studio, и Team Explorer больше не должен идентифицировать папку пакетов как ожидающую регистрацию.
  2. Скопируйте /.tfignore через Проводник Windows файл .nuget папку .nuget во все мои различные решения и зафиксируйте их, и у меня больше нет папки с packages пытающейся проникнуть в мой репозиторий с контролем исходного кода!

Дальнейшая настройка

Пока не мое, я нашел этот .tfignore шаблон, sirkirby быть под рукой. Пример в моем ответе охватывает папку с packages Nuget, но этот шаблон включает в себя некоторые другие вещи, а также предоставляет дополнительные примеры, которые могут быть полезны, если вы хотите настроить это дальше.

Ответ 2

Если вы используете локальные рабочие области (TFS 2012+), теперь вы можете использовать файл .tfignore, чтобы исключить локальные папки и файлы.

Если вы добавите этот файл в исходный элемент управления, вы можете обеспечить, чтобы другие члены вашей команды имели одинаковые настройки исключения.

Полная информация о MSDN - http://msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore

Для ленивых:

Вы можете настроить, какие типы файлов игнорируются, разместив текст файл с именем .tfignore в папке, где вы хотите применить правила. эффекты файла .tfignore являются рекурсивными. Однако вы можете создать .tfignore файлы в подпапках, чтобы переопределить эффекты .tfignoreфайл в родительской папке.

К файлу .tfignore относятся следующие правила:

  • # начинается строка комментария
  • * и? Подстановочные знаки поддерживаются.
  • Спецификация файлов является рекурсивной, если только префикс символа \.
  • ! отменяет спецификацию файлов (файлы, соответствующие шаблону, не игнорируются)

Файл примера:

# Ignore .cpp files in the ProjA sub-folder and all its subfolders
ProjA\*.cpp
# 
# Ignore .txt files in this folder 
\*.txt
#
# Ignore .xml files in this folder and all its sub-folders
*.xml
#
# Ignore all files in the Temp sub-folder
\Temp
#
# Do not ignore .dll files in this folder nor in any of its sub-folders
!*.dll

Ответ 3

Он делает немного громоздким, чтобы игнорировать файлы (и папки) в Team Foundation Server. Я нашел пару способов сделать это (используя TFS/Team Explorer/Visual Studio 2008). Эти методы также работают с типом ASP-проекта веб-сайта.

Один из способов - добавить новый или существующий элемент в проект (например, щелкнуть правой кнопкой мыши по проекту, добавить существующий элемент или перетащить его из проводника Windows в проводник решений), позволить TFS обрабатывать файлы или папки, затем отмените ожидающие изменения в позиции (-ях). TFS отменит их как имеющую ожидающее изменения добавления, и файлы будут сидеть тихо в проекте и не будут оставаться в TFS.

Другой способ - добавить команду "Добавить элементы в папку" в Source Control Explorer. Это запускает небольшой мастер, и на одном из шагов вы можете выбрать элементы для исключения (хотя, я думаю, вам нужно добавить по крайней мере один элемент в TFS с помощью этого метода, чтобы мастер смог продолжить).

Вы даже можете добавить политику регистрации запрещенных шаблонов (в разделе Team → Team Project Settings → Source Control... → Check-in Policy), чтобы запретить другим людям в команде ошибочно проверять определенные активы.

Ответ 4

Для TFS 2013:

Начать в VisualStudio- Team Explorer, в диалоговом окне PendingChanges отменить изменения с состоянием [add], которое следует игнорировать.

Visual Studio снова обнаружит Add (s). Нажмите "Вкл. " "Обнаружено: x добавления (а)" -in Исключенные изменения

В открывшемся "Изменить кадровые изменения" -Dialog Вы можете легко исключить файлы и папки с помощью Contextmenu. Возможные варианты:

  • Игнорировать этот элемент
  • Игнорировать по расширению
  • Игнорировать по имени файла
  • Игнорировать по ffolder (да ffolder, TFS 2013 Update 4/Обновление Visual Studio 2013 Premium 4)

Не забудьте проверить измененный файл .tfignore.

Для VS 2015/2017:

Аналогичная процедура: В вкладке "Исключенные изменения" в TeamExplorer\Pending Changes нажмите "Обнаружен": xxx add (s)

The Excluded Changes Tab in TeamExplorer\Pending Changes

Откроется диалоговое окно "Помогать кандидатам", а в записи вы можете щелкнуть правой кнопкой мыши для Contextmenu. Typo теперь исправлено: -)

Ответ 5

Я нашел идеальный способ игнорировать файлы в TFS, например SVN.
Прежде всего, выберите файл, который вы хотите игнорировать (например, Web.config).
Перейдите на вкладку меню и выберите:

Управление исходным файлом > Дополнительно > Исключить web.config из источника управления

... и стрела; ваш файл постоянно исключается из исходного управления.

Ответ 6

Я собираюсь предположить, что вы используете проекты веб-сайтов. Они автоматически сканируют свою директорию проектов и бросают все в исходный контроль. Нет способа остановить их.

Однако не отчаивайтесь. Проекты веб-приложений не демонстрируют этого странного и довольно неожиданного поведения (imho: moronic). WAP является дополнением к VS2005 и поставляется с VS2008.

В качестве альтернативы изменению ваших проектов на WAP вы можете рассмотреть возможность перемещения папки "Активы" из системы "Источник" и в библиотеку документов TFS. Только делайте это, ЕСЛИ сам проект напрямую не использует файлы активов.