2010-02-26 12 views
25

Attualmente sto riorganizzando il controllo del codice sorgente TFS per un insieme molto ampio di soluzioni e l'ho fatto con successo fino ad ora.Eliminare in modo sicuro un progetto filiale TFS

Ho un problema nel momento in cui ho bisogno di eliminare un progetto TFS "Release Branch" legacy che era ramificato per la vecchia struttura e non è più necessario poiché ora ospita un ramo di rilascio all'interno della nuova struttura.

Questo è un esempio di come il controllo del codice sorgente sembra ora dopo lo spostamento di tutto:

$/Source Project 
    /Trunk 
     /[Projects] 
    /Release 
     /[Projects] 

$/Release Branch Project 
    /[Projects] 
    /[Other legacy stuff] 

Finora ho trovato informazioni che dice:

  1. tf delete /lock:checkout /recursive TestMain per eliminare un ramo.
  2. TfsDeleteProject per eliminare un progetto

tf delete sembra essere rilevante solo quando ho bisogno di eliminare un ramo che si trova all'interno dello stesso progetto come il tronco, e TfsDeleteProject non sembra come se eliminerà il ramo associazione dal progetto sorgente (spero di sbagliarmi, vedi sotto).

qualcuno può dirmi se quanto sopra funzionerà, e in che ordine li dovrebbe esibirsi in, per eliminare con successo il TFS $/Release Branch Project mentre anche eliminando l'associazione ramo (da tasto destro del mouse $/Source Project -> Proprietà -> Branches)?

risposta

16

In TFS in genere non è possibile eliminare in modo permanente alcun elemento all'interno di un progetto di team (e TfsDeleteProject elimina un progetto di team completo, ma non è chiaro se il contenuto del controllo di origine verrà effettivamente rimosso poiché un progetto di team è solo il livello superiore del albero di controllo del codice sorgente).

L'eliminazione di un file o di un intero set di file è solo un'altra modifica tracciata, torna alla cronologia e può ancora essere visualizzata.

È possibile utilizzare le autorizzazioni per renderlo inaccessibile a tutti. O rinominare sotto un progetto di squadra "Obsoleto".

EDIT (ho finalmente ricordato dove il comando è stato):

C'è un'altra opzione, dalla riga di comando: tf destroy:

distrugge, o elimina definitivamente, file di versione controllata da Team Foundation controllo della versione.

Mi aspetto che questo rimuova i record di ramo per creare i file, ora distrutti, ma potrebbe essere necessario controllare.

+0

Quindi, se elimino il progetto del team di rilascio, questo lo annullerà correttamente dall'elenco dei rami o manterrà un riferimento in esso? Fondamentalmente voglio "unbranch". – Codesleuth

+0

@Codesleuth: vedere l'aggiornamento. – Richard

+0

Grazie per l'aggiornamento. Sembra rischioso: s Penso che eseguirò un backup TFS prima di farlo, lol – Codesleuth

40

Mettiamola i fatti come questo:

  • Nell'ambito del sistema di controllo del codice sorgente TFS, "Elimina" è un'operazione puramente logico. È possibile annullare l'eliminazione in qualsiasi momento. È possibile avere più elementi eliminati occupare lo stesso percorso nel tempo o anche contemporaneamente. Le relazioni di filiale sono preservate.
  • TFS "Destroy" è la rimozione fisica.Per mantenere l'integrità del database, significa che vengono rimosse anche tutte le relazioni delle entità: cronologia dei changeset, record delle modifiche in sospeso, versioni accantonate, cronologia unione e sì - gerarchia delle diramazioni. Questa funzionalità di Destroy è stata introdotta in TFS 2008.
  • Destroy è l'unica operazione consentita per modificare la tabella di cronologia di unione (da cui vengono determinate le relazioni di diramazione). Tutte le altre operazioni sono strettamente append-only.
  • TfsDeleteProject fa del suo meglio per rimuovere completamente tutte le tracce di un progetto, con l'obiettivo principale di consentire la creazione di un nuovo progetto con lo stesso nome. Alcuni sottosistemi TFS supportano le eliminazioni fisiche; alcuni, come i metadati del campo WIT, supportano solo le eliminazioni logiche, anche in TFS 2008 & oltre. Nel caso del controllo del codice sorgente, TfsDeleteProject richiama "delete" nel 2005 e "destroy" nel 2008+.
8

Selezionare la cartella di diramazione che si desidera escludere. quindi File > Source Control > Branching and Merging > Convert to Folder.

+1

Non ho questa opzione. Quale versione di VS e TFS stai usando? – Codesleuth

+2

Questa è solo un'opzione se hai convertito una cartella in un ramo e desideri riconvertirlo in una cartella. I rami (non le conversioni) devono essere distrutti dalla riga di comando usando il comando "tf destroy". –

3

In VS2013 non ho potuto trovare sotto @Radhika risposta

ho trovato sotto Team Explorer > Source Control Explorer > right mouse on project > Branching and Merging > Convert to folder

enter image description here

Spero che questo consente di risparmiare tempo.

+0

Si noti che è necessario eseguire l'operazione "Ottieni l'ultima versione" dopo la conversione, prima che l'opzione "Elimina" sia abilitata. – DdW

Problemi correlati