2009-04-23 17 views
22

Questa domanda è un derivato di una domanda precedente: How to version resources that are shared across projectsCome ramo e si fondono in TFS

Ho un progetto che contiene il codice che viene consumato da molti altri progetti. In particolare, una cartella in questo progetto padre è stata ramificata in progetti figlio dipendenti.

Da allora abbiamo apportato modifiche al progetto principale e controllato. In Esplora controllo sorgente, faccio clic con il pulsante destro del mouse sulla cartella ramificata nel progetto principale e seleziona "Unisci", con l'intenzione di inviare le modifiche a un progetto dipendente. Seleziono il progetto figlio come destinazione e quindi seleziona "Ultima versione". La procedura guidata mi informa "Non ci sono modifiche da unire".

Dal mio punto di vista, questo non è vero, dal momento che i file aggiornati di recente sono chiaramente diversi.

C'è un malinteso fondamentale del processo di unione in TFS qui? Cosa devo fare in modo diverso?

risposta

17

Il motore di unione TFS si basa quasi interamente sulla cronologia, non sul contenuto dei file. Ciò lo rende efficiente per alberi di grandi dimensioni e flessibile per compiti come cambi di cherry-picking in sicurezza, ma rende anche la risposta alla tua domanda difficile.

Il primo passo è quello di capire i comandi di diagnostica storia tf, tf fonde, e tf merge/candidato. Ecco una buona introduzione: http://blogs.msdn.com/dstfs/archive/2009/04/15/a-note-on-merging-and-the-use-of-tf-merges-tf-merge.aspx

Se non si conosce la fusione & in TFS, la cronologia probabilmente non è molto complessa. Penso che probabilmente troverai la risposta con una semplice chiamata allo tf unisce. Tuttavia, la cronologia delle unioni di traccia può diventare estremamente complicata nel caso generale, quindi se hai problemi sentiti libero di postback con maggiori dettagli.

2

Passare a un file specifico che è stato modificato nel progetto "padre". Prova a unire solo quel file. Non controllare nulla in; guarda cosa succede

Qualcosa da tenere a bada: gli strumenti di unione non includono i file che sono stati aggiunti dopo il ramo. È necessario suddividere in modo esplicito i nuovi file prima di poter unire eventuali ulteriori modifiche. Se un file viene aggiunto a entrambe le cartelle padre e figlio senza utilizzare un'operazione di diramazione, gli strumenti di unione non li considerano come versioni dello stesso file (e non è possibile unire le modifiche tra di loro).

+0

Correzioni: * I file appena aggiunti non hanno una relazione di unione con altri rami finché non sono essi stessi ramificati = TRUE. (nota: può essere un "ramo, eliminare") * La soluzione alternativa è unire il file specifico = FALSE. Non funzionerà. La risposta corretta è unire un genitore che ha una relazione. * I file aggiunti a entrambi i rami in parallelo non si uniranno = FISSATO NEL 2008. Vedere # 1-2 da http://blogs.msdn.com/tfsvcs/archive/2007/05/22/orcas-merge-enhancements. aspx - ma nota che se il contenuto non corrisponde, sei bloccato con un conflitto di versione che non ha informazioni di "base"; la fusione sarà un dolore. –

Problemi correlati