svn_subversion version control protocol

The latest version of subversion can be found on the Apache website.
 
svn server construction:
After the svn software is installed, we create a repository. The svnadmin tool is a repository management tool provided by the subversion software. This tool can be used to create libraries, backup libraries, revisions and other operations.
Secondly, in order to strengthen the security of our repository, we can implement some security authentication mechanisms for our repository,
After the server software installation and settings are completed, start the corresponding process.
 
Create the server's repository:
Use the svnadmin command to create a server repository, the command and usage are as follows:
svnadmin command path to repository
Order:
create creates a new repository
hotcopy repository hot standby
lslocks prints all lock descriptions.
 
Example:
>>>svnadmin   create    /var/svn/project
>>>svnadmin hotcopy /var/svn/project /var/svn/project_1
>>>svnadmin lsblock /var/svn/project
 
Scene reconstruction:
Our company has just received a website project. Due to the large number of developers, the company hopes to use the version control system to efficiently manage the project code. The project code is saved to the directory /var/web_code. Next, we will create a project called web_project version repository.
>>>mkdir  /var/svn
>>>svnadmin create /var/svn/web_project
Now create a new empty version control system,
We use the import command to import the code we execute into our local code directory,
 
>>> svn import /var/svn/passwd file:///var/svn/passwd -m"users"
增加           /var/svn/passwd
 
提交后的版本为 1。
>>> svn list file:///var/svn/
passwd
>>> svn list file:///var/svn/passwd
passwd
 
 
 
配置文件的修改:
这个是主配置文件subversion.conf
anon-access = read
#这个设置的是匿名用户的访问的方式,read只读,none是拒绝。
auth-access = write
#经过认证的用户是可以有写的操作的。
password-db = passwd
#这个是用来指定账户名称与密码的存放文件名,该文件在conf这个目录的外面
authz-db = authz
#指定基于路径的访问控制文件名(可以对文件或目录设置权限)
realm = My First Repository
#设置的是版本库的域,如果两个版本库的域相同,他们将使用相同的密码数据。
 
我们在来修改passwd这个文件。[这个文件也是存放在conf那个目录的里面]
[users]
harry = harryssecret
sally = sallyssecret
#这个设置的是用户名和密码,等号左边是名,右边是密码。
 
修改authz这个文件
[groups]
admins = harry,sally
#定义组,组成员有harry和sally这两个用户。
 
[/]
#对版本库的根路径进行设置,可以设置为需要控制的路径。
@admins = rw
#admins组中的用户可读,可写权限
* = r
#定义其他的人只有可读的权限,无权限设置为(‘’)
#读写(‘rw’)
 
启动 svnserver服务。
svnserver     -d   以守护进程的方式运行svnserver。
--listen-port=port 指定监听的端口,默认的监听的端口号是3690
-r root  为版本库指定一个虚拟的路径,默认客户端要指定绝对路径访问库。
 
>>>svnserve -d
查看运行的状态:
>>>lsof -i:3690
 
>>>svnserve -d -r /var/svn
 
客户端的访问,
file:/// 直接访问本地磁盘上的版本库(客户端与服务器端在同一一台电脑上)
http:// 配置Apache的webdav协议,通过网页访问版本库
https:// 与http://类似,但是使用了ssl来加密。
svn:// 通过svnserve定义的协议访问版本库
svn+ssh:// 与svn相似,但是使用了ssh封装加密数据
 
svn命令
描述:subversion 客户端命令行功具。
选项:--password 密码
    --usename 用户名
    --revision(-r) 指定要检查的特定版本。
命令:add    添加文件,目录或符号链接
    cat 输出特定文件的内容
checkout     url@rev【path】
从服务器版本库中复制一份副本至本地,url定位版本库,通过rev可以瞎子特定版本的数据,path为本地工作副本的路径。
commit   将本地工作副本修改后的内容发布到版本中,简写为ci
copy  src   dst    将工作副本中的一个文件或目录复制至版本库
delete    path  从本地工作副本中删除一个项目
delete   url 从版本库中删除一个项目
diff 对比两个版本之间的差别
import 提交一个路径的副本至版本库
info 显示本地货远程版本信息
 
实验:
svn checkout file:///var/svn/ mine
这个是在本机上取出我们需要版本库。并且给这个版本命个名,叫做mine
svn co svn://192.168.157.2/var/svn heihei
这个是在远程上取出我们需要的版本库,并且给这个版本命名为heihei
svn import -m "disnaci " shadow file:///var/svn/password/
这个是提交给本地版本库一个自己的文件。
svn info svn://192.168.157.2/var/svn/
路径: svn
URL: svn://192.168.157.2/var/svn
版本库根: svn://192.168.157.2/var/svn
版本库 UUID: 53b6c065-5094-42c3-9818-02013a4f5c50
版本: 2
节点种类: 目录
最后修改的作者: root
最后修改的版本: 2
最后修改的时间: 2017-08-29 14:42:23 +0800 (二, 2017-08-29)
 
