2015-03-03 17 views
7

Domanda semplice, forse, ma una che ho difficoltà a trovare la risposta. Lavoro spesso in un client che utilizza TFS come controllo del codice sorgente e evitano completamente l'uso della funzione di fusione senza fondamento del controllo sorgente TFSDevo evitare fusioni senza fondamento in TFS?

In parte perché in passato richiedeva uno strumento da riga di comando per farlo, ma forse più importante perché quando lo fai ora nell'interfaccia, ti mostra un simbolo di avviso esclamativo giallo che stai effettivamente eseguendo un'unione senza base.

Questo tipo di spaventa e li evita del tutto. Ho cercato in giro per capire se ci sono rischi specifici coinvolti in fusioni senza fondamento, ma non riesco a scoprirlo (o dettagli su come le fusioni infondate funzionano sotto il cofano)

+1

Lasciami girare questa domanda: perché stai suggerendo che usano un'unione senza fondamento? Che aspetto ha la loro struttura di ramo che rende questa operazione comune per loro? –

+0

Bene, questo cliente usa una struttura di branching da Main a Dev to Patches dove capita abbastanza spesso che diverse patch sono in sviluppo allo stesso tempo ma non sono ancora pronte per essere unite a Dev, ma a volte può essere bello condividere tra i vari rami di patch man mano che vengono sviluppati. Ho pensato che avrei usato delle fusioni senza fondamento per questo. – Robba

risposta

4

Le fusioni senza fondamento dovrebbero essere evitate se per quanto possibile Quando fai una fusione senza fondamento, a differenza di un'unione, stai ignorando la cronologia di entrambe le parti. In effetti puoi unire due rami totalmente non correlati e che possono essere pericolosi.

La chiave è creare una strategia di ramificazione che consenta all'utente di utilizzare tale funzione.

+0

Sì, ho notato che quando ho provato a fare un'unione baseless che praticamente tutte le modifiche (se non solo tutte) generano un "conflitto di unione" e devono essere risolte manualmente, anche se è solo un ramo che contiene tutte le modifiche ... Sembra un'altra vittoria per Git se me lo chiedi ... – Robba

+1

Una "fusione senza fondamento", cioè un'unione a tre vie di due file senza un antenato comune (o "base"), significa che non puoi identificare quali regioni di un file sono nuove e quali sono comuni. Quindi produrrà conflitti in qualsiasi sistema, sia esso Git o TFVC. –

+2

"significa che non è possibile identificare quali regioni di un file sono nuove e quali sono comuni, quindi produrrà conflitti in qualsiasi sistema, sia esso Git o TFVC" Non esattamente vero. Il problema è che deve essere un genitore in TFSVC mentre git può davvero essere un antenato. –