目录
1.在centOS上搭建svn_server
1.查询是否已安装软件包及安装软件包
rpm -qa subversion #查询是否安装
yum -y install subversion #svn服务器有subversion提供
2.查看安装版本
svnserve --version
3.创建SVN版本库目录
mkdir -p /var/svn/
使用单仓库
-
svnadmin create /var/svn/project //创建共享的文件夹 project文件夹自动生成
- 修改配置文件,创建账户与密码
-
[root@gui ~]# vim /var/svn/project/conf/svnserve.conf [general] ### These options control access to the repository for unauthenticated ### and authenticated users. Valid values are "write", "read", ### and "none". The sample settings below are the defaults. anon-access = none #匿名无任何权限 注意去掉空格 auth-access = write #有效账户可写 ### The password-db option controls the location of the password ### database file. Unless you specify a path starting with a /, ### the file's location is relative to the directory containing ### this configuration file. ### If SASL is enabled (see below), this file will NOT be used. ### Uncomment the line below to use the default password file. password-db = passwd #定义密码文件 ### The authz-db option controls the location of the authorization ### rules for path-based access control. Unless you specify a path ### starting with a /, the file's location is relative to the the ### directory containing this file. If you don't specify an ### authz-db, no path-based access control is done. ### Uncomment the line below to use the default authorization file. authz-db = authz #ACL访问控制列表文件 [root@gui ~]# vim /var/svn/project/conf/passwd … … [users] harry = pass #用户名和密码 tom = pass #用户名和密码 [root@gui ~]# vim /var/svn/project/conf/authz [/] #定义用户访问目录及权限 harry = rw #用户对项目根路径可读可写 * = r #其他人只读
- 启动服务
-
svnserve -d -r /var/svn/project #只发布project一个目录共享 客户端访问不用绝对路径 netstat -nutlp |grep svnserve #查看服务是否启动 默认3690端口 tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 89809/svnserve
- 导入测试数据
-
cd /usr/lib/systemd/system/ #我的是centOS7系统 你们随便找个目录同步就行了 svn import . file:///var/svn/project/ -m "Init Data" //Init Data 标示导入的文件 把“.”当前的所有文件导入到共享文件夹file:///var/svn/project/ du -sh /var/svn/project/ //查看大小 是否导入成功 608K /var/svn/project/
- 客户端测试
- linux客户端测试、将服务器上的代码下载到本地
-
svn --username harry --password pass co svn://IP地址/ code #建立本地副本,从服务器上co下载代码到本地并创建code目录 ATTENTION! Your password for authentication realm: <svn://127.0.0.1:3690> b72f45f0-bbe5-4a0c-ad4a-37f52704f0b1 can only be stored to disk unencrypted! You are advised to configure your system so that Subversion can store passwords encrypted, if possible. See the documentation for details. You can avoid future appearances of this warning by setting the value of the 'store-plaintext-passwords' option to either 'yes' or 'no' in '/root/.subversion/servers'. Store password unencrypted (yes/no)? yes #提示是否保存密码 ls code #会看到代码库的文件
- windows客户端测试
- 官网下载链接https://tortoisesvn.net/downloads.html
- 下载中文语言包
- 安装完之后设置语言包(语言包一定要和安装软件包对应)
- 检出代码库(进入新建目录——点击右键——选择SVN检出)
- 最后会讲排错
多仓库的使用
- 多仓库的使用是现在大多数企业用到的,一个服务器对应多个项目
- 这里与单用户有点不同的地方就是访问与发布的都是根目录,访问也必须使用绝对路径
- 安装软件(如上)
- 创建SVN版本库目录
-
mkdir /var/svn #这里把/var/svn当作svn的根路径
- 创建多仓库
-
svnadmin create /var/svn/testSVN #创建多仓库 svnadmin create /var/svn/project svnadmin create /var/svn/blog
- 修改配置文件,创建账户与密码(如上修改三个配置文件,注意是三个目录)
- 启动多版本仓库目录
-
svnserve -d -r /var/svn #这里只发布根路径跟上面不同
- 测试访问(要在你的IP地址后面跟上你的仓库名、用绝对路径访问)
-
svn --username harry --password pass co svn://IP地址/project code
- 多版本就讲到这里了
2.svn启动与发布的简单排错
- 启动报错
svnadmin create /var/svn/testSVN svnserve -d -r /var/svn/testSVN #发布单仓库报错 svnserve: E000098: Cant bind server socket: Address already in use //提示已经有服务在使用 pkill -9 svnserve #使用pkill强制杀死服务 注意不是svnserver svnserve -d -r /var/svn/testSVN #可以创建
- 使用systemctl启动报错
systemctl restart svnserve.service #使用systemd方式报错 Job for svnserve.service failed because the control process exited with error code. See "systemctl status svnserve.service" and "journalctl -xe" for details. 这里要讲到服务默认启动的是哪个目录 vim /etc/sysconfig/svnserve #打开svn服务器的配置文件 # OPTIONS is used to pass command-line arguments to svnserve. # # Specify the repository location in -r parameter: OPTIONS="-r /var/svn" #默认启动的是这个目录 现在知道我为什么把这个当成根目录了吧 ~ pkill -9 svnserve systemctl restart svnserve.service #启动无报错 可以更改默认启动目录
- URL报错
svn --username harry --password pass co svn://192.168.1.1/ code svn: E210005: Unable to connect to a repository at URL 'svn://192.168.182.132' svn: E210005: No repository found in 'svn://192.168.182.132' 1.检查用户名及密码 2.检查仓库路径是否写对 3.防火墙是否开放3690端口 4.大兄弟长点心吧 5.svn的命令是要装subversion包
3.ACL权限控制
- 创建一个空的仓库
-
svnadmin create /var/svn/testSVN svnserve -d -r /var/svn/testSVN
- 配置用户密码及权限
- 如果是多仓库可以把配置文件放在你的根目录下
-
[root@gui conf]# cp authz /var/svn/ [root@gui conf]# cp passwd /var/svn/ [root@gui conf]# vim svnserve.conf [root@gui conf]# pwd /var/svn/testSVN/conf 多仓库配置 vim /var/svn/passwd #用户管理 [users] # harry = harryssecret # sally = sallyssecret test = 123456 test1 = 123456 test2 = 123456 test3 = 123456 test4 = 123456 test5 = 123456 test6 = 123456 vim /var/svn/authz #用户控制 [aliases] # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average [groups] # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe admin = test,test1 #定义admin组 ooxx = test,test2,test3 [testSVN:/] #定义testSVN仓库的根目录的权限 @admin = rw #admin组成员对根目录有读写权限 @ooxx = r #ooxx组成员对根目录只读 * = r #其他人只读 [testSVN:/test] #定义testSVN仓库下的test目录权限控制 可以使用test/* @admin = rw #admin组对testSVN仓库下的test目录有读写权限 @ooxx = r * = r [project:/] #定义project仓库的根目录的权限 test4 = rw * = r [/] #定义所有仓库根目录的权限 * = r #所有人只读
- 客户端连接
-
svn --username test --password 123456 co svn://192.168.182.132/testSVN testSVN 用户名 test 密码 123456 co 检出代码 IP及仓库名 放在testSVN这个目录
- 服务端添加目录
- Linux客户端添加目录
-
svn mkdir subdir #创建子目录 mkdir ooxx #创建自定义目录 svn add ooxx #添加到版本控制 svn ci -m “new ooxx” #提交代码 -m是强制的 注释 第一次可能不需要
- windows客户端添加目录
-
Subversion官方文档:
-
http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html#svn.serverconfig.httpd.authz.perdir
来源:CSDN
作者:Mr-You
链接:https://blog.csdn.net/YHF886/article/details/82286043