一:安装svnyuminstall-ysubversion二:创建仓库1:创建仓库目录mkdir-p/var/project/test2:创建仓库svnadmincreate/var/project/test创建成功后,在/var/project/test目录以下目录:drwxr-xr-x。2rootroot511月30日13:26confdrwxr-sr-x。6rootroot40961月30日13:26db-r--r--r--。1rootroot2Jan3013:26formatdrwxr-xr-x。2rootroot40961月30日13:26hooksdrwxr-xr-x。2rootroot39Jan3013:26locks-rw-r--r--。1rootroot229January3013:26README.txtconf目录是svn的配置目录,包括:-rw-r--r--。1rootroot1080January3013:26authz#Authoritycontrol-rw-r--r--.1rootroot309January3013:26passwd#密码管理-rw-r--r--。1rootroot3090January3013:26svnserve.conf#SVN服务进程配置三:svn配置1:权限配置(/var/project/test/conf/authz)#用户分组(admin->administrator,development->developmentother->other)[groups]admin=test1#管理员用户test1development=test2,test3#开发用户test2,test3other=test4,test5,test6#其他用户test4,,test5,test6#权限配置[/]@admin=rw#管理员读写权限@development=rw#开发读写权限@other=r#Otherreadauthoritytest7=rw#test7用户读写权限2:密码配置(/var/project/test/conf/passwd)#密码配置,格式为username=password,密码为明文[users]test1=test1test2=test2test3=test3test4=test4test5=test5test6=test6test7=test73:SVN服务进程配置(/var/project/test/conf/svnserve.conf)[general]anon-access=none#匿名用户无权访问auth-access=write#认证用户可读写password-db=passwd#指定用户认证密码文件authz-db=authz#指定权限配置文件4:启动svn服务(默认端口号3690)svnserve-d-r/var/project#-d服务后台运行-r指定工作目录,/var/project表示指定工作目录,注意不能指定仓库名地址(/var/project/test)指定端口启动svnsvnserve-d-r/var/project--listen-port36915:关闭防火墙,或开启指定端口号1:关闭防火墙systemctlstopfirewalld2:开启指定防火墙#开启3690端口firewall-cmd--zone=public--add-port=3690/tcp--permanent#Refreshconfigurationfirewall-cmd--reload6:客户端连接并上传文件连接到windows上的svn1:新建目录,右键选择svncheckout2:填写svnlinux在版本库上的地址svn://ip:3690/仓库名(这里的仓库名不是/var/project/test而是/test)2:填写用户名和密码这时候我们可以看到该目录下生成了一个.svn文件,说明我们已经连接到linux上的svn服务器3:上传文件现在我们新建一个test.txt文件,并在里面填写一些信息(1)右键选择添加然后选择test.txt文件,点击确定,然后我们会看到test.txt文件上会有一个加号(2):右击上传,选择提交,填写备注,选择要上传的文件,点击确定,然后我们可以看到test.txt文件上面的加号会变成绿色的对勾,说明上传成功了,但是这时候我们发现在/var/project/test里面没有找到我们上传的文件目录。为什么是这样?我们没有上传成功吗?这是因为将文件上传到SVN仓库后,上传的文件不再以文件原来的格式存储,而是被svn以其自定义的格式压缩成仓库数据,存储在仓库中,其中,svn服务器版本库有两种格式,一种是FSFS,一种是BDB。这时候我们需要在linux4中实现checkout:checkoutsvncheckoutsvn://192.168.11.201/test/data/test#svn://192.168.11.201/test表示需要的仓库地址checkedout/data/test表示需要检出到哪个目录这是我们在客户端上传的文件,之前我们在/data/test目录下可以看到,但是现在问题又来了,我们上传文件到客户端,不可能每次都在服务器端签出,那么如何自动签出呢?5:自动checkout配置在/var/project/test/hooks目录下新建一个post-commit文件,在post-commit文件中添加内容:#!/bin/shREPOS="$1"#warehouseREV="$2"#版本号export.UTF-8#encodingSVN=/usr/bin/svn#svn地址WEB=/data/test#待更新的项目目录$SVNupdate$WEB--usernametest1--passwordtest1#--usernametest1表示设置用户名--passwordtest1表示设置密码和setpost-committoexecutablechmod+x/var/project/test/hooks/post-commit完成自动checkout配置,但是注意第一次需要手动checkout,之后就不需要了。到这里,linux中的svnserver就完成了。
