Als erstes sollte man sich mal eine SVN-Datenbank (Repository) anlegen:
svnadmin create /path/to/repository/ --fs-type fsfs
In diesem Pfad liegt nur die Datenbank auf die man niemals direkt zugreift.
Nun erstellt man sich eine Arbeitskopie:
svn co file:///path/to/repository/ /path/to/workingcopy/
Wenn man will kann man später auch über 'ssh', 'apache' oder 'svnserve' übers Netzwerk auf die Repository zugreifen, dafür muss man allerdings den entsprechenden Service erst einrichten…
Man kann nun beliebige Verzeichnisse und Dateinen in der Arbeitskopie anlegen. Es ist aber anzuraten erstmal eine Standard-Ordernstruktur hochzuladen:
cd /path/to/workingcopy/
svn mkdir branches tags trunk
“svn mkdir somedir” entspricht “mkdir somedir;svn add somedir” Es macht also die neu erstellten Verzeichnisse gleich mit SVN bekannt.
Nun kann man mit
svn commit
die Arbeitskopie zur Repository hochladen.
Wenn man mit Anderen an einer Repository arbeitet, sollte man vor einem 'commit' immer ein
svn update
machen. Damit bringt man seine Arbeitskopie auf den aktuellen Stand und kann Konflikte mit den änderungen der Anderen ausräumen.
User 1:
cd /home/user1/project1/svn svn update echo "Hi">datei.txt svn add datei.txt svn update svn commit datei.txt
User 2:
cd /home/user2/project1/svn svn update echo "Hi Du!">datei.txt svn update svn commit datei.txt
User 1:
echo "Na Du!">datei.txt svn update svn status
Zeigt “C” (conflict) für die datei.txt Wir beheben den Konflikt, teilen das SVN mit und laden die Datei hoch.
echo "Hi Du Nase!">datei.txt svn resolved datei.txt svn update
Machte User2 zwischenzeitlich einen erneuten Commit, könnten neue Konflikte auftreten.
svn commit datei.txt
svnbook.red-bean.com Das SVN-Buch (englisch)