今天安装一下svn本来觉得很简单的事情趟坑就弄了半天,结合几个线上文档把自己好用的奉上。如有不足和错的地方大家帮忙提意见啊。
1、安装
安装svn
安装之前我们先检查一下是否有svn
命令:svn --version (查看svn版本信息)
-bash: svn: command not found
没有开始安装
两种方法
# yum install subversion
# apt-get install subversion
自选择
我用的是yum
安装之后 svn --version
如图:
然后就是创建svn仓库
我是这个路径/opt/svn/project,可以看个人习惯
#mkdir /opt/svn/project
然后就是创建仓库了
#svnadmin create /opt/svn/project
2、配置
上面的操作很简单,几个命令就搞定, 下面的操作也不难。
进入/opt/svn/project目录(这里的project目录不是网站的web目录,仓库名为project)。
会看到conf、hooks、db等目录,我们会用到的也就conf(配置目录)hooks(设置钩子,后面会讲到)
进入conf目录, 有以下几个文件(authz, passwd, svnserve.conf)
其中authz 是权限控制,可以设置哪些用户可以访问哪些目录, passwd是设置用户和密码的, svnserve是设置svn相关的操作。
首先配置svnserve.conf
# vim svnserve.conf
修改(把前面的#号去掉,配置后面的值,共修改五行代码)
anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = password
authz-db = authz # 访问控制文件
realm = /opt/svn/repos (realm = project) # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
采用默认配置. 以上语句都必须顶格写, 左侧不能留空格, 否则会出错.
在passwd文件中添加用户
# vim passwd
[users]
admin = 123456
这里设置了一个用户,根据情况不同可以随意设置。
在authz中添加组和权限
# vim authz
[groups]
group1 = admin,dazeair #group1组里的成员
group2 = user1,user2
[/] #配置根目录的权限
admin =rw #admin用户对[/]目录的权限:r读,w写
@group1 = rw #@表示组,group1组有读写权限
@group2 = r #group2组只有r读权限
* = #这里表示其他用户无任何权限
[www:/user1] #配置根目录(www目录)下的user1文件夹的权限
user1 = rw
这里说明下,前面添加了四个用户,分了两个组,对于根目录group1拥有读写权限,而group2只有r权限。
根目录(www目录)下有user1
好了,通过以上配置,你的svn就可以了。
3、连接
启动svnserve
# svnserve -d -r /data/svn/project
也可以使用 --listen-port 参数指定端口(默认端口3690),启动多个仓库
正常情况下不会出现问题的,如出现请检查刚才的配置文件
如果报错:
svnserve: Can‘t bind server socket: Address already in use
纠结了吧!
解决办法:
# killall svnserve
# svnserve -d -r /opt/svn/repos 启动成功。
或者
# svnserve -d -r /mnt/westos --listen-port 3691
这样同一台服务器可以运行多个svnserver
好了,启动成功后,就可以使用了。
在window上建议采用TortoiseSVN, 连接地址为: svn://your server address (如果指定端口需要添加端口:端口号)
这块注意一定要在你的测试或者项目的目录下:
连接后可以上传本地的文件,有效的管理你的代码。
4、新建多个版本库
若要在/svn目录下添加新的版本库,直接新建相应的目录,然后设置为版本库,最后配置即可,
不需要重新运行svnserve -d -r /opt/svn/project,
也不需要把该命令应用到/svn目录下你所新建的目录,
比如在/svn目录下另外新建一个project2的资源库,命令如下:
# mkdir -p /opt/svn/project2
# svnadmin create /opt/svn/project2
...(三个文件的配置)
(不需再运行svnserve -d -r /opt/svn/project2)
还有一块是管理你的线上代码,这块研究后再编辑。(有后续...)