# Subversion

# Flag

按装VisualSVN后客户端使用报错:执行上下文错误: 由于目标计算机积极拒绝,无法连接。,需要在服务列表中找到相关服务 -> 右键打开属性 -> 点击登录页签修改登录身份本地系统账户 -> 点击常规页签修改启动类型自启动,再点击启动

# SVN不同分支,进行比对
svn diff -r 1100:1323
# 获取所有SVN提交作者用户名的列表
# https://stackoverflow.com/questions/2494984/how-to-get-a-list-of-all-subversion-commit-author-usernames
svn log --quiet | awk '/^r/ {print $3}' | sort | uniq
svn log --quiet | grep "^r" | awk '{print $3}' | sort | uniq

选中要比对的一个分支,Shift+右键+选中TorsoiseSVN -> diff with url,然后填入另外一个要比对的分支url即可

# Linux安装

# 检查已安装
rpm -qa subversion
# 安装
yum -y install subversion
# 查看已安装版本
svnserve --version

创建代码库

# 建立SVN版本库目录
mkdir -p /home/svn/svnrepos/test
# 创建SVN版本库
svnadmin create /home/svn/svnrepos/test

执行上面的命令后,自动建立svndata库, /home/svn/svnrepos/test文件夹包含了confdbformathookslocksREADME.txt等文件,说明一个SVN库已经建立。

配置代码库

# 进入`conf`文件夹
cd /home/svn/svnrepos/test/conf
# 配置用户密码`passwd`
vi passwd
  • [users]节点下添加以下内容(账户=密码)
# 账户=密码
bajins.com=bajins.com
  • 配置权限控制authz
vi authz

目的是设置哪些用户可以访问哪些目录,向authz文件末尾追加以下内容:

设置[/]代表根目录下所有的资源,rw为读和写,*代表所有用户,先按shift+g跳到末尾,然后添加

[/]
bajins.com=rw
*=r
  • 配置服务svnserve.conf
vi svnserve.conf

[general]节点下追加以下内容

# 匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
# 使授权用户有写权限
auth-access=write
# 密码数据库的路径
password-db=passwd
# 访问控制文件
authz-db=authz
# 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm = This Is A Repository

如果需要创建多个库就需要重复做上面2、3步,并且最后一个目录名是不一样的

  • 建立第2个SVN版本库目录
mkdir -p /home/svn/svnrepos/test2
  • 创建第2个SVN版本库
svnadmin create /home/svn/svnrepos/test2

启动

svnserve -d -r /home/svn/svnrepos/
# 查看SVN进程
ps -ef|grep svn
# 检测SVN端口
netstat -antlp|grep svnserve
# 放开端口
firewall-cmd --zone=public --add-port=3690/tcp --permanent
firewall-cmd --reload

连接地址:svn://host:port/仓库名

停止SVN

# 查找svnserve进程(PID)
ps -aux | grep svnserve
# 结束进程
kill -9 PID
#或者
killall svnserve