2010-02-26 10 views
6

Sto cercando di capire un modo per scoprire quali file sono stati colpiti da un elemento di lavoro in TFS 2008.Un modo per scoprire tutti i file interessati di un oggetto di lavoro o di un gruppo di chgset in TFS 2008?

mi rendo conto che questa è una duplicazione di una domanda già chiesto da qualcun altro qui - View a list of all files changed as part of a Workitem in TFS ma è andato senza risposta e sono stato, via e via, cercando questo per un po '.

Capisco che è possibile visualizzare la scheda dei collegamenti dell'elemento di lavoro e quindi visualizzare ciascun changeset per visualizzare i file che sono stati modificati. Ma l'oggetto di lavoro molto probabilmente finirà con molti changeset ad esso collegati, e vorrei rivedere i file modificati come parte dell'elemento di lavoro, ma sento che la probabilità di perdere un file o due è molto alta se fare affidamento su ciascuno dei 100+ changeset singolarmente.

Qualcuno sa di un modo per realizzare questo? Grazie in anticipo per qualsiasi aiuto o guida.

risposta

3

Suona come un lavoro per PowerShell ...

function Get-TfsItem([int] $workItemNumber) 
{ 
    Get-TfsServer njtfs -all | 
     foreach { $_.wit.GetWorkItem($workItemNumber) } | 
     foreach { $_.Links } | 
     foreach { ([regex]'vstfs:///VersionControl/Changeset/(\d+)').matches($_.LinkedArtifactUri) } | 
     foreach { $_.groups[1].value } | 
     Get-TfsChangeset | 
     Select-TfsItem | 
     Sort Path -Unique 
} 

Le prime righe sono un po 'brutto. Dobbiamo colpire direttamente l'API del servizio Web poiché i cmdlet TFS non coprono il sistema di tracciamento dei bug. E gli oggetti che torniamo richiedono un certo amore per le espressioni regolari prima che facciano ciò di cui abbiamo bisogno. Piping to "foreach" su & over è uno sfortunato idioma PowerShell che si verifica quando si accoppia un'API ostile a un operatore di proiezione zoppo. (Io uso my own replacement, personalmente, ma non si può fare affidamento su questo.)

Le ultime 3 righe dovrebbero essere auto esplicativo se il mio TFS Power Cmdlets sono installati & fare il loro lavoro.

+1

Dovrò fare una prova. Non hai mai usato PowerShell in precedenza, hai qualche link tutorial che ritieni particolarmente utile? – Billyhole

1

Ho appena trovato il plug-in Scrum Power Tools per VS 2010 che esegue questa operazione con un clic del pulsante in VSS, installato e funzionante. http://visualstudiogallery.msdn.microsoft.com/3f261226-530e-4e9c-b7d7-451c2f77f262

Sto solo provando a far funzionare la versione di PowerShell 2010. http://msdn.microsoft.com/en-us/vstudio/bb980963

Il primo problema è che l'opzione di pwoer shell non è installata per impostazione predefinita, utilizzare l'installazione personalizzata e selezionare tale opzione. Una volta completato, vi è un prompt di PowerShell nel menu TTS powertools 2010, i comandi funzionano solo lì.

Il server get ha dovuto sostituire njtfs con l'url http://tfsserver:8080/tfs e rimuovere -all. Lo script continua a fallire.

definitiva Ho bisogno di un report dettagliato che elenchi: fonte 'elemento di lavoro' 'cambio di set'

Ad esempio:
xyz.cs 'elemento di lavoro 1' lavoro 'C397'
xyz.cs' articolo 2 '' C399 '

Eventualmente devo calcolare che l'articolo di lavoro 1 dipende dall'oggetto di lavoro 2. Devo anche rintracciare all'elemento di lavoro 1 per controllare lo stato.

Qualcuno può assistere con uno script di versione 2010? Non ho mai scritto PS prima.

1

Avevo bisogno della stessa identica cosa e ho scritto un'utilità TFS per me stesso, usando l'API TFS. Ti consente di vedere tutte le modifiche attivate da un oggetto di lavoro nel tempo e altre ancora. L'ho messo su codeplex. Puoi scaricarlo da:
tfshelper.codeplex.com

+0

Ho ottenuto il funzionamento dell'applicazione dopo aver scaricato l'origine, corretto i riferimenti alla versione più recente e l'aggiornamento della soluzione a .Net 4.5. Purtroppo non ho diritti sufficienti sul server (ho bisogno dell'autorizzazione per "Modifica informazioni a livello di istanza"). –