svnlook命令
描述:这个是svn的检查工具,我们可以通过svnlook help来查看命令帮助。
用法  svnlook命令 版本库路径【选项】
命令:
author 显示作者
cat 显示版本库中文件的内容
date 显示时间标记
log 显示日志消息
tree 显示版本库资料树
svnlook实例:
>>>svnlook author /var/svn/
>>>svnlook author -r 1 /var/svn/
>>>svnlook author -r 2 /var/svn/
>>>svnlook author -r 2 /var/svn/ passwd
上面的这些例子,显示的是给我们我们第一个版本的作者,以及我们第二个版本的作者,第三个是我们这个版本库中文件的作者是谁。
 
svn+ssh服务器的搭建。
服务器端:
>>>service  sshd start
这个是将我们需要的ssh服务启动起来。
>>>chkconfig sshd on
把这个服务设置成永久启动
>>> echo "nidaye de zhenfan " > file
先新建立一个我们需要的文件。
>>>svn import file file:///var/svn/project/project_11/ -m "web_code"
将我们需要的文件提交到我们svn 的版本库中。
>>>
客户端:
>>> svn co svn+ssh://192.168.157.2/var/svn/project /project
这个是将我们远程的这个版本库里面的文件夹存放到我们本地的/project这个目录里面。这里值得注意的是,我们的版本库必须是一个目录,存放文件的上一级的目录,而不是当前指向的那个文件。
 
Apache+svn服务器的搭建
这样的好处是可以使用Apache的多种认证的机制。
不需要创建系统的账户
Apache提供了完善的日志功能。
可以通过tls进行数据的加密
http以及https可以穿越企业的防火墙
客户端简单的通过浏览器访问版本库
 
>>>svn import file file:///var/svn/project/project_11/ -m "web_code"
在服务器上创建我们的版本库,并且将我们的新的文件提交到我们的版本库中。
>>>yum install -y httpd
安装我们的Apache服务
>>>yum install -y mod_dav_svn
安装我们的Apache需要的svn模块。
 
#############################################
>>>vim /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
#这个是加载我们的dav_svn模块
LoadModule authz_svn_module   modules/mod_authz_svn.so
#这个是加载权限的设置模块
#除了这两个模块我们还需要确保/etc/httpd/conf/httpd.conf文件中dav_module模块也会被加载
a) readable and writable by the 'apache' user, and
#默认Apache的启动用户为Apache,所以需要Apache用户对版本库有读写的权限。
 
 
#   b) labelled with the 'httpd_sys_content_t' context if using
#   SELinux
#如果开启了selinxu,则版本库目录需要有http_sys_content_t 安全上下文的标签
###################################################
<Location /svn>
#当用户调用URL是以svn开始(http://hostname/svn/...),Apache会将控制权交给DAV这个模块处理
DAV svn
SVNParentPath /var/svn
#通过SVNParentPath制定所有的版本库的主目录(发布所有的版本库)
#也可以通过SVNParentPath制定某个特定的版本库的路径(打不特定的版本)
#   # Limit write permission to list of valid users.
#   <LimitExcept GET PROPFIND OPTIONS REPORT>
#      # Require SSL connection for password protection.
#      # SSLRequireSSL
#
      AuthType Basic
#Apache认证方式
      AuthName "Please input password"
#提示字符
      AuthUserFile /var/svn/.pass
#账户的文件路径,为了安全,应隐藏该文件
      Require valid-user
#这个设置的是仅为有效用户可以访问
#   </LimitExcept>
</Location>
################################################
服务器端的操作:
>>>  chown -R apache.apache /var/svn
#给咱们这个目录一个Apache的权限,让Apache有权限来访问我们svn的目录
>>> chcon -R -t http_sys_content_t /var/svn
#这个是selinux开启之后,才用到的命令,在咱们修改配置文件的时候也可以看到这段。
>>>  htpasswd -c /var/svn/.pass jerry
#这个是给咱们的用户重新设置一个密码的。
>>>  service httpd restart
#重启Apache,让咱们的服务生效
>>>  chkconfig httpd on
#让Apache永久启动。
 
客户端
直接在浏览器端使用,http://IP/svn/project   这样访问就可可以了。
 
 
mkdir /opt/svn
mkdir  shell
mkdir {a..c}1
svnadmin create /opt/svn

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325281794&siteId=291194637