Skillnad mellan versioner av "CVS och SVN"

Från Lysators datorhandbok, den ultimata referensen.
Hoppa till navigering Hoppa till sök
(orkar applicera väldigt små shellskript för att wikifiera)
 
(Fogade in gitmigreringsinstruktioner)
 
(15 mellanliggande versioner av 6 användare visas inte)
Rad 1: Rad 1:
CVS r ett vldigt anvndbart verktyg. P denna sida beskrivs hur du
+
CVS är ett väldigt användbart verktyg. SVN är nyare. På denna sida beskrivs hur du
anvnder det p Lysator.
+
använder versionshantering hos Lysator.
   
<H2>Det gamla sttet, /lysator/cvsroot</H2>
+
==Det gamla sättet, /lysator/cvsroot==
   
Sedan lnge finns en cvsroot som alla Lysiter p ett ngorlunda enkelt
+
Sedan länge finns en cvsroot som alla Lysiter ett någorlunda enkelt
stt kan skapa ett repository i. Problemet med den lsningen 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 mjlig.
+
endast Lysiter kan komma åt den, och anonym access är inte möjlig.
  +
<P>
 
Hur man i detalj anvnder /lysator/cvsroot beskrivs inte p denna
+
Hur man i detalj använder /lysator/cvsroot beskrivs inte denna
 
oebbsida.
 
oebbsida.
   
  +
==Det nyare sättet, LysCVS och LSVN==
<H2>Det nya sttet, lysCVS</H2>
 
   
Eftersom det verkade finnas ett behov av cvs-repository dr man dels
+
Eftersom det verkade finnas ett behov av ett repository där man dels
kan ha med icke-Lysiter som utvecklare, och dels tillta anonym
+
kan ha med icke-Lysiter som utvecklare, och dels tillåta anonym
access, utvecklades sommaren 2001 en lsning som tillter detta.
+
access, utvecklades sommaren 2001 en lösning som tillåter detta.
<P>
 
Lsningen finns att beskda bland annat i form av <a
 
href="http://cvs.lysator.liu.se">http://cvs.lysator.liu.se</a>.
 
Lsningen gr under namnet <b>LysCVS</b>.
 
<P>
 
LysCVS har ett oebbaserat administrationsinterface dr du sjlv som
 
vanlig anvndare kan skapa projekt, lgga till anvndare till detta
 
och s vidare. Nedan beskrivs hur du gr.
 
   
  +
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 gr bra att ha samma namn p
 
en modul och projektet som modulen tillhr.
 
<P>
 
Peka din weblsare p <a
 
href="https://admin.lysator.liu.se">https://admin.lysator.liu.se/</a>
 
och logga in med ditt vanliga Lysatorlogin och -lsen. Du kommer nu
 
till en huvudsida dr du kan se vilka projekt du r medlem i och/eller
 
administratr fr.
 
<P>
 
Fr att skapa ett nytt projekt anvnder du menyalternativet "New
 
Project" i menyn till vnster. Skriv vad du vill att ditt projekt ska
 
heta, och tryck p knappen mrkt "Create!". Ditt projekt r nu skapat.
 
<P>
 
<B>OBSERVERA att det tar en stund, i nulget maximalt en kvart, innan
 
ditt projekt gr att anvnda</B>
 
   
  +
Lösningen går under namnen '''LysCVS/LSVN''' och finns att beskåda bland annat i form av http://cvs.lysator.liu.se/.
<H4>Att brja anvnda det nyligen skapade projektet</H4>
 
   
  +
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.
Enklast r att anvnda <code>cvs import</code>. Sg att du nyss har
 
  +
skapat projektet <i>foo</i> i lysCVS. Vidare har du ett gng filer som
 
  +
ska finnas i foo, de existerar i katalogen <i>/home/xyzzy/bar</i>. Du
 
  +
===Att skapa nya projekt i LysCVS och LSVN===
vill att filerna ska hamna i katalogen <i>gazonk</i> under cvsrooten
 
  +
fr <i>foo</i> I s fall gr du ungefr shr:
 
  +
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.
  +
  +
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 <code>cvs import</code>. 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:
 
<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'',
du kan hitta p ntt bttre n ditt anvndarnamn och "start" om du s
+
du kan hitta nått bättre än ditt användarnamn och "start" om du
  +
önskar.
nskar.
 
  +
<P>
 
Nu kan du, frn 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 lgga till nya anvndare i ett projekt</H3>
 
   
  +
====Att börja använda det nyligen skapade projektet (svn)====
Fr att mjliggra <B>skrivaccess</B> fr andra n dig sjlv lgger du
 
  +
Protokollet som stöds heter svn+ssh.
till anvndare till dina projekt.
 
  +
