之前一直在Windows服务器上安装Visual SVN搭建的svn服务器。
今天想把SVN服务器转移到我自己买的阿里云服务器上,顺便做下笔记。
lsb_release -a
lsb(Linux Standards Base,linux核心标准)
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.2.1511 (Core)
Release: 7.2.1511
Codename: Core
rpm -qa subversion
svn --version
若有结果显示,则表示已安装。
subversion-1.7.14-10.el7.x86_64
rpm命令是RPM软件包的管理工具
rpm是RPM软件包的管理工具。下面是命令参数说明:
-a:查询所有套件;
-b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;
-c:只列出组态配置文件,本参数需配合"-l"参数使用;
-d:只列出文本文件,本参数需配合"-l"参数使用;
-e<套件档>或--erase<套件档>:删除指定的套件;
-f<文件>+:查询拥有指定文件的套件;
-h或--hash:套件安装时列出标记;
-i:显示套件的相关信息; -i<套件档>或--install<套件档>:安装指定的套件档;
-l:显示套件的文件列表;
-p<套件档>+:查询指定的RPM套件档;
-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
-R:显示套件的关联性信息;
-s:显示文件状态,本参数需配合"-l"参数使用;
-U<套件档>或--upgrade<套件档>:升级指定的套件档;
-v:显示指令执行过程;
-vv:详细显示指令执行过程,便于排错。
rpm更多用法后面再了解。
yum install subversion
mkdir -p /opt/svn/repo/myproject
svnadmin create /opt/svn/repo/myproject
执行这两条命令后,myproject文件夹下就会有如下文件:conf, db,format,hooks, locks, README.txt等文件,代表一个SVN库创建成功。
注意:以下的配置项都需要顶格,即前面不能预留空格,否则报错。
编辑conf/passwd,配置用户
# harry = harryssecret
# sally = sallyssecret
hello = world(添加密码为world的hello用户,这里是SVN用户,跟linux系统用户无关)
编辑conf/authz,配置权限
[myproject:/]
hello= rw
hello用户对myproject这个SVN库下的所有文件有读写权限。
-------------- >> 2017.12.15 更新 --------------
上面是针对整个项目目录的权限配置。
如果只想分配部分目录的权限给某人,就可以如下采用方式:
[myproject:/要分配给svn用户zhai14的文件夹]
zhai14 = rw
上面分配的文件夹,是在myproject目录下的。
现在我们来测试上面权限的设置。
由于开始我用hello这个svn用户导入代码了,windows下Tortoise Svn会缓存第一次通过验证的svn用户信息。现在要更换zhai14这个用户来测试,需要将缓存清理掉。
第一步:点击鼠标右键,进入设置菜单项。
第二步:进入如图选项,点击清除按钮,然后从弹出的对话框里勾选要删除的缓存信息。
-------------- End: 2017.12.15 更新 --------------
vi svnserve.conf
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
svnserve -d -r /opt/svn/repo
killall svnserve
或
ps -aux | grep svn
kill -9 进程号
如果项目有历史svn版本,请先将项目里.svn文件删除。
浏览器里访问svn://服务器ip/myproject, 访问提示输入密码(上面配置svn用户时的账号和密码),则代表svn代码库及访问路径都正确。
本人用的阿里云服务器,已经关闭了防火墙,访问始终不成功。
后来在阿里云服务器管理面板里添加了3690端口的入方向安全组规则。
协议类型 端口范围 授权类型 授权对象 优先级
TCP 3690/3690 地址段访问 0.0.0.0/0 1
其中3690是svn服务启动时的默认端口。
如果要修改,可以在启动时指定具体端口:
svnserve -d -r /opt/svn/repo --listen-port num(新的端口号)
SVN代码库能够访问成功,接下来就可以开始进行项目导入。
svn import svn://服务器ip/myproject
-------------- >> 2017.12.15 更新 --------------
如果不在当前目录,就加上要导入的代码文件夹位置:
svn import /项目代码根目录位置 svn://服务器ip/myproject -m 'initial import'
注意:以上命令是将指定文件目录下的代码导入到版本库里myproject目录下,注意路径正确填写,以避免版本库里myproject下多了一层文件夹,
-------------- End: 2017.12.15 更新 --------------
注意密码验证时,区分清楚什么时候填服务器密码,什么时候填SVN用户密码。
项目导入成功后,我们就可以在客户端checkout了。
然后在checkout的项目里,我们就可以svn add ,svn commit,svn update了。