Skillnad mellan versioner av "CVS och SVN"

Från Lysators datorhandbok, den ultimata referensen.
Hoppa till navigering Hoppa till sök
m (Men åtta bitar ska vi väl ha, dumma firefox.)
(Fogade in gitmigreringsinstruktioner)
 
(14 mellanliggande sidversioner av 6 användare visas inte)
Rad 1: Rad 1:
CVS är ett väldigt användbart verktyg. På denna sida beskrivs hur du
+
CVS är ett väldigt användbart verktyg. SVN är nyare. På denna sida beskrivs hur du
använder det Lysator.
+
använder versionshantering hos Lysator.
   
<H2>Det gamla sättet, /lysator/cvsroot</H2>
+
==Det gamla sättet, /lysator/cvsroot==
   
 
Sedan länge finns en cvsroot som alla Lysiter på ett någorlunda enkelt
 
Sedan länge finns en cvsroot som alla Lysiter på ett någorlunda enkelt
 
sätt kan skapa ett repository i. Problemet med den lösningen är att
 
sätt kan skapa ett repository i. Problemet med den lösningen är att
 
endast Lysiter kan komma åt den, och anonym access är inte möjlig.
 
endast Lysiter kan komma åt den, och anonym access är inte möjlig.
  +
<P>
 
 
Hur man i detalj använder /lysator/cvsroot beskrivs inte på denna
 
Hur man i detalj använder /lysator/cvsroot beskrivs inte på denna
 
oebbsida.
 
oebbsida.
   
<H2>Det nya sättet, lysCVS</H2>
+
==Det nyare sättet, LysCVS och LSVN==
   
Eftersom det verkade finnas ett behov av cvs-repository där man dels
+
Eftersom det verkade finnas ett behov av ett repository där man dels
 
kan ha med icke-Lysiter som utvecklare, och dels tillåta anonym
 
kan ha med icke-Lysiter som utvecklare, och dels tillåta anonym
 
access, utvecklades sommaren 2001 en lösning som tillåter detta.
 
access, utvecklades sommaren 2001 en lösning som tillåter detta.
<P>
 
Lösningen finns att beskåda bland annat i form av <a
 
href="http://cvs.lysator.liu.se">http://cvs.lysator.liu.se</a>.
 
Lösningen går under namnet <b>LysCVS</b>.
 
<P>
 
LysCVS har ett oebbaserat administrationsinterface där du själv som
 
vanlig användare kan skapa projekt, lägga till användare till detta
 
och så vidare. Nedan beskrivs hur du gör.
 
   
  +
Sedan dess har även stöd för SVN dykt upp.
<H3>Att skapa nya projekt i LysCVS</H3>
 
   
  +
Men nu är denna lösning under avveckling. Du rekommenderas att använda [[Git]] i stället.
LysCVS bygger på konceptet <i>projekt</i>. Varje projekt har en egen
 
  +
CVSROOT och kan ha flera CVS-moduler. Det går bra att ha samma namn på
 
  +
Lösningen går under namnen '''LysCVS/LSVN''' och finns att beskåda bland annat i form av http://cvs.lysator.liu.se/.
en modul och projektet som modulen tillhör.
 
  +
<P>
 
  +
LysCVS/LSVN har ett oebbaserat administrationsinterface där du själv som vanlig användare kan skapa projekt, lägga till användare till detta och så vidare. Nedan beskrivs hur du gör.
Peka din webläsare på <a
 
  +
href="https://admin.lysator.liu.se">https://admin.lysator.liu.se/</a>
 
  +
och logga in med ditt vanliga Lysatorlogin och -lösen. Du kommer nu
 
  +
===Att skapa nya projekt i LysCVS och LSVN===
till en huvudsida där du kan se vilka projekt du är medlem i och/eller
 
  +
  +
LysCVS / LSVN bygger på konceptet <i>projekt</i>, som kan vara av typen cvs eller svn.
  +
Varje cvs-projekt har en egen CVSROOT och kan ha flera CVS-moduler.
  +
Det går bra att ha samma namn på en modul och projektet som modulen tillhör.
  +
  +
