Ã…ter
Bakgrund
För att subversion (eller som det oxå kallas svn) skall funka
smidigt, så bör man aktivera automatisk ssh inloggning,
annars kommer man att få slå lösenord för varje operation, ganska
enerverande...
Kolla ssh howton om hur man gör det.
Ej Publikt projekt
Detta förfarande skapar antingen helt privata repositorys eller om
man vill sådana som är delade för alla med konto på denna server.
Skapa nytt repository
Först måste man skapa ett nytt (tomt) projekt på servern.
Vill man skapa ett helt privat projekt, byt ut prefixet /usr/local/svn
nedan mot någonstans i ditt hemma träd, ex /home/username/proj
mkdir /usr/local/svn/myproject
svnadmin create /usr/local/svn/myproject
Låt kollergorna få access
Om man vill dela projektet med övriga utvecklare, så måste
man ge dem access. Detta bör man lämpligen göra med alla projekt
under /usr/local/svn
chgrp subversion /usr/local/svn/myproject
chmod -R g+rws /usr/local/svn/myproject
Nu har vi skapat ett tomt repository som kan användas på denna server.
Gör lokal koppling
Detta är linux/mac förfarandet, för windows googla...
Detta gör man på varje system från vilket man vill koppla sig
till detta repository.
Rent principiellt kan det heta vad som helst, men det är smidigare
om man använder samma namn på repositoryt lokalt och på servern...
Förfarandet är det samma om man vill checka ut ett projekt som
någon annan redan påbörjat, checkar ut ett tomt nytt projekt
eller vill överföra ett befintligt lokalt standalone proj till
ett svn repository. I det sista fallet måste den lokala pathen peka
på toppen av det redan befintliga projektet, annars spelar det
ingen roll vars man lagrar lokal kopia
svn co svn+ssh://samsok.museum24.se/usr/local/svn/myproject /home/username/proj/myproject
Om det var ett lokalt proj som redan hade innehåll
Alla saker som ligger i det lokala repositoryt men inte är
incheckade i svn visas med ? först på raden.
Dessa skall checkas
in i svn, enda undantagen är lokala config filer som inte bör
vara identiska hos alla, exempelvis settings.py filer, mer om vad man
gör med dem lite senare.
Man kan lägga till en eller flera på samma rad
cd /home/username/proj/myproject
svn status
? src2
? foo.py
? foo2.py
svn add src2
svn add foo.py foo2.py
När man laggt till allt man vill publicera kollar man igen med
svn status, allt som kommer att synkas visas med A först på raden
svn status
? settings.py
A src2
A src2/extra
A src2/extra/__init__.py
A src2/foo1.py
A foo.py
A foo2.py
Dags att publicera!
svn commit -m 'Initial checkin'
svn status
? settings.py
Efter en commit så bör man bara se de filer som inte är
versionshanterade när man kör svn status
Specialfiler som inte skall vara identiska på varje system
Vissa filer vill man inte synka, men man vill ändå ha ett
referns exemplar, så man smidigt kan skapa en lokal kopia på nya
system.
Lämpligt då är att kopiera filen till ett annat namn och
inkludera denna kopia i subversion
cp settings.py settings.py-exempel
svn add settings.py-exempel
svn commit -m 'exempel fil'
Detta gör att vid initial checkout får man en
settings.py-exempel som man kopierar till settings.py och modifierar
lokalt, denna konfig fil kommer inte att påverkas av framtida synkningar
Om det var ett projekt som redan fans på servern
När man kör svn co svn+ssh... så bör man få en listning
av alla filer som checkas ut
A /home/username/proj/myproject/src2
A /home/username/proj/myproject/src2/extra
A /home/username/proj/myproject/src2/extra/__init__.py
A /home/username/proj/myproject/src2/foo1.py
A /home/username/proj/myproject/foo.py
A /home/username/proj/myproject/foo2.py
Checkade ut revision 1.
Om det var ett nytt (tomt) projekt
Checkade ut revision 0.
De viktigaste kommandona
Alla saker nedan utgår från att man beffiner sig i sitt projekts topdir,
dvs i exemplen ovan /home/username/proj/myproject
Synka lokalt repository
svn update
Detta bör man göra varje gång man påbörjar en hacking
session, så man har nyaste versionerna av allt.
Publicera
svn commit -m 'Intelligent kommentar'
Detta bör man göra lite då och då, lämpligen när man
är i ett stabilt tillstånd
Lägg till nya filer och bibliotek
Om man skapat en ny fil så måste man även informera
subversion om att den filen skall ingå.
Detta är ganska lätt att glömma, därför bör man
alltid köra en svn status innan man avslutar och kolla att man inte
glömt att adda nytt material
Om man addar ett dir så inkluderas automatiskt allt som ingår i diret
svn add nyfil.py
svn add nyttdir
svn commit -m 'lite nya saker'
Kolla att allt är ok
svn status
Före en status bör man alltid göra en commit, annars så listas
filer som inte synkats ännu.
Endast filer som inte ingår i svn och ev. temp filer bör listas
av en status, om en riktig fil listas så har man antagligen glömt att
lägga in den, gör då
svn add nyfil/som/inte/har.addats
Hantera lokalt filträd
Man kan inte utanvidare flytta eller ta bort filer som ingår i ett
repository.
För att subversion skall informeras om vad man vill göra så
använder man speciella kommandon.
Ta bort saker
svn remove foo.py
När man tagit bort alla filer / bibliotek som skall tas bort
måste man komma ihåg att synka denna ändring.
svn commit -m 'tar bort lite saker'
Flytta saker
svn move foo2.py src2/
Samma sak här, när man är klar måste man synka
svn commit -m 'flyttar saker'
Mer om svn
SVN Book
SVN Home page
Ã…ter