subversion
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
TortoiseSVN
TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 Subversion 和版本控制系统看作一种“时间机器”。
Subversion目录说明
- /var/svn/project/
目录 | 说明 |
---|---|
db | 存放所有的版本控制数据文件。 |
hooks | 放置hook脚本文件。 |
locks | 用来追踪存取文件库的客户端。 |
format | 一个文本文件,文件中只包含一个整数,表示当前文件库配置的版本号。 |
conf | SVN版本库的配置文件(版本库的访问账号、权限等)。 |
/etc/sysconfig/svnserve | OPTIONS="-r /Data/Svn" 指定svn根目录,如果不是此命令更改,是默认不需要更改 |
创建一键自动化部署subversion
- /var/svn #存储库根目录
- /var/svn/project #创建版本库
- /var/svn/project/trunk #创建和使用一个仓库,最终的软件上传的目录
- /var/svn/project/conf/svnserve.conf #SVN业务配置
- /var/svn/project/conf/passwd #设置存储库的用户名和密码
- 用户名密码,只允许test01,test02用户访问project全局目录下所有文件的增删改查权限,登录,test03只读project下的trunk目录文件,不允许创建删除操作
test01/test@123
test02/test@123
test03/test@123
- /var/svn/project/conf/authz #设置组和用户,允许开发者组在SVN文档-root上读写,允许读取fedora用户的[trunk]文件夹
- /etc/httpd/conf.d/subversion.conf # 设置访问权限
- /var/svn/.svnpasswd #配置HTTP登录用户
vim /Install_svn.sh
#!/bin/bash
# -*- coding: utf-8 -*-
# Author: CIASM
# update 2023/05/09
svn_check=/usr/share/doc/subversion
install_svn (){
if [ ! -d ${svn_check} ];then
echo "install svn"
if [ $? -eq 0 ];then
yum install -y httpd mod_dav_svn subversion
config_svn
echo -e "\033[32mThe svn Install Sussess...\033[0m"
else
echo -e "\033[33mThe svn Install Failed...\033[0m"
exit 1
fi
else
echo -e "\033[31mThe svn Install already...\033[0m"
fi
}
config_svn (){
#Create the repository root
mkdir -p /var/svn
#Starting the svn
systemctl enable --now svnserve
#Command to create a version library
mkdir -p /var/svn/project
svnadmin create /var/svn/project
#Create a repository
svn mkdir file:///var/svn/project/trunk -m "create"
#Delete the default configurations of the svn
rm -rf /var/svn/project/conf/svnserve.conf
rm -rf /var/svn/project/conf/passwd
rm -rf /var/svn/project/conf/authz
#Modify the SVN service configuration
cat >>/var/svn/project/conf/svnserve.conf<<EOF
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
EOF
#Set the username and password for the repository
cat >>/var/svn/project/conf/passwd<<EOF
[users]
test01 = test@123
test02 = test@123
test03 = test@123
EOF
#Set groups and users,
#allow read/write on SVN document-root for developer group,
#allow read on [trunk] folder for fedora user
cat >>/var/svn/project/conf/authz<<EOF
[groups]
developer = test01,test02
[/]
@developer = rw
[/trunk]
test03 = r
EOF
#set access permission
cat >>/etc/httpd/conf.d/subversion.conf<<EOF
# create new
<Location /project>
DAV svn
AuthType Basic
AuthName "DAV SVN"
AuthUserFile /var/svn/.svnpasswd
Require valid-user
SVNPath /var/svn/project
</Location>
EOF
#config http login user
htpasswd -cb /var/svn/.svnpasswd test01 test@123
chown -R apache. /var/svn/project
systemctl restart httpd
systemctl enable --now httpd
#Firewall port configuration
firewall-cmd --add-service=svn --permanent && firewall-cmd --reload
firewall-cmd --zone=public --add-port=80/tcp --permanent && firewall-cmd --reload
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
echo "svn version check"
svnserve --version | grep ", version" | awk '{print $3}'
}
main (){
install_svn
}
main
执行一键安装
sh /Install_svn.sh
Windows 客户连接svn
- TortoiseSVN download
- TortoiseSVN zh-cn语言包
- svn://192.168.12.241/project
- 用户名密码,只允许test01,test02用户访问project全局目录下所有文件的增删改查权限,登录,test03只读project下的trunk目录文件,不允许创建删除操作
连接到库
上传容易文件到trunk 目录
提交上传文件到svn 服务器
选择需要上传到svn服务器的文件
文件上传完成
http访问svn
- 192.168.12.241/project/
-
test01/test@123