Peka din webläsare på https://admin.lysator.liu.se/
  +
och logga in med ditt vanliga Lysatorlogin och -lösen. Klicka på LysCVS/LSVN så får du upp
  +
en huvudsida där du kan se vilka projekt du är medlem i och/eller
 
administratör för.
 
administratör för.
  +
<P>
 
 
För att skapa ett nytt projekt använder du menyalternativet "New
 
För att skapa ett nytt projekt använder du menyalternativet "New
Project" i menyn till vänster. Skriv vad du vill att ditt projekt ska
+
Project" i menyn till vänster. Välj om du vill använda cvs, eller det nyare svn.
  +
Skriv vad du vill att ditt projekt ska
 
heta, och tryck på knappen märkt "Create!". Ditt projekt är nu skapat.
 
heta, och tryck på knappen märkt "Create!". Ditt projekt är nu skapat.
<P>
 
<B>OBSERVERA att det tar en stund, i nuläget maximalt en kvart, innan
 
ditt projekt går att använda</B>
 
   
  +
'''OBSERVERA att det tar en stund, i nuläget maximalt en kvart, innan
<H4>Att börja använda det nyligen skapade projektet</H4>
 
  +
ditt projekt går att använda'''
  +
  +
====Att börja använda det nyligen skapade projektet (cvs)====
   
 
Enklast är att använda <code>cvs import</code>. Säg att du nyss har
 
Enklast är att använda <code>cvs import</code>. Säg att du nyss har
skapat projektet <i>foo</i> i lysCVS. Vidare har du ett gäng filer som
+
skapat projektet ''foo'' i lysCVS. Vidare har du ett gäng filer som
ska finnas i foo, de existerar i katalogen <i>/home/xyzzy/bar</i>. Du
+
ska finnas i foo, de existerar i katalogen ''/home/xyzzy/bar''. Du
vill att filerna ska hamna i katalogen <i>gazonk</i> under cvsrooten
+
vill att filerna ska hamna i katalogen ''gazonk'' under cvsrooten
för <i>foo</i> I så fall gör du ungefär såhär:
+
för ''foo'' I så fall gör du ungefär såhär:
 
<pre>
 
<pre>
 
$ cd /home/xyzzy/bar
 
$ cd /home/xyzzy/bar
 
$ export CVS_RSH=ssh
 
$ export CVS_RSH=ssh
$ cvs -d &lt;username&gt;@cvs.lysator.liu.se:/cvsroot/foo import gazonk &lt;username&gt start;
+
$ cvs -d &lt;username&gt;@cvs.lysator.liu.se:/cvsroot/foo import gazonk &lt;username&gt; start;
 
</pre>
 
</pre>
   
De två sista argumenten är egentligen <i>vendor</i> och <i>tag</i>, så
+
De två sista argumenten är egentligen ''vendor'' och ''tag'', så
 
du kan hitta på nått bättre än ditt användarnamn och "start" om du så
 
du kan hitta på nått bättre än ditt användarnamn och "start" om du så
 
önskar.
 
önskar.
  +
<P>
 
 
Nu kan du, från en annan katalog, checka ut dina filer med <pre>
 
Nu kan du, från en annan katalog, checka ut dina filer med <pre>
 
cvs -d &lt;username&gt;@cvs.lysator.liu.se:/cvsroot/foo co gazonk
 
cvs -d &lt;username&gt;@cvs.lysator.liu.se:/cvsroot/foo co gazonk
 
</pre>
 
</pre>
<H3>Att lägga till nya användare i ett projekt</H3>
 
   
  +
====Att börja använda det nyligen skapade projektet (svn)====
För att möjliggöra <B>skrivaccess</B> för andra än dig själv lägger du
 
  +
Protokollet som stöds heter svn+ssh.
  +
'''OBS: Det sägs vara normalt att behöva ange lösenord flera gånger i rad (ungefär 3) med svn+ssh'''
  +
  +
Kör
  +
svn co svn+ssh://<username>@lsvn.lysator.liu.se/svnroot/<projektnamn>
  +
för att checka ut ditt projekt.
  +
Ta reda på mer om svn med
  +
svn help
  +
