You are not logged in.
Pages: 1
Hello, I was looking for easy subversion tutorials but couldn't find them so I have created this one:
Subversion is a program to make it easy to work togethor on a project. On the server there is a group for every project and a user for every developper. For every project there is a different repo. So the setup of a new project will look like this:
* Create a reposatority with the svnadmin program as root
* Create a group (usually with the same name as the repo)
* Chown the group of the repo to the group we just added (chown -R root:newgroup /path/to/repo)
* Create users for the developpers of this project (with useradd)
* Add the users to the group (by editing the /etc/group file)
But before we can add project we have to install subverison and ssh:
pacman -S subversion openssh
Edit /etc/rc.conf and add sshd and svnserve to the DAEMONS array and start the daemons (because we don't want to reboot)
/etc/rc.d/svnserve start
/etc/rc.d/sshd start
Don't forget to edit /etc/hosts.deny and commend the line ALL: ALL: DENY because else it isn't possible to login remotly over ssh
Now lets create our test repo (remember, for every project we create a new repo, this is what confused me a long time..)
First we create directory where we are going to put all the repos in, the location doesn't matter at all!, If you like you can also put it on /svn or /home/user/myrepos or whatever
mkdir /usr/local/repos
Now create the test repo (as root)
svnadmin create --fs-type fsfs /usr/local/repos/test
Also we create a group called test (only the users in this group will be able to edit the test project)
groupadd test
And we have to make the repo only editable by people in the test group
chown -R root:test /usr/local/repos/test
chmod -R 775 /usr/local/repos/test
Now we create the users for de developpers of this project (and set the passwords)
useradd developper1
passwd developper1
uderadd developper2
passwd developper2
And of course add the users to the test group
usermod -G test developper1
usermod -G test developper2
Now the server is ready! Lets move to the computer of one of the devs (can be the same computer of course) and add some stuff to our test project
On the client computer we also need subversion and ssh so also type
pacman -S subversion openssh
But here we dont need to run the DAEMONS so skip that
Go to the directory where you do devepment
cd /home/developper1/projects
Only one time we need to type a complicatet command, this will checkout the test repo from the server:
svn checkout svn+ssh://developper1@ip_adres_of_the_server/usr/local/repos/test
Cd into the new test dir and create a file called testfile and put some text in it
cd test
vim testfile
We need to tell svn that this file is part of the project so type
svn add testfile
But this hasn't uploaded the file yet, we only told our local svn program that is has to upload it when we commit, to commit our project type
svn commit -m 'Added the test file'
The -m flag is for the logbook
Now if you want to check if someone else did change something type
svn checkout
and svn will download the new files (if there are any)
Ok, so we now have created a testfile and uploaded it to the server, if we now move to the computer of the second developper or if the first developper wants to program on antoher computer just type
svn checkout svn+ssh://developper2@ip_adres_of_the_server/usr/local/repos/test
And you can change something and upload again with svn commit
There are a lot of usefull svn commands (to see the log and see diffs or merge different versions) but please see the svn book for that: http://svnbook.red-bean.com/en/1.0/index.html
I hope everything is clear now but just to be sure I will show the commands you have to type when you want another project and only want developper2 and developper 3 to be able to edit things
On the server type
svnadmin create --fs-type fsfs /usr/local/repos/realproject
groupadd realproject
chown -R root:realproject /usr/local/repos/realproject
chmod -R 775 /usr/local/repos/realproject
We only craete one new developper because the user for developper2 already exists
useradd developper3
passwd developper3
Add developper 3 to the realproject group
usermod -G realproject developper3
But developper2 was already in the test project (and I want him to stay there) so we have to add him to two groups
usermod -G test,realproject developper2
And thats it!
Offline
Add it to the wiki, then other people can improve it and keep it up to date. Also here it just gets lost, and on the wiki it's easier to find.
Offline
you should do
mkdir trunk branches tags
svn import svn+ssh://developper1@ip_adres_of_the_server/usr/local/repos/test .
To present the proper structure for your repository, after creating it and assigning permissions for it.
I generally prefer to use apache+svn so that I do not have to create user accounts on the box, and can setup more fine grained permissions for my repositories.
Nice howto though.
"Be conservative in what you send; be liberal in what you accept." -- Postel's Law
"tacos" -- Cactus' Law
"t̥͍͎̪̪͗a̴̻̩͈͚ͨc̠o̩̙͈ͫͅs͙͎̙͊ ͔͇̫̜t͎̳̀a̜̞̗ͩc̗͍͚o̲̯̿s̖̣̤̙͌ ̖̜̈ț̰̫͓ạ̪͖̳c̲͎͕̰̯̃̈o͉ͅs̪ͪ ̜̻̖̜͕" -- -̖͚̫̙̓-̺̠͇ͤ̃ ̜̪̜ͯZ͔̗̭̞ͪA̝͈̙͖̩L͉̠̺͓G̙̞̦͖O̳̗͍
Offline
Thanks for you replys
In the wiki there is already a tutorial about svn+apache, how should I add this tutorial? Name it easy ssh subverison tutorial or something?
cactus, I just started with subversion so I don't know yet where branches and tags are for but I will learn more about it and change the tutorial as soon as I have some free time.
Cheers,
David
Offline
A branch and a tag in subversion is considered a "cheap copy".
The "subversion book" has good information on what branches and tags are for: http://svnbook.red-bean.com/en/1.1/ch04.html
ps. Subversion 1.2 is out..when is arch going to update? changelog
"Be conservative in what you send; be liberal in what you accept." -- Postel's Law
"tacos" -- Cactus' Law
"t̥͍͎̪̪͗a̴̻̩͈͚ͨc̠o̩̙͈ͫͅs͙͎̙͊ ͔͇̫̜t͎̳̀a̜̞̗ͩc̗͍͚o̲̯̿s̖̣̤̙͌ ̖̜̈ț̰̫͓ạ̪͖̳c̲͎͕̰̯̃̈o͉ͅs̪ͪ ̜̻̖̜͕" -- -̖͚̫̙̓-̺̠͇ͤ̃ ̜̪̜ͯZ͔̗̭̞ͪA̝͈̙͖̩L͉̠̺͓G̙̞̦͖O̳̗͍
Offline
ps. Subversion 1.2 is out..when is arch going to update? changelog
Altered Jason Chu's PKGBUILD (changed version number and updated the DL-URL and md5sum) and it works here:
# $Id: PKGBUILD,v 1.46 2005/04/05 14:27:00 jason Exp $
# Contributer: Jason Chu <jason@archlinux.org>
# Maintainer: Jason Chu <jason@archlinux.org>
pkgname=subversion
pkgver=1.2.0
pkgrel=1
pkgdesc="Replacement for CVS, another versioning system"
depends=('glibc' 'expat' 'libxml2' 'gdbm' 'zlib' 'db>=4.3' 'neon' 'apr' 'apr-util')
makedepends=('apache' 'python' 'perl>=5.8.4-1' 'swig>=1.3.24')
source=(http://subversion.tigris.org/tarballs/$pkgname-$pkgver.tar.gz svnserve svn svnserve.conf)
md5sums=('ad2daf6ec0f17b84131828eca9888c98' '22d452e0de5168d56c438d99c7ad72fa'
'a0db6dd43af33952739b6ec089852630' 'c0001ceb13418a065915e27dfdf592c0')
backup=('etc/xinetd.d/svn' 'etc/conf.d/svnserve')
url="http://subversion.tigris.org/"
build() {
cd $startdir/src/$pkgname-$pkgver
# export LDFLAGS="-L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_client/.libs
# -L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_delta/.libs
# -L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_fs/.libs
# -L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_fs_base/.libs
# -L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_fs_fs/.libs
# -L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_repos/.libs
# -L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_ra_svn/.libs
# -L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_ra/.libs
# -L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_ra_dav/.libs
# -L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_ra_local/.libs
# -L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_subr/.libs
# -L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_diff/.libs
# -L$startdir/src/$pkgname-$pkgver/$pkgname/libsvn_wc/.libs"
./configure --prefix=/usr --with-apr=/usr/bin/apr-config --with-apr-util=/usr/bin/apu-config --with-zlib --with-neon=/usr
make DESTDIR=$startdir/pkg || return 1
export LD_LIBRARY_PATH=$startdir/pkg/usr/lib:$LD_LIBRARY_PATH
make DESTDIR=$startdir/pkg install
make DESTDIR=$startdir/pkg swig-py
make install-swig-py DESTDIR=$startdir/pkg
mkdir -p $startdir/pkg/usr/lib/python2.4
mv $startdir/pkg/usr/lib/svn-python/ $startdir/pkg/usr/lib/python2.4/site-packages
mkdir -p $startdir/pkg/usr/share/subversion
cp -r tools/hook-scripts $startdir/pkg/usr/share/subversion
rm -f $startdir/pkg/usr/share/subversion/hook-scripts/*.in
make DESTDIR=$startdir/pkg swig-pl
make install-swig-pl DESTDIR=$startdir/pkg
rm -r $startdir/pkg/usr/lib/perl5/?.?.?
# make DESTDIR=$startdir/pkg javahl
# make DESTDIR=$startdir/pkg install-javahl
mkdir -p $startdir/pkg/etc/rc.d
mkdir -p $startdir/pkg/etc/xinetd.d
mkdir -p $startdir/pkg/etc/conf.d
install -m 755 $startdir/src/svnserve $startdir/pkg/etc/rc.d
install -m 644 $startdir/src/svn $startdir/pkg/etc/xinetd.d
install -m 644 $startdir/src/svnserve.conf
$startdir/pkg/etc/conf.d/svnserve
}
You'll want to pick up the " svnserve svn svnserve.conf" files in /var/abs/extra/devel/subverion/.
P.S. You're looking a little under the weather, lately
I miss the cactus...
Offline
P.S. You're looking a little under the weather, lately
I miss the cactus...
Springtime with allergies has that effect.
Look for a happier avatar in the coming days.
"Be conservative in what you send; be liberal in what you accept." -- Postel's Law
"tacos" -- Cactus' Law
"t̥͍͎̪̪͗a̴̻̩͈͚ͨc̠o̩̙͈ͫͅs͙͎̙͊ ͔͇̫̜t͎̳̀a̜̞̗ͩc̗͍͚o̲̯̿s̖̣̤̙͌ ̖̜̈ț̰̫͓ạ̪͖̳c̲͎͕̰̯̃̈o͉ͅs̪ͪ ̜̻̖̜͕" -- -̖͚̫̙̓-̺̠͇ͤ̃ ̜̪̜ͯZ͔̗̭̞ͪA̝͈̙͖̩L͉̠̺͓G̙̞̦͖O̳̗͍
Offline
Pages: 1