1:安装命令
apt-get install subversion
2:创建一个SVN账号和SVN组,并保证SVN账号已经添加进了SVN组,我的SVN账号是svnuser
$ sudo adduser svnuser 添加SVN账号
$ sudo addgroup subversion 添加SVN组
$sudo usermod -G subversion -a svnuser 将svnuser添加到subversion组
$ cat /etc/group|grep subversion 确认是否添加成功,如果添加成功会显示以下内容:
subversion:x:1004: svnuser
3.创建一个SVN仓库
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir myproject
$sudo chmod -R g+rws myproject
$ sudo chown -R svnuser:subversion myproject
$ sudo svnadmin create /home/svn/myproject
$ sudo chown -R svnuser:subversion myproject
$sudo chmod -R g+rws myproject
这个地方一定要保证看到以下内容:
ls -l /home/svn/myproject/db/txn-current-lock
-rw-rwSr-- 1 svnuser subversion 0 2009-06-18 15:33 txn-current-lock
不然在SVN递交时,会提示:
Can't open '/home/svn/myproject/db/txn-current-lock': Permission denied
相当于在myproject下,所有文件都要属于subversion这个组的svnuser这个用户
4.配置仓库访问权限,刚才创建了一个名称为myproject的SVN仓库,现在要设置它的访问权限。
位于/home/svn/myProject/conf/文件夹下的authz、passwd、svnserve.conf文件
svnserve.conf:svn服务配置文件,该文件版本库目录的conf目录下。
passwd:用户名口令文件,该文件名在文件svnserve.conf中指定,缺省为同目录下的。
authz:权限配置文件,该文件名也在文件svnserve.conf中指定,缺省为同目录下的。
6.设定为开机自动开启服务:
编辑文件/etc/rc.local,在exit0前一行添加一下内容:
svnserve -d -T -r /home/svn
启动svn服务器(svn可以分为单个或多个版本库)
svnserve -d -r /home/svn
-d 表示svnserver以“守护”进程模式运行
r /home/svn 这代表你当前svn可以多版本库运行,客户端访问就需要加上 svn://IP/project 这样才能访问project版本库
svnserve -d -r /home/svn/project
这代表你当前svn只为project这个版本库工作,客户端访问直接svn://IP/ 就可以了,后面不跟目录
设置访问权限
进入conf/svnserve.conf设置
[general] anon-access = none #匿名用户无法查看 auth-access = write #认证用户,有可写权限 password-db = passwd #密码文件 authz-db = authz #权限文件
进入conf/password,添加账户和密码
进入config/authz,设置访问权限
如果是一个版本库,那应该设置成如下:
[groups] g_admin = user1,user2 [/] @g_admin=rw
如果是多个版本库,那就应该设置成这样:
[groups] g_admin = user1,user2 [project:/] @g_admin=rw
[groups]字段下的g_admin = user1,user2
代表着user1,user2属于g_admin,
第二个字段[project:/]
代表着@g_admin用户组,对project仓库有可读,可写权限。
把当前路径下的文件夹内容变成svn副本
cd /home/user/mydirname
svn co file:///svn/foo/mydirname .
这里的svn co后面的file://your path。例如svn co file:///mnt/sdb1/svn/asuswrt-merlin .
svn add ./*
svn ci -m "init first svn project"
此时本地路径就OK了。