Powershell и TFS: tf.exe против Power Tools Командлеты TFS? - PullRequest
8 голосов
/ 04 февраля 2011

Я нахожусь в процессе создания сценария для выполнения большого количества шагов в моем экземпляре TFS. У меня есть командлеты tfs, доступные с 2010 TFS Power Tools, но документация get-help для них очень скудна. В частности, Add-TfsPendingChange, похоже, не поддерживает переименование, что вынуждает меня использовать вместо него «tf.exe rename».

Прежде всего: я как-то пропустил документацию для командлетов? Я попытался получить справку по командам, но они не поддерживают флаги -detailed или -examples. Что-нибудь еще доступно?

Во-вторых: по какой причине я предпочитаю какой-либо из командлетов обычному tf.exe? Есть ли другие преимущества, кроме прохождения объектов через канал при выполнении аналогичных функций?

Ответы [ 3 ]

6 голосов
/ 09 февраля 2011

Командлеты tf не совсем бесполезны, но ... мы решили не пытаться использовать их в нашей среде сборки прямо сейчас, даже если это означает синтаксический анализ текста.

Помимо x64, естьмножество пропущенных команд (спасибо @Keith) и пропущенных параметров, и самое главное , они не работают в удаленных сеансах!

6 голосов
/ 05 февраля 2011

Командлеты TF на данный момент представляют собой немного минималистичное предложение, которое включает предоставленную документацию.В общем, я бы использовал командлеты TF, если они поддерживают то, что я пытаюсь сделать, особенно если у вас есть какие-либо вопросы.Обрабатывать выходные данные командлетов запроса намного проще, поскольку они дают вам расширенные объекты вместо текстового потока, который вы должны анализировать при использовании чего-то вроде tf status . /r.

Также следует помнить, что в системе x64 Windows командлеты TF работают только на 32-разрядном хосте PowerShell.

3 голосов
/ 02 июля 2015

Третий вариант - использовать открытые сборки TFS из PowerShell. Когда вы сделаете это, вы сможете получить доступ ко всем возможностям клиента TFS и при этом использовать командлеты TFS. Выбор этого подхода вместо tf.exe и других исполняемых файлов командной строки TFS зависит от того, какую среду сценариев вы предпочитаете.

Вот команда PowerShell для ссылки на публичные сборки TFS 2013 (для TFS 2012 или 2010 просто измените Version=12.0.0.0 на Version=11.0.0.0 или Version=10.0.0.0).

'Microsoft.TeamFoundation.Client', 'Microsoft.TeamFoundation.Common', 'Microsoft.TeamFoundation.VersionControl.Client' |
    ForEach-Object {
        Add-Type -AssemblyName "$_, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    }

Для вашего примера переименования вы можете:

  1. Используйте командлет Get-TfsWorkspace для создания экземпляра Microsoft.TeamFoundation.VersionControl.Client.Workspace объект.
  2. Вызов Workspace объекта PendRename , GetPendingChanges и Checkin методов.

Примерно так:

$workspace = Get-Workspace
$workspace.PendRename($oldItemPath, $newItemPath)
$pendingChange = $workspace.GetPendingChanges($oldItemPath)
$workspace.Checkin($pendingChange, $comment)
...