Як ігнорувати файли / каталоги в TFS, щоб уникнути їх переходу до сховища центрального джерела?


254

Чи можна налаштувати файли / папки для ігнорування на проектній основі в контролі джерела TFS?

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

Якщо я працюю над цим веб-сайтом під час керування джерелом і оновлюю дерево, ці файли автоматично знову додаються

Я хочу не допустити цього.


1
Для локальних робочих просторів ви можете використовувати .tfignore -файли, як вказує Річард Бенкс. Про коригування цього файлу за допомогою контексту-меню у команді-досліднику див. Мою відповідь. Для серверних робочих просторів я надав посилання в коментарях.
gReX

Відповіді:


88

Для VS2015 та VS2017

Працює з TFS (on-prem) або 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 для того, щоб його ім'я .nuget.вдало зберегло як .nuget(воно автоматично видаляє останній період), але безпосередньо намагаючись назвати його, .nugetможливо, це не спрацює (ви можете отримати помилку або змінити ім'я, залежно від версії Windows ). Або назвіть нульовий каталог та відкрийте батьківський каталог у командному рядку. тип. 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, використовуйте той самий трюк, що був вище, і назви його .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 .tfignoreфайл і .nugetпапку до всіх моїх різних рішень і виконуючи їх, і я більше не маю packagesпапки, яка намагається прокрастись до мого репорту управління джерелом!

Подальше налаштування

Хоча це не моє, я знайшов цей .tfignoreшаблон Sirkirby як зручний. Приклад у моїй відповіді стосується packagesпапки Nuget, але цей шаблон включає деякі інші речі, а також надає додаткові приклади, які можуть бути корисні, якщо ви хочете додатково налаштувати це.


1
Слідкував за цим на VS 2017 - TFS 2015. Працював як шарм. Усі мої пакети Nuget більше не відображалися як очікування змін.
Джеймс Уолш-молодший

Мені просто довелося відкрити виявлені зміни та додати новостворені файли до змін, що очікують, вручну. За винятком того, що все працювало нормально.
Мачадо

Це не спрацювало для мене. VS 2017 - TFS 2015. Я нічого не можу перевірити. При спробі я отримую таку помилку: "D: \ Src \ MiniCoreWebAPI \ пакети \ Microsoft.IdentityModel.Protocols.5.2.1 \ lib \ net451 \ Microsoft.IdentityModel.Protocols .dll: Не вдалося знайти частину шляху "
Пд

У мене не було зареєстровано папки пакунків, але вона вже була виявлена ​​як очікувана зміна. Після застосування цих інструкцій мені довелося "Скасувати очікувані зміни" в папці пакунків, тоді все було нормально, коли я відновив і NuGet відновив пакунки.
CodeHxr

172

Якщо ви використовуєте локальні робочі простори (TFS 2012+), тепер ви можете використовувати .tfignoreфайл, щоб виключити локальні папки та файли від реєстрації.

Якщо ви додасте цей файл до керування джерелом, ви можете переконатися, що інші користувачі вашої команди мають ті самі налаштування виключення.

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

Для ледачих:

Ви можете налаштувати, які типи файлів ігноруються, помістивши текстовий файл, названий .tfignoreу папці, де потрібно застосувати правила. Ефекти .tfignoreфайлу є рекурсивними. Однак ви можете створити .tfignore файли у підпапках, щоб змінити ефекти .tfignore файлу у батьківській папці.

Наступні правила застосовуються до файлу .tfignore:

  • # починається рядок коментарів
  • Кінець ? підтримуються подвійні картки.
  • Файловий файл є рекурсивним, якщо не встановлено символом \.
  • ! заперечує filepec (файли, що відповідають шаблону, не ігноруються)

Приклад файлу:

# 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

35
я намагався це робити. єдине, що ігнорується - це вміст файлу .tfignore :(
user1852503

15
@SerjSagan мій комп'ютер не дозволив мені створити .tfignoreтак, я створив, .tfignore.і він видалив останню крапку самостійно ..
Петро,

5
Проблема полягає в тому, що він ігнорує лише ресурси, які були явно видалені у вікні Explorer Control Explorer перед реєстрацією та 2) явно виключені у вікні очікувань змін . Наприклад, якщо ви збираєтеся використовувати його для ігнорування папки пакунків і покладатися на відновлення пакета NuGet, вам потрібно буде 1) видалити папку пакунків у Explorer Control Explorer, а потім 2) виключити її у вікні змін, що очікують після процесу відновлення пакета NuGet. . В іншому випадку він все ще буде зареєстрований у папці пакунків .
Дейлан

1
Якщо Windows не дозволить вам створити .tfignoreфайл через відсутність власного імені, ви можете створити його або перейменувати через вікно командного рядка.
Зарефет

1
У VS2015 є значна проблема з .tfignore. Люди дуже нещасні , але, схоже, немає чіткого твердження про проблему чи чіткого зобов'язання її виправити.
bbsimonbb

71

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

