centos7 svn 的yum安装
官网最新下载---我网不配
https://download.sonatype.com/nexus/3/latest-unix.tar.gz
=========安装=========
安装通过yum方式
yum install subversion
已安装的svn版本信息
svnserve --version
=========建库=========
道理类似mysql,可以建立多个库,如下是建一个拿来玩的demo
cd /usr/local
mkdir svn
cd /usr/local/svn
mkdir demo
然后执行命令,是打算弄俩文件夹,建立俩库
svnadmin create /usr/local/svn/demo
=========配置=========
配置demo这个代码库
cd /usr/local/svn/demo/conf
ls
-------配置passwd密码-------
vi passwd
// 添加用户,我加了四个,参考已经注释的俩例子harry和sally每行前头别留空格
root = root
zhangsan = zs123
lisi = ls123
wangwu = ww123
-------配置authz权限-------
vim authz
// 添加权限 对[group]配置 还有对[demo:/xx/xx]目录的配置
// 在[group]下面添加如下信息,我加了三组分别是admin管理组和dev开发组和test测试组
admin = root
dev = zhangsan,lisi
test = wangwu
# 打算让这仨个岗位组的人
# root做技术部负责人 是admin组的 拥有所有目录读写权限
# zhangsan和lisi做技术开发工程师 是dev组的 能读写代码到code
# zhangsan虽是开发部门带负责写接口文档到doc目录
# lisi只要能读接口文档doc目录即可
# wangwu做测试工程师 是test组的 能读写接口文档目录
# 用户组在前面加@,*表示全部用户,还可以单独对某个用户分配目录权限
# 权限就是读写,分别可以r、w、rw和空,空表示没有任何权限
#如下是配置demo的根目录权限 如果是多个库可以去掉demo后是[/]是所有库的根目录
[demo:/]
# admin组读写 根目录
@admin = rw
# /it/code目录
[demo:/it/code]
# dev组读写 /it/code目录
@dev = rw
# /it/doc目录
[demo:/it/doc]
# test组读写 /it/doc目录
@test = rw
# zhangsan自己读写 /it/doc目录
zhangsan = rw
# lisi只要能读 /it/doc目录
lisi = r
-------配置svnserve.conf入口-------
vim svnserve.conf
// 在[general]下找如下对应配置进行放开注释并修改
#不让匿名访问none
anon-access = none
#授权用户可写
auth-access = write
#可以使用指定文件目录xxxxxx下的passwd
password-db = /xxxxxx/passwd
#可以使用指定文件目录xxxxxx下的authz
authz-db = /xxxxxx/authz
#认证空间名,
realm = My First Repository
-------配置svnserve.conf的后续-------
#把密码passwd认证及权限authz模板复制到特定目录下/xxxxx/
#(可选,我没动,改上面的指定目录的需要复制一下, 多个库公用一套密码权限)
mv authz /xxxxx/
mv passwd /xxxxx/
#修改权限,不允许其他用户读写执行权限(可选,我动了)
chmod 600 /usr/local/svn/demo/conf/{authz,passwd}
=========启动=========
#那俩不用重启,但这个svnserve.conf改了需要重起SVN
cd /usr/local/svn/demo
不用进入特定目录也可以执行,看一下命令参数也行,启动方式如下二选一即可
svnserve --help
启动命令一: svnserve -d -r /usr/local/svn
启动命令二: /usr/bin/svnserve -d -r /usr/local/svn
-d是守护进程我理解就是和redis类似后台启动
-r 就是指定根目录 某个svn库的上级目录
如下俩就是看看进程运行起来了吗,只有你远程svn能检出能提交才算成功
ps -ef | grep svn
netstat -lntup|grep 3690
如下俩优先用第一个,kill完之后在查看一下是否kill成功
kill -15 刚才上面查到的进程数字
kill -9 刚才上面查到的进程数字
好像killall svn也是停止svn
=========是否正常要试一下才行,实践是检验真理的唯一标准=========
浏览器或小乌龟里头进行访问
svn://ip/demo
权限配的【demo:/】所以地址也带后面的/demo
权限配的目录是 [/] 那就权限就更厉害了不用带后面目录路径也行了
=========高级玩法=========
就是多个svn库,那么就是多个目录,访问需要带上各自目录
各自的svnserve.conf;但authz和passwd是可以公用一套的
这样每个项目一个库,单独版本号吧,但是密码权限公用一个配置文件
甚至启动时还可以指定--config-file ARGservice.conf我指定后结果只能用一个版本库了
还有很高的后台管理界面---我没弄太麻烦
甚至还有管理后台不过太麻烦涉及也多:jsvnadmin MySQL,JDK,Tomcat,SVN Apache tomcat
还有钩子玩法--我也没弄,不保准以后用得到
可以监控文件改变就是有人提交代码。从而触发去发短信邮件甚至同步代码等操作
=========开机自启动=========
因为我是yum安装的,就不用新建svnserve.service了,已经给建好了
先cat /lib/systemd/system/svnserve.service看启动配置 启动时指定的根目录是在EnvironmentFile这个里头
修改EnvironmentFile=的这个文件,改成自己的根目录
启动svnserve服务
systemctl start svnserve.service
查看服务当前状态
systemctl status svnserve.service
重新启动服务
systemctl restart svnserve.service
设置开机自启动
systemctl enable svnserve.service
停止开机自启动
systemctl disable svnserve.service
查看所有已启动的服务
systemctl list-units --type=service
=========启动后瞅瞅=========
访问问题看进程和端口和防火墙甚至云服务器端口开放没
权限问题就是起码能访问看配置文件先要有你这个用户且密码也对,看某路径下你账号否能读能写
其他ip用你账号可以,那么就是你客户端本地缓存之类的问题
=========安装前可以瞅瞅=========
#查看系统版本
cat /etc/redhat-release
#查看内核
uname -r
#检查svn是否安装
rpm -qa | grep -i subversion
#如果有就卸载
yum remove subversion
#或者这样卸载
rpm -e subversion
#或者这样强制卸载
rpm -e --nodeps subversion
#是否还有.svn文件
find / -name .svn
#搜并删
find -type d -name ".svn"|xargs rm -rf
参考
https://www.cnblogs.com/oldxu/p/8626125.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下