Как игнорировать файлы / каталоги в TFS, чтобы они не попадали в центральный репозиторий? - PullRequest
239 голосов
/ 28 мая 2009

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

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

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

Я хочу, чтобы этого не случилось.

Ответы [ 6 ]

167 голосов
/ 14 января 2014

Если вы используете локальные рабочие пространства (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
75 голосов
/ 03 ноября 2016

Для 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).
  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's 
# 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. Скопируйте / вставьте через Windows Explorer файл .tfignore и папку .nuget во все мои различные решения и зафиксируйте их, и у меня больше нет папки packages, пытающейся проникнуть в мое хранилище с контролем исходного кода!

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

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

70 голосов
/ 21 декабря 2009

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

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

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

Вы даже можете добавить политику регистрации запрещенных шаблонов (в разделе «Команда» -> «Параметры командного проекта» - «Управление исходным кодом» -> «Политика регистрации»), чтобы запретить другим членам команды ошибочно проверять определенные активы.

45 голосов
/ 11 марта 2015

Для TFS 2013 :

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

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

В открывшемся диалоге «Содействие изменениям в кадидате» Вы можете легко исключать файлы и папки с помощью контекстного меню. Варианты:

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

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

Для VS 2015/2017 :

Та же процедура: На вкладке «Исключенные изменения» в TeamExplorer \ Ожидающие изменения нажмите Обнаружено: xxx add (s)

The Excluded Changes Tab in TeamExplorer\Pending Changes

Откроется диалоговое окно «Содействие изменениям кандидата», и в записях вы можете щелкнуть правой кнопкой мыши контекстное меню. Опечатка теперь исправлена: -)

5 голосов
/ 16 февраля 2016

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

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

... и бум; Ваш файл навсегда исключен из системы контроля версий.

4 голосов
/ 29 мая 2009

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

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

В качестве альтернативы изменению ваших проектов на WAP, вы можете рассмотреть возможность перемещения папки «Активы» из системы управления исходным кодом в библиотеку документов TFS. Делайте это только в том случае, если сам проект не использует файлы ресурсов напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...