subversion :: a very simple tutorial
Contents
SubVersion
A version control system that is a compelling replacement for CVS in the open source community.
Installation
Παραθέτω την εγκατάσταση από την πηγαίο κώδικα.
Η σειρά είναι απαραίτητη.
wget -c http://apache.otenet.gr/dist/apr/apr-1.3.3.tar.bz2 tar jxvf apr-1.3.3.tar.bz2 cd apr-1.3.3 ./configure make make install
wget -c http://apache.otenet.gr/dist/apr/apr-util-1.3.4.tar.bz2 tar jxvf apr-util-1.3.4.tar.bz2 cd apr-util-1.3.4 ./configure --with-apr=/usr/local/apr/ --with-berkeley-db=/opt/berkeleydb make make install
wget -c http://www.webdav.org/neon/neon-0.28.3.tar.gz tar zxvf neon-0.28.3.tar.gz cd neon-0.28.3 ./configure --with-ssl=gnutls make make install
wget -c http://subversion.tigris.org/downloads/subversion-1.5.5.tar.bz2 tar jxvf subversion-1.5.5.tar.bz2 cd subversion-1.5.5 ./configure --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr/ --with-berkeley-db=/opt/berkeleydb --with-ssl make make install
ΣΗΜΕΙΩΣΗ: Το svn ΔΕΝ μπορεί να κατεβάσει μέσω ssl εάν ΔΕΝ έχει εγκατασταθεί το neon με ssl υποστήριξη. Το with-ssl
κατά το configuration δηλώνει ακριβώς αυτό το πράγμα. Εάν το neon είναι εγκατεστημένο με ssl τότε ενεργοποίησέ το.
Attention – Apache
locate httpd.conf vim +/dav_svn_module /usr/local/apache2/conf/httpd.conf
Comment:
# LoadModule dav_svn_module modules/mod_dav_svn.so # LoadModule authz_svn_module modules/mod_authz_svn.so
Example
> svn co https://wackofork.svn.sourceforge.net/svnroot/wackofork/trunk/wacko wacko > cd wacko > svn up > svn status > cd lang > svn commit wakka.el.php -m "More greek translation" --username emanelhs
Create SVN Repository
Για να περάσουμε κάποιο project που έχουμε σε svn repository, χρειάζεται αρχικά να δημιουργήσουμε το repository αυτό.
Η δομή παράγεται αυτόματα, έστω λοιπόν ότι είναι η διαδρομή : /opt/svn_repos/
> svnadmin create /opt/svn_repos/ > ls -la !$ ls -la /opt/svn_repos/ total 36 drwxr-xr-x 7 ebal ebal 4096 2007-11-28 17:02 . drwxr-xr-x 17 root root 4096 2007-11-28 16:58 .. drwxr-xr-x 2 ebal ebal 4096 2007-11-28 17:02 conf drwxr-xr-x 2 ebal ebal 4096 2007-11-28 17:02 dav drwxr-sr-x 5 ebal ebal 4096 2007-11-28 17:02 db -r--r--r-- 1 ebal ebal 2 2007-11-28 17:02 format drwxr-xr-x 2 ebal ebal 4096 2007-11-28 17:02 hooks drwxr-xr-x 2 ebal ebal 4096 2007-11-28 17:02 locks -rw-r--r-- 1 ebal ebal 229 2007-11-28 17:02 README.txt
Import Project
Για να περάσουμε ένα νέο project στο svn repository χρειάζεται να κάνουμε import τα αρχεία.
Η εντολή είναι : svn import source destination options και ένα τυπικό παράδειγμα είναι το παρακάτω:
> svn import /usr/local/apache2/htdocs/MyPhpWebCalendar file:///opt/svn_repos/MyPhpWebCalendar -m "Inital Import" Adding /usr/local/apache2/htdocs/MyPhpWebCalendar/lang Adding /usr/local/apache2/htdocs/MyPhpWebCalendar/lang/english.php Adding /usr/local/apache2/htdocs/MyPhpWebCalendar/lang/greek.php Adding /usr/local/apache2/htdocs/MyPhpWebCalendar/calendar-config.php Adding /usr/local/apache2/htdocs/MyPhpWebCalendar/footer.php Adding /usr/local/apache2/htdocs/MyPhpWebCalendar/index.php Adding /usr/local/apache2/htdocs/MyPhpWebCalendar/header.php Committed revision 1.
Για να ελέγξουμε ότι όλα είναι οκ απλά τρέχουμε την εντολή:
> svn list file:///opt/svn_repos/MyPhpWebCalendar calendar-config.php footer.php header.php index.php lang/
First Initial Copy
Και για να κατεβάσουμε το πρώτο μας αντίγραφο πρέπει να κάνουμε checkout:
> cd /tmp > svn checkout file:///opt/svn_repos/MyPhpWebCalendar A MyPhpWebCalendar/lang A MyPhpWebCalendar/lang/english.php A MyPhpWebCalendar/lang/greek.php A MyPhpWebCalendar/calendar-config.php A MyPhpWebCalendar/footer.php A MyPhpWebCalendar/index.php A MyPhpWebCalendar/header.php Checked out revision 1.
Εάν δούμε όλα τα αρχεία που δημιουργήθηκαν με :
> ls -a
Θα παρατηρήσουμε ότι δημιουργήθηκε και ένας κρυφός κατάλογος .svn
Εδώ να επισημάνω ότι είνα το ίδιο ακριβώς τα :
svn checkout
svn co
help
http://svnbook.red-bean.com/en/1.4/svn.tour.cycle.html
> svn help add blame (praise, annotate, ann) cat checkout (co) cleanup commit (ci) copy (cp) delete (del, remove, rm) diff (di) export help (?, h) import info list (ls) lock log merge mkdir move (mv, rename, ren) propdel (pdel, pd) propedit (pedit, pe) propget (pget, pg) proplist (plist, pl) propset (pset, ps) resolved revert status (stat, st) switch (sw) unlock update (up)
Revert
Μία από τις πιο σημαντικές ενέργειες όταν εργαζόμαστε σε εάν revision σύστημα είναι το revert.
Με αυτή την δυνατότητα μπορούμε να "γυρίσουμε" πίσω σε παλαιότερη έκδοση ώστε να διορθώσουμε
ή να ελεγξουμε κάτι στο πρόγραμμά μας.
$ svn info ... Revision: 27234 ... $ svn update -r 27170 $ svn info ... Revision: 27170 ...
svnsync
svnsync aka svn mirroring
rm -rf wackowiki* svnadmin create wackowiki cat > $PWD/wackowiki/hooks/pre-revprop-change << EOF #!/bin/bash exit 0 EOF chmod u+x $PWD/wackowiki/hooks/pre-revprop-change svnsync init file://$PWD/wackowiki https://wackowiki.svn.sourceforge.net/svnroot/wackowiki svnsync sync file://$PWD/wackowiki