Domanda

Sto creando uno script per eseguire grandi quantità di spostamenti nella mia istanza TFS.Ho i cmdlet tfs disponibili con TFS Power Tools 2010, ma la relativa documentazione di aiuto è molto scarsa.Nello specifico, Add-TfsPendingChange non sembra supportare la ridenominazione, il che mi costringe a utilizzare invece "tf.exe rename".

Prima di tutto:ho in qualche modo perso la documentazione per i cmdlet?Ho provato get-help sui comandi, ma non supportano i flag -detailed o -examples.C'è qualcosa di più disponibile?

In secondo luogo:quale motivo devo preferire uno qualsiasi dei cmdlet rispetto al normale tf.exe?Ci sono vantaggi oltre al passaggio di oggetti attraverso la pipe quando si eseguono funzioni simili?

È stato utile?

Soluzione

I cmdlet TF sono un'offerta un po 'minimalista a questo punto e che include la documentazione fornita.In generale, userei i cmdlet TF dove supportano ciò che sto cercando di fare, specialmente se hai domande.L'elaborazione dell'output dei cmdlet della query è molto più semplice perché forniscono oggetti ricchi invece del flusso di testo che devi analizzare quando usi qualcosa come tf status . /r.

Inoltre, tieni presente che su un sistema Windows x64, i cmdlet TF funzionano solo in un host PowerShell a 32 bit.

Altri suggerimenti

I cmdlet TF non sono esattamente inutili, ma ... abbiamo deciso di cercare di usarli nel nostro ambiente di costruzione in questo momento, anche se significa analisi del testo.

A parte la cosa x64, ci sono molti comandi mancanti (grazie @Keith) e parametri mancanti e Soprattutto , non funzionano in sessioni remote!

Una terza opzione consiste nell'utilizzare gli assembly pubblici TFS da PowerShell.In questo modo è possibile accedere a tutte le funzionalità del client TFS e continuare a utilizzare anche i cmdlet TFS.Sia che tu scelga questo approccio tf.exe e gli altri eseguibili della riga di comando TFS dipendono dall'ambiente di scripting che preferisci.

Ecco un comando PowerShell per fare riferimento agli assembly pubblici TFS 2013 (per TFS 2012 o 2010 basta cambiare Version=12.0.0.0 A Version=11.0.0.0 O 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"
    }

Per il tuo esempio di ridenominazione, potresti quindi:

  1. Usa il Get-TfsWorkspace cmdlet per istanziare aMicrosoft.TeamFoundation.VersionControl.Client.Workspace oggetto.
  2. Chiama il Workspace dell'oggetto PendRename, Ottieni modifiche in sospeso E Registrare metodi.

Qualcosa come questo:

$workspace = Get-Workspace
$workspace.PendRename($oldItemPath, $newItemPath)
$pendingChange = $workspace.GetPendingChanges($oldItemPath)
$workspace.Checkin($pendingChange, $comment)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top