Отримати поточний ідентифікатор набору змін у робочій області для TFS


80

Як я можу зрозуміти, який набір змін я зараз маю у своїй локальній робочій області?

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

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

Врешті-решт, щоб з’ясувати набір змін, мені потрібно пам’ятати, які останні змінилися файли, і переглянути їх історію.

Чи є кращий спосіб це зробити?


Чому ви хочете знати свій поточний набір змін?
Евальд Хофман,

Що трапляється, коли ваша робоча область не репрезентує набір змін? Вважайте, що ви $/Aзіставили карту, і ви отримали набір змін A, ви $/Bнанесли на карту і ви отримали набір змін B. На якому наборі змін знаходиться ваша робоча область?
Едвард Томсон,

8
@Ewald Подумайте про те, щоб повернутися у минуле, щоб дізнатись, коли почалася помилка. Для цього може знадобитися кілька разів виконувати операції "Отримати конкретну версію" у робочій області, щоб перейти до попередніх наборів змін, які можуть бути дуже нудними, довгими та схильними до помилок. Можливість визначити, який саме набір змін зараз знаходиться у робочій області, надзвичайно корисна, щоб уникнути помилок, що відволікають увагу, і підтвердити винуватця. Я радий, що сьогодні знайшов цю команду.
Луї

1
Я вітаю це питання!
Фернандо Еспіноса

Ласкаво просимо до 5+ років потому. Щоб відповісти на запитання @ EwaldHofman, у моєму сценарії я зробив кілька змін у своїй робочій області, і я хочу побачити, що змінилося на сервері з мого останнього "отримання". У моєму випадку я не знаю, яку версію я „отримав” востаннє.
JMD

Відповіді:



4

Загальна відповідь для використання tf.exe history . /r безпосередньо, працює, але вона може бути жахливо повільною. У нашому випадку це займає 10-15 секунд. Тепер я використовую двоступеневу перевірку, спочатку перевіряючи ревізію деяких довільних файлів (я використовую файли в кореневій папці).

З PowerShell:

$tfexepath = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe"
$localpath = "C:\some\tfs\directory"

$result = & $tfexepath history $localpath /noprompt /stopafter:1 /version:W 
"$result" -match "\d+" | out-null
$id = $matches[0]

Потім виконайте пошук у кореневій системі, використовуючи прапор / r, але обмежте пошук, починаючи з редакції, знайденої вище:

$result2 = & $tfexepath history $localpath /r /noprompt /stopafter:1 /version:$id~W        
"$result2" -match "\d+" | out-null
$id2 =  $matches[0]

#result:
Write-Host $id2 

Для нашої кодової бази це зменшує загальний час з 10-15 до 1,4-1,5 секунди.

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


1
Відмінна альтернатива. Зменшив час роботи з 55 секунд до 1,5 секунди. Дякую!
bobroxsox

1
.... в ретроспективі - вражений тим, що я можу жити з msvc, і радий, що це справа, з якою мені доводилося мати справу лише в минулому.
Йохан Лундберг,

3

Запустіть Visual Studio CMD (у моєму випадку для VS2015 називається: «Командний рядок розробника для VS2015»), а потім перейдіть до папки проекту та виконайте таку команду:

tf history . /r /noprompt /stopafter:1 /version:W

2
Дякую! Без цієї відповіді я б все ще дивувався, чому команда не працює на панелі "вікно команд" у Visual Studio.
ojdo,

1

Якщо ви хочете використовувати PowerShell ( див. Також ; еквівалент відповіді @kroonwijk ):

  1. увімкнути tfs snapin (один раз, якщо ще не)

    add-pssnapin Microsoft.TeamFoundation.PowerShell

  2. використовуйте командлет tfs, щоб отримати поточний ідентифікатор набору змін

    Get-TfsItemHistory <PATH_TO_PROJECT> -Recurse -Stopafter 1 -Version W


0

Якщо ви справді не уявляєте, яка у вас версія, вам слід скористатися одним із інших запропонованих методів. Якщо ви просто не впевнені, чи маєте ви певну версію, або ви не впевнені між кількома наборами змін, і ви віддаєте перевагу роботі з графічним інтерфейсом VS TFS, можна виконати наступні кроки:

  1. Виберіть набір змін, в якому ви хочете бути впевненими, і проведіть порівняння: введіть тут опис зображення
  2. Якщо у вас немає різниці: введіть тут опис зображення

    або, якщо єдиними різними файлами є файли, до яких ви очікуєте змін: введіть тут опис зображення

Це означає, що ви в курсі розглянутої версії.

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