svn软件下载地址
http://subversion.apache.org/packages.html
在安装TortoiseSVN时安装客户端和服务端
下以svn在windows下使用为例,linux上类似
一:svn使用
1.创建多个svn仓库
svnadmin create E:/svnServer/web
svnadmin create E:/svnServer/ot
2.启动仓库服务
svnserve -d(独立端口运行) -r(仓库地址)
svnserve -d -r E:/svnServer/web //启动web仓库服务
svn服务走svn协议,端口号码是3690
E:/svnLocal/hkui>svn co svn://127.0.0.1
svn co --username 用户名 --password 密码 svn://127.0.0.1/web
3.使用svn服务
在E:/svnLocal/hkui下新建 a.php
添加到svn仓库:svn add 文件或者目录(多个文件或目录以空格隔开即可)
svn add E:/svnLocal/hkui/a.php
提交到远程仓库
svn ci 文件路径 -m "注释内容" (不想写注释内容就 -m --force-log)
svn commit E:/svnLocal/hkui/a.php -m "第一个文件"
更新
svn update --username 用户名 --password 密码 --force --no-auth-cache 目标目录 (钩子可利用此同步仓库)
4.开启仓库匿名账号权限
在操作仓库的conf/svnserve.conf里配置匿名账号的权限
anon-access = write
无需重启服务即可
日志:db/revprops 下
内容:db/revs 下
5.运行多个仓库服务
把所有仓库的上级目录当成服务启动起来
更换仓库地址 删除.svn 重新check out
6.svn冲突
在不同地方修改 update下来后合并
在相同的地方修改,调整代码,删除冲突的其它三个文件 再提交即可
7.账号和权限
一:给具体用户设置权限
在conf/svnserve.conf 中开启
password-db和authz-db = authz
在passwd中添加用户和密码
hkui=hkui123
tom=tom123
在authz里配置相应权限
配置完passwd后必须给相应的用户在authz里配置权限
给指定的仓库账号设置权限
仓库有种类型设置
1.启动运行多个仓库服务
svnserve -d -r E:/svnServer (svnServer下有web和ot两个仓库)
[web:/] 表示要给多个仓库的web仓库配置访问权限
[ot:/] 当然是在ot仓库的配置文件里配置 权限
2.运行启动单一仓库服务 svnserve -d -r E:/svnServer/web
[/] 表示给单一的仓库设置访问权限
*= 表示其它用户没有操作权限
r只能update rw能update和commit
比如这里是 运行多个仓库服务的
hkui能够读写,tom只能读,其它用户无任何权限
[web:/]
hkui=rw
tom=r
*=
二:给一个组别设置权限
再在passwd中添加
php=php123
js=js123
java=java123
在authz里
[groups]
language=php,js,java #表示同属一个组
[web:/]
hkui=rw
tom=r
@language=rw #表示language组的权限是rw
*=
三:开启只操作某个目录的权限
比如web目录下的Video
1.管理员创建video目录,提交到svn仓库
2.给外部团队设置账号和设置工作目录,和其分支目录权限
passwd中
[users]
hkui=hkui123
tom=tom123
php=php123
js=js123
java=java123
w1=w123
w2=w223
w3=w323
authz中
[groups]
language=php,js,java
w=w1,w2,w3
[web:/]
hkui=rw
tom=r
@language=rw
*=
[web:/video]
@w=rw
*= (如果设置该项 ,只有w组的成员能操作video目录,管理员也不可以)
3.外部团队建立与仓库的联系 (checkout)
svn co svn://127.0.0.1/web/video (只有权限和video联系)
4.外部团队 操作文件并提交到仓库
5.管理员更新即可
四:设置开机启动项服务
sc create svnd binPath= "D:/install/TortoiseSVN/192/bin/svnserve.exe -r E:/svnServer --service" start= auto
删除服务
sc delete svnd
五:查看工作日志
开启账号并配置权限后注意把svnserve.conf里的
anon-access = write改为anon-access = none而不是注释
修改完记得先清空缓存
钩子
在windows下为post-commit.bat
在Linux下post-commit 记得给可执行权限即可
export LANG=en_US.UTF-8
/usr/bin/svn update --username ybjmobile --password 123456 /alidata/www/mobile
svn update --username 用户名 --password 密码 目标目录
------------------------------------------
在centos下查看svn服务
ps aux|grep svn
[root@localhost web]# ps aux|grep svn
root 3243 0.0 0.0 174512 1012 ? Ss 21:35 0:00 svnserve -d -r /var/www/svn_db
root 5623 0.0 0.0 103320 864 pts/1 S+ 22:13 0:00 grep svn