Als je team haar versiebeheer uit TFVC naar Git gaat converteren, wil je de hoogst-betrouwbare conversie gebruiken die je maar kunt krijgen. Dit houdt in dat, hoewel we zowel git-tfs als git-tf in de samenwerkings-paragraaf hebben behandeld, zullen we hier alleen git-tfs behandelen, omdat git-tfs branches ondersteunt, en deze beperking het vrijwel onmogelijk maakt om git-tf hiervoor te gebruiken.
Note
|
Dit is een eenrichtings conversie. De Git repository die hier wordt aangemaakt kan geen verbinding meer leggen met het oorspronkelijk TFVC project. |
Het eerste om te doen is gebruikersnamen mappen.
TFVC is nogal ruimdenkend met wat er in het auteur veld gaat voor changesets, maar Git wil een voor de mens leesbare naam en email adres hebben.
Je kunt deze informatie als volgt van het tf
commando-regel client krijgen:
PS> tf history $/myproject -recursive > AUTHORS_TMP
Dit pakt alle changesets in de geschiedenis van het project en zet dit in het AUTHORS_TMP bestand die we verder gaan verwerken om de gegevens uit het 'User' kolom (de tweede) te halen.
Open het bestand en bekijk op welke karakter de kolom begint en eindigt en vervang, in de volgende commando-regel, de parameters 11-20
van het cut
commando met de waarden die jij gevonden hebt:
PS> cat AUTHORS_TMP | cut -b 11-20 | tail -n+3 | sort | uniq > AUTHORS
Het cut
commando behoudt alleen de karakters tussen 11 en 20 van elke regel.
Het tail
commando slaat de eerste twee regels over, die kolom-koppen en ASCII-art onderstrepingen zijn.
Het resultaat van dit alles wordt aan sort
en uniq
doorgegeven om duplicaten te verwijderen en bewaard in een bestand genaamd AUTHORS
.
De volgende stap is handmatig; om git-tfs van dit bestand gebruik te laten maken, moet elke regel in dit formaat staan:
DOMAIN\username = User Name <email@address.com>
Het gedeelte links is het ``User'' veld van TFVC, en het gedeelte rechts van het gelijk-teken is de gebruikersnaam die voor Git commits gaat worden gebruikt.
Als je dit bestand eenmaal hebt, is de volgende stap om te nemen een volledige kloon van het TFVC project waar je in bent geïnteresseerd te maken:
PS> git tfs clone --with-branches --authors=AUTHORS https://username.visualstudio.com/DefaultCollection $/project/Trunk project_git
Vervolgens wil je de git-tfs-id
gedeeltes aan het eind van de commit-berichten opschonen.
Het volgende commando gaat dit doen:
PS> git filter-branch -f --msg-filter 'sed "s/^git-tfs-id:.*$//g"' '--' --all
Dit gebruikt het sed
commando van de Git-bash omgeving om elke regel die begint met ``git-tfs-id:'' met leegte te vervangen, dit Git vervolgens dan zal negeren.
Als dit eenmaal gedaan is, ben je klaar om een nieuwe remote toe te voegen, al je branches te pushen, en je team is klaar om met Git te gaan werken.