Close

Synchronize Git repositories

Het is heel eenvoudig om je Git-repository te synchroniseren met nieuwe commits in de oorspronkelijke SVN-repository. Dit zorgt voor een comfortabele transitie in het migratieproces waarin je je bestaande SVN-workflow kunt blijven gebruiken, maar kunt beginnen te experimenteren met Git.

Het is mogelijk om in beide richtingen te synchroniseren. We raden echter een synchronisatie in een richting van SVN naar Git aan. Tijdens je transitie moet je alleen een commit maken naar je SVN-repository, niet naar je Git-repository. Als je er zeker van bent dat je team klaar is om over te stappen, kun je het migratieproces voltooien en beginnen met het committen van wijzigingen naar Git in plaats van SVN.

Git-migratie: we raden een synchronisatie in één richting van SVN naar Git aan.

In de tussentijd moet je doorgaan met het maken van commits naar je SVN-repository en je Git-repository synchroniseren wanneer dat nodig is. Dit proces is vergelijkbaar met de conversiefase, maar aangezien je slechts met incrementele wijzigingen te maken hebt, zou het veel efficiënter moeten zijn.


Het auteursbestand bijwerken


Het bestand authors.txt dat we hebben gebruikt om SVN-gebruikersnamen toe te wijzen aan volledige namen en e-mailadressen is essentieel voor het synchronisatieproces. Als het vanuit de locatie ~/GitMigration/authors.txt die we tot nu toe hebben gebruikt is verplaatst, moet je de locatie bijwerken met:

git config svn.authorsfile 

Als nieuwe ontwikkelaars zich sinds de laatste synchronisatie (of de eerste kloon) hebben ingezet op de SVN-repository, moet het bestand van de auteur dienovereenkomstig worden bijgewerkt. Je kunt dit doen door handmatig nieuwe gebruikers toe te voegen aan authors.txt, maar je kunt ook de optie --authors-prog gebruiken die in de volgende sectie wordt besproken.

Voor eenmalige synchronisaties is het vaak gemakkelijker om het auteursbestand rechtstreeks te bewerken. De optie --authors-prog heeft echter de voorkeur als je synchronisaties zonder toezicht uitvoert (d.w.z. bij een geplande taak).

Databases
gerelateerd materiaal

Een volledige Git-repository verplaatsen

Logo Bitbucket
Oplossing bekijken

Git leren met Bitbucket Cloud

Automatisch Git-auteurs genereren


Als je auteursbestand niet bijgewerkt hoeft te worden, kun je doorgaan naar de volgende sectie.

De opdracht git svn bevat een optie genaamd --authors-prog, die verwijst naar een script dat SVN-gebruikersnamen automatisch omzet in Git-auteurs. Je moet dit script zo configureren dat je de gebruikersnaam van SVN als enige argument accepteert en dat je één regel retourneert in de vorm van Name (net zoals de rechterkant van het bestand van de bestaande auteur). Deze optie kan erg handig zijn als je regelmatig nieuwe ontwikkelaars aan je project moet toevoegen.

Als je de optie --authors-prog wilt gebruiken, moet je een bestand met de naam authors.sh gebruiken in ~/GitMigration. Voeg de volgende regel toe aan authors.sh om een vervangende Git-naam en dito e-mailadres terug te geven voor alle auteurs die niet in authors.txt voorkomen:

echo "$1 <$1@example.com>"

Dit genereert, ik herhaal het maar even, alleen een dummy-naam en e-mailadres op basis van de gebruikersnaam van de SVN. Wijzig die dus gerust als je een zinvollere toewijzing kunt maken.

De nieuwe SVN-commits ophalen


In tegenstelling tot SVN maakt Git een onderscheid tussen het downloaden van upstream-commits en het integreren ervan in het project. Het eerste heet 'ophalen' ('fetching'), terwijl het laatste kan worden gedaan door samen te voegen of te rebasen. Voer in de map ~/GitMigration de volgende opdracht uit om eventuele nieuwe commits uit de oorspronkelijke SVN-repository op te halen.

git svn fetch

Dit is vergelijkbaar met de opdracht git svn clone uit de vorige fase, omdat hiermee alleen de externe branches van de Git-repository worden bijgewerkt. De lokale branches geven nog geen updates weer. Je externe branches moeten daarentegen exact overeenkomen met de geschiedenis van je SVN-repo.

Als je de optie --authors-prog gebruikt, moet je die als volgt in de bovenstaande opdracht opnemen:

git svn fetch --authors-prog=authors.sh

Synchroniseren met de opgehaalde commits

Voer de volgende opdracht uit om de gedownloade commits toe te passen op de repository:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar sync-rebase

Hierdoor worden de opgehaalde commits ge-rebased naar je lokale branches, zodat ze overeenkomen met hun externe tegenhangers. Je zou nu de nieuwe commits moeten kunnen zien in je git log-output.

Ruim de Git-repo op (opnieuw)

Het is ook een goed idee om het script git-clean opnieuw uit te voeren om alle verouderde tags of branches te verwijderen die sinds de laatste synchronisatie uit de oorspronkelijke SVN-repository zijn verwijderd:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force

Je lokale Git-repository zou nu gesynchroniseerd moeten zijn met je SVN-repository.

Samenvatting


Tijdens deze transitie is het erg belangrijk dat je ontwikkelaars zich enkel toeleggen op de oorspronkelijke SVN-repository. De enige keer dat de Git-repository moet worden bijgewerkt, is via het synchronisatieproces dat hierboven is besproken. Dit is veel eenvoudiger dan het beheren van een synchronisatieworkflow in twee richtingen, maar het stelt je nog steeds in staat om Git te integreren in je ontwikkelingsproces.


Deel dit artikel
Volgend onderwerp

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Mensen die samenwerken met een muur vol tools

Bitbucket-blog

Toelichting DevOps

DevOps-leertraject

Demo Den Feature-demo's met Atlassian-experts

Hoe Bitbucket Cloud werkt met Atlassian Open DevOps

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up