'''OBS: Det sägs vara normalt att behöva ange lösenord flera gånger i rad (ungefär 3) med svn+ssh'''
<P>
 
  +
G till huvudsidan och klicka p lnken mrkt "administrate" fr det
 
  +
Kör
projekt du vill lgga till en anvndare till. Skriv mailadressen fr
 
  +
svn co svn+ssh://<username>@lsvn.lysator.liu.se/svnroot/<projektnamn>
anvndaren i rutan, och tryck "Add".
 
  +
för att checka ut ditt projekt.
<P>
 
  +
Ta reda på mer om svn med
Om det r en Lysatoranvndare du lgger till r det inget mer du
 
  +
svn help
behver gra, fr d finns redan alla uppgifter i NIS. Om det r en
 
  +
eller leta upp dokumentationen på oebben.
extern (icke-Lysit) du vill lgga till fr du fylla i riktigt namn och
 
  +
anvndarnamn p personen ifrga. <B>OBSERVERA att anvndarnamnet mste
 
  +
===Att lägga till nya användare i ett projekt===
brja p <i>_cvs_</i>. Detta fr att skydda Lysators
 
  +
namnrymd</B>. Den externa personen fr ett mail med instruktioner om
 
  +
För att möjliggöra '''skrivaccess''' för andra än dig själv lägger du
inloggningsnamn och lsenord - ett automatgenererat lsenord som r
 
  +
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.
 
fult som stryk.
<P>
 
<B>ven hr tar det en kvart innan anvndaren kan anvnda cvs ver
 
ssh.</B> Dremot kan hen logga in i cvsadministrationssystemet, exempelvis
 
fr att byta lsenord eller lgga till SSH-nycklar.
 
   
  +
'''Även här tar det en kvart innan användaren kan använda cvs över
<H3>Att ta bort anvndare i ett projekt</H3>
 
  +
ssh.''' Däremot kan hen logga in i cvsadministrationssystemet, exempelvis
G in p administrationssidan fr ett projekt och tryck p
 
  +
för att byta lösenord eller lägga till SSH-nycklar.
"Remove"-knappen fr den anvndare du inte vill ha kvar i ditt
 
projekt. Anvndaren kan nu inte lngre skriva eller lsa
 
repositoryt. Dremot finns anvndaren kvar i systemet, s du kan
 
enkelt lgga till henom igen.
 
<P>
 
<B>OBSERVERA att det gr utmrkt att ta bort sig sjlv, och d blir
 
det svrt..</B>
 
   
<H3>Att bestmma vem som fr administrera ett projekt</H3>
+
===Att ta bort användare i ett projekt===
  +
Gå in på administrationssidan för ett projekt och tryck på
Du kan lta andra (ven externa anvndare) bestmma vem som fr lgga
 
  +
"Remove"-knappen för den användare du inte vill ha kvar i ditt
till/ta bort anvndare och huruvida projektet finns tillgngligt
 
  +
projekt. Användaren kan nu inte längre skriva eller läsa
anonymt. G in p administrationssidan fr projektet och tryck p "toggle
 
  +
repositoryt. Däremot finns användaren kvar i systemet, så du kan
administration rights" fr personen.
 
  +
enkelt lägga till henom igen.
   
  +
'''OBSERVERA att det går utmärkt att ta bort sig själv, och då blir
<H3>Att tillta/otillta anonym access till projektet</H3>
 
  +
det svårt...'''
P administrationssidan fr projektet finns en toggle-knapp fr att
 
bestmma om det ska g att komma t projektet med pserver anonymt. Om
 
s r fallet visas den CVSROOT som ska anvndas i s fall.
 
<P>
 
Med pserver mste man logga in frst - det gr man med ett tomt
 
lsenord (enter vid lsenordsfrgan, liksom).
 
<P>
 
<B>OBSERVERA att det tar en kvart innan projektet r tkomligt
 
anonymt</B>. Dremot blir projektet otkomligt s fort du togglar
 
tillbaka. Frga inte.
 
   
  +
===Att bestämma vem som får administrera ett projekt===
<H3>Att tillta/otillta webaccess till projektet</H3>
 
  +
Du kan låta andra (även externa användare) bestämma vem som får lägga
Liksom du kan bestmma om projektet ska vara anonymt tkombart med
 
  +
till/ta bort användare och huruvida projektet finns tillgängligt
pserver s kan du bestmma om projektet ska vara tkombart med
 
  +
anonymt. Gå in på administrationssidan för projektet och tryck på "toggle
ViewCVS, en web-cvs-frontnda. Det gr du genom att toggla knappen fr
 
  +
