Як TFS 2010 виявляє зміни, внесені до файлів поза Visual Studio?


118

Я використовую Team Foundation Server 2010 з Visual Studio 2010.

Щоразу, коли я змінюю файл за межами Visual Studio, TFS, схоже, не виявляє змін, зроблених у файлі, і, отже, не пропонує мені можливості зареєструвати файл після його зміни.

Як це можна вирішити?


18
Subversion або Git (а може й інші) порівнюють хеші файлів замість API, щоб перевірити / вийти з файлу. Набагато простіше і куди менш ризиковано!
Стів Б

8
гірше TFS навіть не помітив, що потрібно змінити файл, тому ви часто можете його забути .., поки ваш колега не перевірить його і не зрозуміє, що ваш код не збирається і не працює. Недарма кажуть, що TFS - це "VSS на стероїди" - краще, але все ж є багато проблем VSS.
gbjbaanb

Це VSS на стероїди, так само, як стероїди руйнують ваше тіло.
Ян Кемп

Відповіді:


48

Якщо у вас підключення до сервера під час роботи за межами Visual Studio, можливо, краще заздалегідь перевірити файл перед його редагуванням, використовуючи клієнт командного рядка tf або використовуючи інтеграцію оболонки Windows Explorer доступний у версії електроінструментів TFS . (Крім того, все більша кількість інших інструментів має інтеграцію в TFS, що робить це автоматичним, але якщо ви просто використовуєте блокнот, це все ще має бути кроком вручну.)

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

Якщо ви знаєте, які файли ви змінили, можете просто перевірити їх у Visual Studio, тоді ви зможете перевірити їх ще раз.

Якщо ви не знаєте, які файли ви редагували, ви можете виявити зміни, виконавши tfpt onlineкоманду (також частину випуску Power Tools). Це дозволить знайти файли, які були змінені локально, і перевірити ці файли з сервера.


Здається, Visual Studio не виявляє змін у файлах, просто перевіряючи їх. Я просто спробував перевірити папку, і вміст відображався в змін, що очікують, як редагування. Потім я видалив папку в Провіднику файлів і оновив очікувані зміни, але Visual Studio не сказав, що файли були видалені в очікуванні змін. Також файли все ще були в Провіднику рішень.
Кайл Делані

160

TFS для цього має команду "Примирити":

  1. Відкрийте Провідник управління джерелами
  2. Клацніть правою кнопкою миші на папці зі змінами та оберіть Порівняти
  3. Виберіть файли, які потрібно узгодити (натисніть CTRL+, Aщоб вибрати всі файли)
  4. Натисніть на кнопку Примирити
  5. Встановіть параметри в діалоговому вікні « Погодити відмінності папок» . Переконайтеся, що для файлів, що не мають змін , встановлено значення Check Out
  6. Натисніть кнопку ОК
  7. Якщо у вас є місцеві зміни, з'явиться діалогове вікно Check Out . Встановіть бажаний тип блокування
  8. Клацніть Перевірити

Узгодження відмінностей папок

Дивіться також: Приміріть відмінності між папками


13
Це найкраща відповідь, оскільки не вимагає командного рядка або ризикованого "Скасувати очікувані зміни".
NickH

4
Врятував мій день! Я точно стежив за вашими кроками, і це працювало так, як очікувалося. :-)
Гілад Барнер

4
Працювали так, як описано. Має бути найкращою відповіддю.
Ніколя

На жаль, виконуючи це протягом усього мого проекту, я отримую помилку Зазначений шлях, ім'я файлу або обидва вони занадто довгі. Повноцінне ім’я має містити менше 260 символів, а ім’я каталогу - менше 248 символів. Вибір окремих папок не є для мене варіантом, тому що я не можу запам'ятати всі файли каталогів, які я змінив. Будь-яка ідея?
kraftwer1

2
Відмінно працює в оновленнях VS 2015 3, велике спасибі Має бути найкращою відповіддю, ніяких складних команд, щоб це
спрацювало

35

