Migrare branch distribuite da Git a TFS con Git-Tf

Se dovete migrare un grosso repository Git a Team Foundation Server, e’ molto probabile che vi scontrerete contro uno dei problemi piu’ comuni quandi si migra un DVCS verso un centralizzato: capire il ciclo di vita delle branch.

Brevemente, in un DVCS non si ha il concetto di branch che si trova in un VCS come quello di TFS, a causa della natura distribuita, che tende ad avere un numero di branch maggiore, e che permette relazioni fra le branch differenti [molti parent per un’unica child]. Questa struttura non e’ migrabile in Team Foundation Server, che e’ invece un VCS centralizzato e gerarchico.

Si puo’ raggiungere un buon compromesso utilizzando Git-Tf, il tool Microsoft per migrare Git a Team Foundation Server. Dopo aver configurato il repository, si deve eseguire il comando git-tf checkin –deep per replicare ogni changeset invece di un grosso unico commit. Ma si otterra’ un errore:

image

Ecco cosa intendo: se si hanno piu’ parent per una branch figlia,  non si puo’ replicare in Team Foundation Server. Se si effettua un rebase, si modifica la history, e quindi non sarebbe molto corretto da un punto di vista di fedelta’ del dato

Quindi? Si deve utilizzare il comando –autosquash, che andra’ a creare una storia lineare senza modificarla. Come? Analizza le HEAD revision per trovare quella piu’ “vicina” alla branch parent gerarchica. Ovviamente non tutte le gerarchie possono essere replicate da Git a TFS, ma questa soluzione permette un buon livello di fedelta’ alla soluzione originale.

Comments are closed.