Gitmigrering: Skillnad mellan sidversioner
Hoppa till navigering
Hoppa till sök
Ceder (diskussion | bidrag) (→Subversion -> Git: Länka till John Albins instruktioner.) |
Jaadu (diskussion | bidrag) (Länka till sidan med informationen) Märke: Ny omdirigering |
||
(En mellanliggande sidversion av en annan användare visas inte) | |||
Rad 1: | Rad 1: | ||
#REDIRECT [[CVS_och_SVN#Gitmigrering]] |
|||
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 [https://www.kernel.org/pub/software/scm/git/docs/git-cvsimport.html#issues listas i manualsidan]. Om arkivet är stort kan det också vara en långsam metod. Det finns andra metoder, t ex [http://cvs2svn.tigris.org/cvs2git.html 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: |
|||
<pre> |
|||
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 |
|||
</pre> |
|||
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: |
|||
<pre>ceder=Per Cederqvist <ceder@lysator.liu.se> |
|||
inge=Inge Wallin <inge@lysator.liu.se></pre> |
|||
Kör sedan kommandot som gör själva konverteringen till Git: |
|||
<pre>git cvsimport -A ../accesslog.authors -R -k -C ../accesslog.git</pre> |
|||
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: |
|||
<pre>svn co svn+ssh://ceder@lsvn.lysator.liu.se/svnroot/kernelwatch</pre> |
|||
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: |
|||
<pre>cd ../accesslog.git |
|||
git remote add origin git@git.lysator.liu.se:ceder/accesslog.git |
|||
git push -u origin master</pre> |
|||
Om ditt projekt innehåller flera grenar och taggar som du vill publicera kan du ersätta den sista raden med: |
|||
<pre>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.</pre> |
Nuvarande version från 6 november 2021 kl. 00.01
Omdirigering till: