安装
yum -y install subversion
通过rpm -qa subversion可确认是否已安装
小帖士:如需保留yum安装包的话只需修改/etc/yum.conf中的keepcache的值即可
#修改 sed -i 's#keepcache=1#keepcache=0#g' /etc/yum.conf #查看 grep keepcache /etc/yum.conf
配置并启动
创建两个目录,分别用于存储数据和用户、密码
mkdir -p /application/svndata mkdir -p / application/svnpasswd
使用svnserve来启动SVN服务,相关参数可通过svnserve –help来查看用途
svnserve -d -r /application/svndata/ #查看服务是否启动 ps -ef | grep svn #通过端口方式来查看服务是否启动 netstat -lnpt | grep 3690 #或者(CentOS 6默认未安装) lsof -i :3690
创建版本库
创建版本库使用命令svnadmin
svnadmin create /application/svndata/sadoc
通过tree /application/svndata可以查看到版本库基本的目录结构
/application/svndata/ └── sadoc ├── conf │ ├── authz │ ├── passwd │ └── svnserve.conf ├── db │ ├── current │ ├── format │ ├── fsfs.conf │ ├── fs-type │ ├── min-unpacked-rev │ ├── rep-cache.db │ ├── revprops │ │ └── 0 │ │ └── 0 │ ├── revs │ │ └── 0 │ │ └── 0 │ ├── transactions │ ├── txn-current │ ├── txn-current-lock │ ├── txn-protorevs │ ├── uuid │ └── write-lock ├── format ├── hooks │ ├── post-commit.tmpl │ ├── post-lock.tmpl │ ├── post-revprop-change.tmpl │ ├── post-unlock.tmpl │ ├── pre-commit.tmpl │ ├── pre-lock.tmpl │ ├── pre-revprop-change.tmpl │ ├── pre-unlock.tmpl │ └── start-commit.tmpl ├── locks │ ├── db.lock │ └── db-logs.lock └── README.txt
修改配置文件conf/svnserve.conf(别忘了先做好备份哦)
#修改第12,13行 anon-access = none auth-access = write #第20行 password-db = /application/svpasswd/passwd #第27行 authz-db = /application/svnpasswd/authz
通过diff指令对比备份文件可查看修改的内容
diff svnserve.conf.bak svnserve.conf 12,13c12,13 < # anon-access = read < # auth-access = write --- > anon-access = none > auth-access = write 20c20 < # password-db = passwd --- > password-db = /application/svnpasswd/passwd 27c27 < # authz-db = authz --- > authz-db = /application/svnpasswd/authz
修改完配置文件需重启SVN使配置文件生效
pkill svnserve svnserve -d -r /application/svndata/
使用了pid file的话可以通过如下方法重启
kill -USR1 <code>cat /application/svndata/svn.pid</code> svnserve -d -r /application/svndata --pid-file=/application/svndata/svn.pid
接下来将conf文件夹下的passwd和authz文件拷贝到/application/svnpasswd目录下
cp passwd authz /application/svnpasswd/
注:为保持安全性可将拷贝到/application/svnpasswd/下的这两个文件设置700的权限
在passwd中配置用户名和密码,按照 user = password一行一个用户的方式添加即可
然后在authz文件中定义组设置权限:
基本格式
[<版本库>:/项目/目录] @<用户组名> = 权限 <用户名> = 权限
如
#定义组-[groups]下面 sagroup = alan, david [sadoc:/] @sagroup = r alan = rw
接下来就需要在本地下载SVN客户端,Windows下一般用TortoiseSVN (常用操作有SVN Update(首次为Checkout)和SVN Commit,缺省目录%APPDATA%\Subversion\auth)
Linux下客户端的操作方法
svn co svn://*.*.*.*/sadoc /local/dir/ --username=alan --password=... svn add filename snv ci -m "description..." svn import /local/dir/ svn://*.*.*.*/sadoc -m "description..."
Linux下修改SVN IP地址(通过svn info可查看详细信息)
svn switch --relocate 原svn地址 新svn地址
SVN下可能过钩子来在提交前、提交后进行一些操作,默认在hooks文件夹下有如下模板,去除后面的.tmpl即可使用
post-commit.tmpl
post-lock.tmpl
post-revprop-change.tmpl
post-unlock.tmpl
pre-commit.tmpl
pre-lock.tmpl
pre-revprop-change.tmpl
pre-unlock.tmpl
start-commit.tmpl
注:从Windows上传的文件转换文本格式用dos2unix指令,钩子文件要加执行权限
以下是一个通过钩子来传送文件的简单示例
REPOS="$1" REV="$2" #encoding export LC_CTYPE="en_US.UTF-8" export LC_ALL= #log pth LOGPATH-"/app/log" [ ! -d ${LOGPATH} ] && mkdir ${LOGPATH} -p #update content with svn SVN update --username alan -- password alanhou /data/www if [ $? -eq 0 ] then /usr/bin/rsync -az --delete /data/www /tmp/ fi
其它:
branch, tag, trunk
svnlook
线上更新代码:先上传到临时目录,再执行mv或者使用ln软链接
Jira, Mantis