SVN subversion 安装和配置
代码版本控制工具subversion,用来管理文件或文件夹以及修改记录,类似于文件服务器,用于开发合并代码等。
安装SVN:
yum install subversion -y
创建代码库:
安装完成后创建代码库,先创建代码库文件夹,然后在里面创建代码库,使用命令:
mkdir /var/svn svnadmin create /var/svn/project
代码库的地址为:我们可以使用这个地址去访问代码库了。
svn://192.168.96.130/project
创建完成后可以将现有的代码导入到代码库中,使用如下命令,这个导入就是把现有的代码导入到库中,并没有关联两者。
svn import /codedir file:///var/svn/project -m "some words"
查看代码库中的资料列表:
svn list file:///var/svn/project
配置文件:
配置文件就在刚刚创建的目录中,每个代码库都有各自对应的配置文件。
注意:在实际的使用过程中一个仓库一个用户配置文件会很繁琐难于管理,所以一般都将用户配置文件 passwd和权限配置文件authz 放在统一的文件夹下,各个仓库都使用相同的用户和权限配置文件。
/var/svn/project/conf/svnserve.conf # 主配置文件,在里面可指定passwd和authz文件位置 mkdir /var/svn/etc/ /var/svn/etc/passwd # 配置用户名密码 /var/svn/etc/authz # 配置每个用户的权限
svnserve.conf:主配置文件
[general] #配置段名称 anon-access = none #匿名文件的读写权限,none为拒绝 auth-access = write #认证账户的读写权限 password-db = /var/svn/etc/passwd #账户和密码文件位置 authz-db = /var/svn/etc/authz #权限文件,定义了每个账户所拥有的权限 realm = My Repository #仓库名称
passwd:定义用户
[users] qiyang = 123456 # qiyang是用户名 123456是明文密码 zhuqiyang = 123456 qiyang.zhu = 123456 user1 = 123456
authz:定义用户权限
[groups] group_qiyang = qiyang,zhuqiyang,qiyang.zhu group_user = user1,user2,user3,user4 group_hello = hello1,hello2,hello3 [/] # 表示当前仓库的根目录 @group_qiyang = rw # 表示group_qiyang 这个组里面的用户可以读和写 @group_hello = r [qiyang:/code] # 下面的内容是定义 qiyang 这个仓库中 code 目录的用户权限 @group_user = rw # @开头的表示组名 @group_hello = r qiyang = r # qiyang这个用户可读 * = r # 其他人可读 * = # 其他人禁止访问
启动svn:
svnserve -d -r /var/svn
-d 表示在后台运行
-r 指定仓库位置,千万不要写成仓库名,也就是后面的project不要带上。
CentOS7 启动方式:
vim /usr/lib/systemd/system/svnserve.service vim /etc/sysconfig/svnserve # 可修改仓库位置 systemctl status svnserve.service
默认端口为3690,可以用 --listen-port=port 来修改端口,修改配置文件并不用重新启动服务,是即时生效的。
图形化管理工具
Subversion edge
官网地址:https://www.collab.net/downloads/subversion
SVN客户端
linux客户端:
命令行工具,在linux命令行下输入:
svn --username qiyang --password 123 co svn://192.168.96.132/project /home/qiyang
完成后提示 Checked out revision 2. 这样就可以将远程的代码库下载到本地了。
windows客户端:
图形化工具:TortoiseSVN,下载安装后新建文件夹然后在这个文件夹上右键 SVN checkout,然后弹出对话框输入地址 svn://192.168.96.132/project 后点击ok按钮后弹出账号密码对话框,输入账号和密码,点击ok即可,稍等片刻服务端仓库的代码就到本地的这个文件夹中了。
快速配置
创建多个仓库:
mkdir /data/svn/repo1 -pv mkdir /data/svn/repo2 -pv svnadmin create /data/svn/repo1 svnadmin create /data/svn/repo2
子仓库的配置:因为有多个仓库,每个仓库仓库都有自己的配置文件,这里将每个子仓库的配置都指向同一个文件,这样就能集中管理用户和权限了。
/data/svn/repo1/conf/svnserve.conf [general] anon-access = none #匿名用户 auth-access = write #控制鉴权用户访问版本库的权限 password-db = /data/passwd #指定用户名口令文件名 authz-db = /data/authz #指定权限配置文件名 realm = repo1 #指定版本库的认证域,即在登录时提示的认证域名称 /data/svn/repo2/conf/svnserve.conf [general] anon-access = none auth-access = write password-db = /data/passwd #两个仓库使用同一个密码文件 authz-db = /data/authz #两个仓库使用同一个权限文件 realm = repo2 /data/svn/repo3/conf/svnserve.conf [general] anon-access = none auth-access = write password-db = /data/passwd authz-db = /data/authz realm = repo3
配置权限:authz
[groups] admin = admin,test # 用户组 = 用户1,用户2 guest = guest [repo1:/] @admin = rw # @用户组 = rw 或 用户 = rw @guest = r [repo2:/] @admin = rw @guest = r [repo2:/test] # 对repo2仓库下的目录进行权限管理 @admin = r
很多仓库的情况下:每个仓库都要写成“[repo2:/]”这种格式很麻烦,可以写成如下格式。
[groups] admin = admin [/] @admin = rw
配置用户:passwd
[users] admin = admin # 用户名 = 密码 guest = guest
启动服务:多个仓库的情况下启动服务时要指定父目录。-d 守护进程,-r 仓库目录
svnserve -d -r /data/svn/
只有一个仓库的情况下:
svnserve -d -r /data/svn/repo1
systemd启动服务:
vim /etc/sysconfig/svnserve OPTIONS="-r /data/svn/" systemctl start svnserve.service && systemctl enable svnserve.service
客户端访问地址:
svn://ip/repo1 svn://ip/repo2
参考文章:
zhuanlan.zhihu.com/p/308141489 jianshu.com/p/334404ba805e