Один із способів - додати новий або існуючий елемент до проекту (наприклад, клацнути правою кнопкою миші на проект, Додати існуючий елемент або перетягнути з Провідника Windows в провідник рішень), нехай TFS обробляє файл (и) або папку, а потім скасовує очікування зміни на елементах. TFS позначить їх як зміни, що очікують на додавання, і файли будуть спокійно сидіти в проекті і залишатись поза TFS.

Інший спосіб - за допомогою команди «Додати елементи до папки» Провідника управління джерелами. Це запустить невеликого майстра, і на одному з кроків ви можете вибрати елементи, які потрібно виключити (хоча, я думаю, вам потрібно додати принаймні один елемент до TFS за допомогою цього методу, щоб майстер дозволив вам продовжувати).

Ви можете навіть додати політику реєстрації заборонених шаблонів (у розділі Команда -> Налаштування командного проекту -> Контроль джерела ... -> Політика реєстрації), щоб заборонити іншим особам у команді помилково перевіряти певні активи.


7
У мене не було політики щодо заборонених зразків. Відповідь на відповідне запитання розкриває, де його взяти. Мабуть, це частина електроінструментів TFS .
Лейф Карлсен

1
Я зіткнувся з подібною проблемою, чи можете ви надати більш детальну інформацію про певну папку, яку не потрібно перевіряти, використовуючи Політику реєстрації
Imran Rizvi

Упс - ти правий, Лейфе. Він є частиною електроінструментів TFS.
Дерек Моррісон

Імран, на жаль, я змінив завдання, і більше не використовую TFS і не маю доступу до своїх попередніх проектів, тому я не впевнений у синтаксисі синтаксису політики заборонених шаблонів реєстрації. Може допомогти це питання? stackoverflow.com/questions/2741412/…
Дерек Моррісон

TFS 2010 Після вибору файлів для включення ви можете виключити зі цього списку. Не вдається торкнутися наявних файлів ...
JNF

47

Для TFS 2013 :

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

Visual Studio знову виявить додавання. Клацніть на "Виявлено: x додати (-ла)"виключені зміни

У відкритому "Сприяти змінам кадидату" -Діалог Ви можете легко виключити файли та папки з контекстного меню. Варіанти:

  • Ігноруйте цей елемент
  • Ігнорувати розширенням
  • Ігнорувати за назвою файлу
  • Ігнорувати папку (так папка, оновлення TFS 2013 4 / Visual Studio 2013 Premium Update 4)

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

Для VS 2015/2017 :

Та сама процедура: на вкладці "Виключені зміни" на TeamExplorer \ очікувані зміни натисніть Виявлено: xxx додати (-и)

Вкладка "Виключені зміни" в TeamExplorer \ очікувані зміни

Відкриється діалогове вікно "Сприяти змінам кандидата", і на записах можна натиснути правою кнопкою миші контекстне меню. Друкарська помилка виправлена ​​зараз :-)


Не можу знайти такий варіант. Я на VS 2015 RC.
Шиммі Вайцхандлер

це буде працювати лише в тому випадку, якщо ви працюєте з локальною робочою областю, як детально описано тут: msdn.microsoft.com/library/vstudio/…
stvn

@Shimmy: Процедура в VS 2015 RC однакова, з тим самим друком. Дивіться мою оновлену відповідь. Але як зазначає stvn .tfignore працює лише з локальними робочими просторами. Для серверів-робітників просторів ви повинні скасувати Включити в Pending повернення см відповідь тут: stackoverflow.com/questions/21887308 / ...
Grex

@Shimmy: Ви підключені до TFS-Server 2015? Переконайтеся, що ви починаєте з Team Explorer у VS
gReX

@ qw1564 Я цілком впевнений, що коли це питання було задано спочатку, це було не можливо. Але зараз, це відповідь, яку я обрала б. Дякуємо за кредити!
gReX

5

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

Керування джерелами файлів> Додатково> Виключити web.config з керування джерелом

... і бум; ваш файл назавжди виключений з контролю джерела.


1
це працює для мене на TFS 2010 для файлів, створених кодом. ДЯКУЮ!
BozoJoe

1
Це насправді працює, .tfignore не працює для мене. Дякую тонну
EpicKip

2
У мене немає такого варіанту в VS 2018
Адам,

4

Я припускаю, що ви використовуєте проекти веб-сайтів. Вони автоматично сканують каталог своїх проектів і перекидають все на контроль джерел. Зупинити їх не можна.

Однак не впадайте у відчай. Проекти веб-додатків не демонструють такої дивної та досить несподіваної (імхо: дебільної) поведінки. WAP є додатком для VS2005 і постачається безпосередньо з VS2008.

Як альтернатива зміні проектів на WAP, ви можете розглянути можливість переміщення папки «Активи» з контролю джерела та перейти до бібліотеки документів TFS. Якщо це зробити, якщо сам проект безпосередньо не використовує файли активів.


так, ваше припущення правильне. Я думав, що так буде, просто хотів бути вдвічі впевнений, що нічого не пропускаю.
Дейв
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.