Gitmigrering

Från Lysators datorhandbok, den ultimata referensen.
Hoppa till: navigering, sök

Om du idag har ett projekt som hostas på cvs.lysator.liu.se eller lsvn.lysator.liu.se måste du migrera det.

CVS -> Git

Det finns många sätt att konvertera från CVS till Git. Här beskriver jag "git cvsimport" som har en stor fördel: det fungerar även via nätverk, så man behöver inte ha hela CVS-arkivet på en lokalt åtkomlig disk. Det innebär att du kan använda den här metoden på egen hand, utan att behöva be root om hjälp.

Det finns några problem med den här metoden, som listas i manualsidan. Om arkivet är stort kan det också vara en långsam metod. Det finns andra metoder, t ex cvs2git som kräver direkt tillgång till filerna. Kontakta vid behov root, så kan vi kopiera filerna till din hemkatalog.

För de flesta arkiv på cvs.lysator.liu.se torde den här metoden fungera utmärkt.

Börja med att logga in på en av Lysators datorer, t ex faust som har all nödvändig programvara installerad. Checka ut koden. Här använder vi modulen accesslog som ett exempel:

cvs -d ceder@cvs.lysator.liu.se:/cvsroot/accesslog co accesslog
cd accesslog
cvs log | sed -n 's/^date: .* author: \([^;]*\);  state: .* lines:.*/\1/p'|uniq|sort|uniq>../accesslog.authors

Filen accesslog.authors innehåller nu en lista på alla användare som gjort en commit. Editera den, så att den översätter till det format som Git vill ha. Exempel:

ceder=Per Cederqvist <ceder@lysator.liu.se>
inge=Inge Wallin <inge@lysator.liu.se>

Kör sedan kommandot som gör själva konverteringen till Git:

git cvsimport -A ../accesslog.authors -R -k -C ../accesslog.git

Om allt gick bra har du nu ett Git-repository i ../accesslog.git. Följ instruktionerna nedan för att publicera det på git.lysator.liu.se.

Subversion -> Git

Instruktionerna på http://john.albin.net/git/convert-subversion-to-git ger ett bra resultat. Notera att access via http inte fungerar längre, men du kan komma åt ditt projekt med något i stil med:

svn co svn+ssh://ceder@lsvn.lysator.liu.se/svnroot/kernelwatch

Instruktionerna förutsätter att du använd en standardlayout med trunk, branches och tags. Men de ger en bra grund även om du gjort annorlunda.

Publicera Git-arkivet på git.lysator.liu.se

Logga in på https://git.lysator.liu.se/ och tryck på "New project"-knappen. Fyll i lämpliga värden. Om projektet är ett samarbetsprojekt kan det vara lämpligt att först skapa en grupp och ange den gruppen som "Namespace". Tryck på "Create project" när du fyllt i alla uppgifter.

Nu kommer det upp en sida där det under rubriken "Existing Git Repo?" står hur du gör för att publicera ditt repository. Följ instruktionerna:

cd ../accesslog.git
git remote add origin git@git.lysator.liu.se:ceder/accesslog.git
git push -u origin master

Om ditt projekt innehåller flera grenar och taggar som du vill publicera kan du ersätta den sista raden med:

git branch -d origin # git cvsimport skapar en extra gren som heter "origin".  Ta bort den -- det är samma sak som master.
git push -u origin --all # Publicera alla grenar (utom origin som vi just tog bort).
git push origin --tags # Publicera alla taggar.