Це працювало для мене, використовуючи електроінструменти TFS:

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(де ім'я каталогу - це шлях до оновленого каталогу, інакше він виявить зміни у вашому сховищі TFS)

Якщо ви хочете знати, що це робиться без того, щоб насправді внести будь-які зміни, можете змусити його зробити сухий прогон, додавши /previewперемикач.


Дякую за пораду @Adam Batkin. Працював як шарм, і я зараз виправлений! +1
iOnline247

9
Остерігайтеся, цей командний рядок також міститиме непотрібні файли: * .user, BIN \, obj тощо ...
Стів B,

1
Ура, я шукав спосіб командного рядка, щоб я міг автоматизувати оновлення TFS компанії з мого місцевого репортажу Git!
Марк К Коуан

2
@SteveB є /exclude:fld_name/*,filenameперемикач, який можна використовувати для виключення небажаних файлів .. що зупинило мене на багато
Кресімір Пендич

1
Я запускаюсь так tfpt online /deletes /noprompt /recursive directory-nameі отримав тисячу файлів, які потрібно `змінити`, тому доведеться скасувати. Але я ніколи не торкався цих, лише видалених папок.
Дмитро Лагода

16
*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

Я тестував це рішення на гілці, і це мені дуже допомогло. Але є лише нові файли та нова папка, яку потрібно зробити вручну.

Рекомендую перед операцією створити відділення. Це ізолює вас час операції.

Примітка. Ця методика також робить файли ідентичними очищеннями, які TFS завжди позначає як модифіковані.


3
Це дійсно має бути коментарем до публікації водоростей , а не новою відповіддю. У будь-якому випадку я все-таки рекомендую не робити це з тієї ж причини, яку я рекомендував проти неї, коли альга пропонувала це вище.
Едвард Томсон

Зовсім геніально! Саме те, що я шукав (після того, як наша компанія переїхала на наш сервер TFS, а TFS / VS2010 були збиті з нього). Тепер я просто перевірив свої відредаговані файли. Дякую!
Майк Гледхілл

Це працює, але МС повинні забезпечити кращі способи цього зробити. Командний рядок і хаки не повинні бути необхідними для хорошого продукту (особливо якщо він вбудований у VS). SVN та Mercurial роблять це для розваги ...
user2173353

Замість пункту 4, ви можете використовувати TFPT уу stackoverflow.com/a/544285/10245
Tim Abell

Це просто скасовує те, що ви зробили. Це не дає Visual Studio усвідомлювати, що ви зробили.
Кайл Делані

7

Спробуйте це. Це якесь вирішення, але воно працює:

  1. вносити зміни поза Visual Studio
  2. перейдіть у Visual Studio і відкрийте Explorer Control Explorer
  3. клацніть правою кнопкою миші на папці> "Виїзд на редагування" > "Вихід"
  4. клацніть правою кнопкою миші на тій же папці> "Скасувати очікувані зміни ..." > "Скасувати зміни" > " Ні для всіх "

Це воно. Зміни видно вже зараз.


3
Я б дуже рекомендував проти цього - моє найбільше хвилюватися було б те, що я перекусив би це і випадково скасував усі мої законні зміни. Крім того, ви перевіряєте всі файли, які, залежно від конфігурації вашого клієнта та сервера, ймовірно, зможуть заблокувати деякі чи можливі всі файли та можуть отримати останню інформацію про перевірку, що, безумовно, може дратувати.
Едвард Томсон

1
Це просто скасовує те, що ви зробили. Це не дає Visual Studio усвідомлювати, що ви зробили.
Кайл Делані

І якщо ви створили або додали нові елементи, на тому сеансі: Зникли, дитино, пішли!
Крістіан

4

Існує також інше рішення, щоб TFS розібрався у файлах, які змінилися поза Visual Studio:

  1. Відкрийте рішення в режимі офлайн
  2. У Провіднику рішень виберіть файл рішення та натисніть кнопку Перейти в Інтернет ( Значок кнопки GoOnline)

TFS автоматично сканує рішення на предмет змін після цього.

Перший крок можна досягти різними способами. Ось декілька:

  • Використовуйте розширення GoOffline - дуже просте та ефективне.
  • Якщо під час відкриття рішення вас запитують облікові дані TFS (відсутність автоматичної автентичності домену), не вводьте облікові дані. Рішення відкриється в режимі офлайн, і ви ввійдете в систему після натискання кнопки Go Online
  • (крайнє рішення) Відключіть мережевий кабель; Відкрийте рішення; Підключіть мережевий кабель.

3

Visual Sourcesafe працює також так, і я отримую VSS або TFS, щоб помітити зміни, перевіряючи файл один раз у Visual Studio.


1

Відкрийте керування джерелами та перейдіть до своєї папки TFS. Клацніть правою кнопкою миші на папці та виберіть "Порівняти".

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

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


1

У мене була ця проблема в минулому, коли мій Інтернет був відключений, і я працював в автономному режимі, і більшість моїх змін не з’явилося в Team Explorer.

Після цих кроків: по- перше, в браузері рішень, виберіть папку , яку ви хочете повторно примиряти (для мене це було вся моя папка рішення), і виберіть Порівняти ... введіть тут опис зображення Натисніть на Змінити фільтр , і в фільтрувальну Шріфтом- поле, ви можете ввести:

*.cs;!obj\;!bin\;!packages\;

У цьому прикладі він буде включати в пошук лише файли C # та виключати у папках: bin, obj та пакети.

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

  • Щоб позначити як редагування (коли в локальному елементі є відповідний елемент сервера), виберіть файл та виберіть Перевірити для редагування ...
  • Щоб позначити як додавання (коли в локальному елементі немає жодного елементу сервера), виберіть файл та виберіть Додати файли

Нарешті, я не впевнений, чому проекти не вказані тут (після того, як я видалю * .cs фільтр, все ще не відображається), тому відновіть рішення, щоб переконатися, що оновлення проектів також

+ У рішенні натисніть кнопку підключення (якщо з’явиться), що вказала Перейти в Інтернет .


0

Я виявив, що в Visual Studio 2015, відкривши проект, Visual Studio для себе виявив, що файли були змінені зовні, і автоматично перевіряв їх, не маючи нічого робити. Перевірка в проекті звичайним чином зберегла зовнішні модифікації.


0

У моєму випадку працювало наступне (принаймні один раз, коли я його спробував):

  1. Перейти до Pending Changes панелі
  2. Виберіть Опції перегляду під Включені або Виключені зміни.
  3. Перемикайтеся між пунктами Показати все та Показати зміни рішення
  4. За бажанням перемкніть назад

Оновити зміни TFS

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

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