eller leta upp dokumentationen på oebben.
  +
  +
===Att lägga till nya användare i ett projekt===
  +
  +
För att möjliggöra '''skrivaccess''' för andra än dig själv lägger du
 
till användare till dina projekt.
 
till användare till dina projekt.
  +
<P>
 
 
Gå till huvudsidan och klicka på länken märkt "administrate" för det
 
Gå till huvudsidan och klicka på länken märkt "administrate" för det
 
projekt du vill lägga till en användare till. Skriv mailadressen för
 
projekt du vill lägga till en användare till. Skriv mailadressen för
 
användaren i rutan, och tryck "Add".
 
användaren i rutan, och tryck "Add".
  +
<P>
 
 
Om det är en Lysatoranvändare du lägger till är det inget mer du
 
Om det är en Lysatoranvändare du lägger till är det inget mer du
 
behöver göra, för då finns redan alla uppgifter i NIS. Om det är en
 
behöver göra, för då finns redan alla uppgifter i NIS. Om det är en
 
extern (icke-Lysit) du vill lägga till får du fylla i riktigt namn och
 
extern (icke-Lysit) du vill lägga till får du fylla i riktigt namn och
användarnamn på personen ifråga. <B>OBSERVERA att användarnamnet måste
+
användarnamn på personen ifråga. '''OBSERVERA att användarnamnet måste
börja på <i>_cvs_</i>. Detta för att skydda Lysators
+
börja på ''_cvs_''. Detta för att skydda Lysators
namnrymd</B>. Den externa personen får ett mail med instruktioner om
+
namnrymd'''. Den externa personen får ett mail med instruktioner om
 
inloggningsnamn och lösenord - ett automatgenererat lösenord som är
 
inloggningsnamn och lösenord - ett automatgenererat lösenord som är
 
fult som stryk.
 
fult som stryk.
  +
<P>
 
<B>Även här tar det en kvart innan användaren kan använda cvs över
+
'''Även här tar det en kvart innan användaren kan använda cvs över
ssh.</B> Däremot kan hen logga in i cvsadministrationssystemet, exempelvis
+
ssh.''' Däremot kan hen logga in i cvsadministrationssystemet, exempelvis
 
för att byta lösenord eller lägga till SSH-nycklar.
 
för att byta lösenord eller lägga till SSH-nycklar.
   
<H3>Att ta bort användare i ett projekt</H3>
+
===Att ta bort användare i ett projekt===
 
Gå in på administrationssidan för ett projekt och tryck på
 
Gå in på administrationssidan för ett projekt och tryck på
 
"Remove"-knappen för den användare du inte vill ha kvar i ditt
 
"Remove"-knappen för den användare du inte vill ha kvar i ditt
Rad 92: Rad 105:
 
repositoryt. Däremot finns användaren kvar i systemet, så du kan
 
repositoryt. Däremot finns användaren kvar i systemet, så du kan
 
enkelt lägga till henom igen.
 
enkelt lägga till henom igen.
<P>
 
<B>OBSERVERA att det går utmärkt att ta bort sig själv, och då blir
 
det svårt..</B>
 
   
  +
'''OBSERVERA att det går utmärkt att ta bort sig själv, och då blir
<H3>Att bestämma vem som får administrera ett projekt</H3>
 
  +
det svårt...'''
  +
  +
===Att bestämma vem som får administrera ett projekt===
 
Du kan låta andra (även externa användare) bestämma vem som får lägga
 
Du kan låta andra (även externa användare) bestämma vem som får lägga
 
till/ta bort användare och huruvida projektet finns tillgängligt
 
till/ta bort användare och huruvida projektet finns tillgängligt
Rad 102: Rad 115:
 
administration rights" för personen.
 
administration rights" för personen.
   
<H3>Att tillåta/otillåta anonym access till projektet</H3>
+
===Att tillåta/otillåta anonym access till projektet===
 
På administrationssidan för projektet finns en toggle-knapp för att
 
På administrationssidan för projektet finns en toggle-knapp för att
 
bestämma om det ska gå att komma åt projektet med pserver anonymt. Om
 