administration rights" för personen.
"ViewCVS access". ndringen fr omedelbar effekt.
 
   
  +
===Att tillåta/otillåta anonym access till projektet===
<H3>Att lgga till SSH-nycklar</H3>
 
  +
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 <tt>:pserver:anonymous@cvs.lysator.liu.se:/cvsroot/&lt;projekt&gt;</tt>.
   
  +
Med pserver måste man logga in först - det gör man med ett tomt
Det r rtt tradigt att behva skriva in sitt lsenord var gng man
 
  +
lösenord (enter vid lösenordsfrågan, liksom).
ska utfra ett cvs-kommando. Drfr anvndar man med frdel
 
  +
ssh-nycklar, grna i kombination med ssh-agent. Fr att se hur man gr
 
  +
'''OBSERVERA att det tar en kvart innan projektet är åtkomligt
detta p Lysator ls <a href="/local/datorhandbok/ssh.html">hr</a>.
 
  +
anonymt'''. Däremot blir projektet oåtkomligt så fort du togglar
<P>
 
  +
tillbaka. Fråga inte.
Eftersom du varken som vanlig anvndare eller extern dito kommer t
 
  +
CVS-burken med ett vanligt skal lggs sdana nycklar till genom att
 
  +
===Att tillåta/otillåta webaccess till projektet===
vlja "Edit SSH keys" och klistra in de nycklar du vill ha. Servern
 
  +
Liksom du kan bestämma om projektet ska vara anonymt åtkombart med
stdjer enbart ssh v2.
 
  +
pserver så kan du bestämma om projektet ska vara åtkombart med
<P>
 
  +
ViewCVS, en web-cvs-frontända. Det gör du genom att toggla knappen för
Anledningen till att ven Lysatoranvndare mste lgga till sina
 
  +
"ViewCVS access". Ändringen får omedelbar effekt.
nycklar p detta stt r att CVS-servern av skerhetsskl ej monterar
 
  +
  +
===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.
 
Lysators vanliga NFS-namnrymd.
  +
<P>
 
<B>ven hr 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 stt att slippa skriva lsenord varje gng r att anvnda <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 Mllers</a> <a
+
[http://www.lysator.liu.se/~nisse/lsh lsh] i
  +
"Gateway-mode". Dvs, på din dator exekverar du
href="http://www.lysator.liu.se/~nisse/lsh">lsh</A> i
 
"Gateway-mode". Dvs, p din dator exekverar du
 
 
<pre>
 
<pre>
lsh -G -N -l &lt;anvndarnamn&gt; cvs.lysator.liu.se
+
lsh -G -N -l &lt;användarnamn&gt; cvs.lysator.liu.se
 
</pre>
 
</pre>
och skriver in ditt lsenord. Sen stter du miljvariabeln CVS_RSH
+
och skriver in ditt lösenord. Sen sätter du miljövariabeln CVS_RSH
 
till "lshg". Klart!
 
till "lshg". Klart!
   
<H3>Logga ut</H3>
+
===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:
  +
  +
*[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.
Hur svrt kan det vara? :-)
 
<P>
 
Du blir automatiskt utloggad om du inte gr ngonting p en kvart.
 
   
  +
=== Publicera Git-arkivet på git.lysator.liu.se ===
<H3>Att verfra gamla repositories</H3>
 
   
  +
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.
Jod, det gr. Fast inte utan interaktion av en root. Skapa frst projektet i lysCVS. Packa sedan ihop ditt repository i en tarboll och tala om var den finns fr rtterna s ska vi nog kunna ordna den saken.
 
   
  +
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:
<H3>Framtida planer</H3>
 
   
  +
<pre>cd ../accesslog.git
Umm.. Inga direkta just nu. Kom grna med frslag!
 
  +
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:
<H3>Information om systemet</H3>
 
LysCVS bestr av en kombination av vanligt frekommande fri
 
programvara samt ett gng lokalt utvecklade hack. Bland annat anvnds:
 
   
  +
<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 hmta <a href="http://www.lysator.liu.se/~forsberg/hacks/lyscvs">hr</a>
 
<P>
 
Hrd och operativsystemsmssigt r burken ifrga fr tillfllet en
 
Dell PowerEdge 6100/200 (stalingrad) med 2 st 200 MHz Pentium Pro och 256 MiB
 
minne. Inte vrldens snabbaste maskin, men den r stabil, den har bra
 
diskutbyggnadsmjligheter och den har en tvillingsyster att plocka
 
reservdelar frn. Maskinen kr <a href="http://www.debian.org">Debian
 
GNU/Linux</a>.
 
<p>
 
Maskinen speglar sina diskar med Linux mjukvaru-RAID, och backup tas
 
en gng 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.