bestämma om det ska gå att komma åt projektet med pserver anonymt. Om
så är fallet visas den CVSROOT som ska användas i så fall.
+
så är fallet visas den CVSROOT som ska användas i så fall, vilket kommer att vara <tt>:pserver:anonymous@cvs.lysator.liu.se:/cvsroot/&lt;projekt&gt;</tt>.
  +
<P>
 
 
Med pserver måste man logga in först - det gör man med ett tomt
 
Med pserver måste man logga in först - det gör man med ett tomt
 
lösenord (enter vid lösenordsfrågan, liksom).
 
lösenord (enter vid lösenordsfrågan, liksom).
  +
<P>
 
<B>OBSERVERA att det tar en kvart innan projektet är åtkomligt
+
'''OBSERVERA att det tar en kvart innan projektet är åtkomligt
anonymt</B>. Däremot blir projektet oåtkomligt så fort du togglar
+
anonymt'''. Däremot blir projektet oåtkomligt så fort du togglar
 
tillbaka. Fråga inte.
 
tillbaka. Fråga inte.
   
<H3>Att tillåta/otillåta webaccess till projektet</H3>
+
===Att tillåta/otillåta webaccess till projektet===
 
Liksom du kan bestämma om projektet ska vara anonymt åtkombart med
 
Liksom du kan bestämma om projektet ska vara anonymt åtkombart med
 
pserver så kan du bestämma om projektet ska vara åtkombart med
 
pserver så kan du bestämma om projektet ska vara åtkombart med
Rad 120: Rad 133:
 
"ViewCVS access". Ändringen får omedelbar effekt.
 
"ViewCVS access". Ändringen får omedelbar effekt.
   
<H3>Att lägga till SSH-nycklar</H3>
+
===Att lägga till SSH-nycklar===
   
 
Det är rätt tradigt att behöva skriva in sitt lösenord var gång man
 
Det är rätt tradigt att behöva skriva in sitt lösenord var gång man
 
ska utföra ett cvs-kommando. Därför användar man med fördel
 
ska utföra ett cvs-kommando. Därför användar man med fördel
 
ssh-nycklar, gärna i kombination med ssh-agent. För att se hur man gör
 
ssh-nycklar, gärna i kombination med ssh-agent. För att se hur man gör
detta på Lysator läs <a href="/local/datorhandbok/ssh.html">här</a>.
+
detta på Lysator läs [[SSH]].
  +
<P>
 
 
Eftersom du varken som vanlig användare eller extern dito kommer åt
 
Eftersom du varken som vanlig användare eller extern dito kommer åt
 
CVS-burken med ett vanligt skal läggs sådana nycklar till genom att
 
CVS-burken med ett vanligt skal läggs sådana nycklar till genom att
 
välja "Edit SSH keys" och klistra in de nycklar du vill ha. Servern
 
välja "Edit SSH keys" och klistra in de nycklar du vill ha. Servern
 
stödjer enbart ssh v2.
 
stödjer enbart ssh v2.
  +
<P>
 
 
Anledningen till att även Lysatoranvändare måste lägga till sina
 
Anledningen till att även Lysatoranvändare måste lägga till sina
 
nycklar på detta sätt är att CVS-servern av säkerhetsskäl ej monterar
 
nycklar på detta sätt är att CVS-servern av säkerhetsskäl ej monterar
 
Lysators vanliga NFS-namnrymd.
 
Lysators vanliga NFS-namnrymd.
  +
<P>
 
<B>Även här tar det en kvart innan du kan logga in med din nyckel</B>.
+
'''Även här tar det en kvart innan du kan logga in med din nyckel'''.
  +
<P>
 
Ett annat sätt att slippa skriva lösenord varje gång är att använda <a
+
Ett annat sätt att slippa skriva lösenord varje gång är att använda [http://www.lysator.liu.se/~nisse Niels Möllers]
href="http://www.lysator.liu.se/~nisse">Niels Möllers</a> <a
+
[http://www.lysator.liu.se/~nisse/lsh lsh] i
href="http://www.lysator.liu.se/~nisse/lsh">lsh</A> i
 
 
"Gateway-mode". Dvs, på din dator exekverar du
 
"Gateway-mode". Dvs, på din dator exekverar du
 
<pre>
 
<pre>
Rad 148: Rad 160:
 
till "lshg". Klart!
 
till "lshg". Klart!
   
<H3>Logga ut</H3>
+
===Logga ut===
   
 
Hur svårt kan det vara? :-)
 
Hur svårt kan det vara? :-)
  +
<P>
 
 
Du blir automatiskt utloggad om du inte gör någonting på en kvart.
 
Du blir automatiskt utloggad om du inte gör någonting på en kvart.
   
<H3>Att överföra gamla repositories</H3>
+
===Att överföra gamla repositories===
   
 
Jodå, det går. Fast inte utan interaktion av en root. Skapa först projektet i lysCVS. Packa sedan ihop ditt repository i en tarboll och tala om var den finns för rötterna så ska vi nog kunna ordna den saken.
 
Jodå, det går. Fast inte utan interaktion av en root. Skapa först projektet i lysCVS. Packa sedan ihop ditt repository i en tarboll och tala om var den finns för rötterna så ska vi nog kunna ordna den saken.
   
<H3>Framtida planer</H3>
+
===Framtida planer===
   
 
Umm.. Inga direkta just nu. Kom gärna med förslag!
 
Umm.. Inga direkta just nu. Kom gärna med förslag!
   
<H3>Information om systemet</H3>
+
===Information om systemet===
LysCVS består av en kombination av vanligt förekommande fri
+
LysCVS består av en kombination av vanligt förekommande fri programvara samt ett gäng lokalt utvecklade hack. Bland annat används:
  +
programvara samt ett gäng lokalt utvecklade hack. Bland annat används:
 
  +
*[http://httpd.apache.org Apache]
  +
*[http://www.mysql.com MySQL]
  +
*[http://www.modpython.org mod_python]
  +
*[http://www.cvshome.org CVS]
  +
*[http://sourceforge.net/projects/nss-mysql nss_mysql]
  +
*[http://viewcvs.sourceforge.net/ ViewCVS]
  +
*[http://www.postfix.org/ Postfix]
  +
*[http://www.mozilla.org/projects/bugzilla/ Bugzilla]
  +
  +
Den lokalt utvecklade programvaran är mestadels utvecklad av
  +
[http://www.lysator.liu.se/~forsberg/ Erik Forsberg] och finns att
  +
hämta [http://www.lysator.liu.se/~forsberg/hacks/lyscvs här].
  +
  +
==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.
<ul>
 
  +
git push -u origin --all # Publicera alla grenar (utom origin som vi just tog bort).
<li><a href="http://httpd.apache.org">Apache</A>
 
  +
git push origin --tags # Publicera alla taggar.</pre>
<li><a href="http://www.mysql.com">MySQL</A>
 
<li><a href="http://www.modpython.org">mod_python</A>
 
<li><a href="http://www.cvshome.org">CVS</A>
 
<li><a href="http://sourceforge.net/projects/nss-mysql">nss_mysql</A>
 
<li><a href="http://viewcvs.sourceforge.net/">ViewCVS</a>
 
<li><a href="http://www.postfix.org/">Postfix</a>
 
<li><a href="http://www.mozilla.org/projects/bugzilla/">Bugzilla</A>
 
   
  +
[[Kategori:Instruktioner]]
</ul>
 
Den lokalt utvecklade programvaran är mestadels utvecklad av <A HREF="http://www.lysator.liu.se/~forsberg/">Erik Forsberg</A> och
 
finns att hämta <a href="http://www.lysator.liu.se/~forsberg/hacks/lyscvs">här</a>
 
<P>
 
Hård och operativsystemsmässigt är burken ifråga för tillfället en
 
Dell PowerEdge 6100/200 (stalingrad) med 2 st 200 MHz Pentium Pro och 256 MiB
 
minne. Inte världens snabbaste maskin, men den är stabil, den har bra
 
diskutbyggnadsmöjligheter och den har en tvillingsyster att plocka
 
reservdelar från. Maskinen kör <a href="http://www.debian.org">Debian
 
GNU/Linux</a>.
 
<p>
 
Maskinen speglar sina diskar med Linux mjukvaru-RAID, och backup tas
 
en gång per dygn via Lysators vanliga backuprutiner.
 

Nuvarande version från 5 november 2021 kl. 22.59

CVS är ett väldigt användbart verktyg. SVN är nyare. På denna sida beskrivs hur du använder versionshantering hos Lysator.

Det gamla sättet, /lysator/cvsroot

Sedan länge finns en cvsroot som alla Lysiter på ett någorlunda enkelt sätt kan skapa ett repository i. Problemet med den lösningen är att endast Lysiter kan komma åt den, och anonym access är inte möjlig.

Hur man i detalj använder /lysator/cvsroot beskrivs inte på denna oebbsida.

Det nyare sättet, LysCVS och LSVN

Eftersom det verkade finnas ett behov av ett repository där man dels kan ha med icke-Lysiter som utvecklare, och dels tillåta anonym access, utvecklades sommaren 2001 en lösning som tillåter detta.

Sedan dess har även stöd för SVN dykt upp.

Men nu är denna lösning under avveckling. Du rekommenderas att använda Git i stället.

Lösningen går under namnen LysCVS/LSVN och finns att beskåda bland annat i form av http://cvs.lysator.liu.se/.

LysCVS/LSVN har ett oebbaserat administrationsinterface där du själv som vanlig användare kan skapa projekt, lägga till användare till detta och så vidare. Nedan beskrivs hur du gör.


Att skapa nya projekt i LysCVS och LSVN

LysCVS / LSVN bygger på konceptet projekt, som kan vara av typen cvs eller svn. Varje cvs-projekt har en egen CVSROOT och kan ha flera CVS-moduler. Det går bra att ha samma namn på en modul och projektet som modulen tillhör.

Peka din webläsare på https://admin.lysator.liu.se/ och logga in med ditt vanliga Lysatorlogin och -lösen. Klicka på LysCVS/LSVN så får du upp en huvudsida där du kan se vilka projekt du är medlem i och/eller administratör för.

För att skapa ett nytt projekt använder du menyalternativet "New Project" i menyn till vänster. Välj om du vill använda cvs, eller det nyare svn. Skriv vad du vill att ditt projekt ska heta, och tryck på knappen märkt "Create!". Ditt projekt är nu skapat.

OBSERVERA att det tar en stund, i nuläget maximalt en kvart, innan ditt projekt går att använda

Att börja använda det nyligen skapade projektet (cvs)

Enklast är att använda cvs import. Säg att du nyss har skapat projektet foo i lysCVS. Vidare har du ett gäng filer som ska finnas i foo, de existerar i katalogen /home/xyzzy/bar. Du vill att filerna ska hamna i katalogen gazonk under cvsrooten för foo I så fall gör du ungefär såhär:

$ cd /home/xyzzy/bar
$ export CVS_RSH=ssh
$ cvs -d <username>@cvs.lysator.liu.se:/cvsroot/foo import gazonk <username> start;

De två sista argumenten är egentligen vendor och tag, så du kan hitta på nått bättre än ditt användarnamn och "start" om du så önskar.

Nu kan du, från en annan katalog, checka ut dina filer med

cvs -d <username>@cvs.lysator.liu.se:/cvsroot/foo co gazonk

Att börja använda det nyligen skapade projektet (svn)

Protokollet som stöds heter svn+ssh. OBS: Det sägs vara normalt att behöva ange lösenord flera gånger i rad (ungefär 3) med svn+ssh

Kör

svn co svn+ssh://<username>@lsvn.lysator.liu.se/svnroot/<projektnamn>

för att checka ut ditt projekt. Ta reda på mer om svn med

svn help

eller leta upp dokumentationen på oebben.

Att lägga till nya användare i ett projekt

För att möjliggöra skrivaccess för andra än dig själv lägger du till användare till dina projekt.

Gå till huvudsidan och klicka på länken märkt "administrate" för det projekt du vill lägga till en användare till. Skriv mailadressen för användaren i rutan, och tryck "Add".

Om det är en Lysatoranvändare du lägger till är det inget mer du behöver göra, för då finns redan alla uppgifter i NIS. Om det är en extern (icke-Lysit) du vill lägga till får du fylla i riktigt namn och användarnamn på personen ifråga. OBSERVERA att användarnamnet måste börja på _cvs_. Detta för att skydda Lysators namnrymd. Den externa personen får ett mail med instruktioner om inloggningsnamn och lösenord - ett automatgenererat lösenord som är fult som stryk.

Även här tar det en kvart innan användaren kan använda cvs över ssh. Däremot kan hen logga in i cvsadministrationssystemet, exempelvis för att byta lösenord eller lägga till SSH-nycklar.

Att ta bort användare i ett projekt

Gå in på administrationssidan för ett projekt och tryck på "Remove"-knappen för den användare du inte vill ha kvar i ditt projekt. Användaren kan nu inte längre skriva eller läsa repositoryt. Däremot finns användaren kvar i systemet, så du kan enkelt lägga till henom igen.

OBSERVERA att det går utmärkt att ta bort sig själv, och då blir det svårt...

Att bestämma vem som får administrera ett projekt

Du kan låta andra (även externa användare) bestämma vem som får lägga till/ta bort användare och huruvida projektet finns tillgängligt anonymt. Gå in på administrationssidan för projektet och tryck på "toggle administration rights" för personen.

Att tillåta/otillåta anonym access till projektet

På administrationssidan för projektet finns en toggle-knapp för att bestämma om det ska gå att komma åt projektet med pserver anonymt. Om så är fallet visas den CVSROOT som ska användas i så fall, vilket kommer att vara :pserver:anonymous@cvs.lysator.liu.se:/cvsroot/<projekt>.

Med pserver måste man logga in först - det gör man med ett tomt lösenord (enter vid lösenordsfrågan, liksom).

OBSERVERA att det tar en kvart innan projektet är åtkomligt anonymt. Däremot blir projektet oåtkomligt så fort du togglar tillbaka. Fråga inte.

Att tillåta/otillåta webaccess till projektet

Liksom du kan bestämma om projektet ska vara anonymt åtkombart med pserver så kan du bestämma om projektet ska vara åtkombart med ViewCVS, en web-cvs-frontända. Det gör du genom att toggla knappen för "ViewCVS access". Ändringen får omedelbar effekt.

Att lägga till SSH-nycklar

Det är rätt tradigt att behöva skriva in sitt lösenord var gång man ska utföra ett cvs-kommando. Därför användar man med fördel ssh-nycklar, gärna i kombination med ssh-agent. För att se hur man gör detta på Lysator läs SSH.

Eftersom du varken som vanlig användare eller extern dito kommer åt CVS-burken med ett vanligt skal läggs sådana nycklar till genom att välja "Edit SSH keys" och klistra in de nycklar du vill ha. Servern stödjer enbart ssh v2.

Anledningen till att även Lysatoranvändare måste lägga till sina nycklar på detta sätt är att CVS-servern av säkerhetsskäl ej monterar Lysators vanliga NFS-namnrymd.

Även här tar det en kvart innan du kan logga in med din nyckel.

Ett annat sätt att slippa skriva lösenord varje gång är att använda Niels Möllers lsh i "Gateway-mode". Dvs, på din dator exekverar du

lsh -G -N -l <användarnamn> cvs.lysator.liu.se

och skriver in ditt lösenord. Sen sätter du miljövariabeln CVS_RSH till "lshg". Klart!

Logga ut

Hur svårt kan det vara? :-)

Du blir automatiskt utloggad om du inte gör någonting på en kvart.

Att överföra gamla repositories

Jodå, det går. Fast inte utan interaktion av en root. Skapa först projektet i lysCVS. Packa sedan ihop ditt repository i en tarboll och tala om var den finns för rötterna så ska vi nog kunna ordna den saken.

Framtida planer

Umm.. Inga direkta just nu. Kom gärna med förslag!

Information om systemet

LysCVS består av en kombination av vanligt förekommande fri programvara samt ett gäng lokalt utvecklade hack. Bland annat används:

Den lokalt utvecklade programvaran är mestadels utvecklad av Erik Forsberg och finns att hämta här.

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 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.