SVN-linux配置
CentOS中安装SVN服务端:
方法一:
[root@localhost ~]# svn --version
bash: svn: 未找到命令...
安装软件包“subversion”以提供命令“svn”? [N/y]
直接输入y会自动安装,安装完成后再输入svn --version查看:
[root@localhost ~]# svn --version svn,版本 1.10.2 (r1835932) 编译于 Jun 24 2019,19:19:14 在 x86_64-redhat-linux-gnu Copyright (C) 2018 The Apache Software Foundation. This software consists of contributions made by many people; see the NOTICE file for more information. Subversion is open source software, see http://subversion.apache.org/ 可使用以下的版本库访问模块: * ra_svn : 使用 svn 网络协议访问版本库的模块。 - 使用 Cyrus SASL 认证 - 处理“svn”方案 * ra_local : 访问本地磁盘的版本库模块。 - 处理“file”方案 * ra_serf : Module for accessing a repository via WebDAV protocol using serf. - using serf 1.3.9 (compiled with 1.3.9) - 处理“http”方案 - 处理“https”方案 The following authentication credential caches are available: * Plaintext cache in /root/.subversion * Gnome Keyring * GPG-Agent
方法二:
yum search svnserve(可省)
[root@localhost ~]# svn --version -bash: svn: 未找到命令 [root@localhost ~]# yum search svnserve 已加载插件:fastestmirror base | 3.6 kB 00:00:00 extras | 2.9 kB 00:00:00 Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=updates&infra=stock error was 12: Timeout on http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=updates&infra=stock: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds') One of the configured repositories failed (未知), and yum doesn't have enough cached data to continue. At this point the only safe thing yum can do is fail. There are a few ways to work "fix" this: 1. Contact the upstream for the repository and get them to fix the problem. 2. Reconfigure the baseurl/etc. for the repository, to point to a working upstream. This is most often useful if you are using a newer distribution release than is supported by the repository (and the packages for the previous distribution release still work). 3. Run the command with the repository temporarily disabled yum --disablerepo=<repoid> ... 4. Disable the repository permanently, so yum won't use it by default. Yum will then just ignore the repository until you permanently enable it again or use --enablerepo for temporary usage: yum-config-manager --disable <repoid> or subscription-manager repos --disable=<repoid> 5. Configure the failing repository to be skipped, if it is unavailable. Note that yum will try to contact the repo. when it runs most commands, so will have to try and fail each time (and thus. yum will be be much slower). If it is a very temporary problem though, this is often a nice compromise: yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true Cannot find a valid baseurl for repo: updates/7/x86_64
yum install subversion -y(直接输入此命令就可安装SVN服务端)
[root@localhost ~]# yum install subversion -y 已加载插件:fastestmirror base | 3.6 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 (1/2): base/7/x86_64/group_gz | 165 kB 00:00:00 (2/2): base/7/x86_64/primary_db | 6.0 MB 00:00:01 Loading mirror speeds from cached hostfile * base: mirrors.cn99.com * extras: mirrors.cn99.com * updates: mirrors.cn99.com 正在解决依赖关系 --> 正在检查事务 ---> 软件包 subversion.x86_64.0.1.7.14-14.el7 将被 安装 --> 正在处理依赖关系 subversion-libs(x86-64) = 1.7.14-14.el7,它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 perl(strict),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 perl(Carp),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_wc-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_subr-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_repos-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_ra_svn-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_ra_neon-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_ra_local-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_ra-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_fs_util-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_fs_fs-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_fs_base-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_fs-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_diff-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_delta-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libsvn_client-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libneon.so.27()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libaprutil-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在处理依赖关系 libapr-1.so.0()(64bit),它被软件包 subversion-1.7.14-14.el7.x86_64 需要 --> 正在检查事务 ---> 软件包 apr.x86_64.0.1.4.8-5.el7 将被 安装 ---> 软件包 apr-util.x86_64.0.1.5.2-6.el7 将被 安装 ---> 软件包 neon.x86_64.0.0.30.0-4.el7 将被 安装 --> 正在处理依赖关系 libpakchois.so.0()(64bit),它被软件包 neon-0.30.0-4.el7.x86_64 需要 ---> 软件包 perl.x86_64.4.5.16.3-294.el7_6 将被 安装 --> 正在处理依赖关系 perl-libs = 4:5.16.3-294.el7_6,它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Socket) >= 1.3,它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Scalar::Util) >= 1.10,它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl-macros,它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl-libs,它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(threads::shared),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(threads),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(constant),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Time::Local),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Time::HiRes),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Storable),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Socket),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Scalar::Util),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Pod::Simple::XHTML),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Pod::Simple::Search),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Getopt::Long),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Filter::Util::Call),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(File::Temp),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(File::Spec::Unix),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(File::Spec::Functions),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(File::Spec),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(File::Path),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Exporter),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 perl(Cwd),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 --> 正在处理依赖关系 libperl.so()(64bit),它被软件包 4:perl-5.16.3-294.el7_6.x86_64 需要 ---> 软件包 perl-Carp.noarch.0.1.26-244.el7 将被 安装 ---> 软件包 subversion-libs.x86_64.0.1.7.14-14.el7 将被 安装 --> 正在检查事务 ---> 软件包 pakchois.x86_64.0.0.4-10.el7 将被 安装 ---> 软件包 perl-Exporter.noarch.0.5.68-3.el7 将被 安装 ---> 软件包 perl-File-Path.noarch.0.2.09-2.el7 将被 安装 ---> 软件包 perl-File-Temp.noarch.0.0.23.01-3.el7 将被 安装 ---> 软件包 perl-Filter.x86_64.0.1.49-3.el7 将被 安装 ---> 软件包 perl-Getopt-Long.noarch.0.2.40-3.el7 将被 安装 --> 正在处理依赖关系 perl(Pod::Usage) >= 1.14,它被软件包 perl-Getopt-Long-2.40-3.el7.noarch 需要 --> 正在处理依赖关系 perl(Text::ParseWords),它被软件包 perl-Getopt-Long-2.40-3.el7.noarch 需要 ---> 软件包 perl-PathTools.x86_64.0.3.40-5.el7 将被 安装 ---> 软件包 perl-Pod-Simple.noarch.1.3.28-4.el7 将被 安装 --> 正在处理依赖关系 perl(Pod::Escapes) >= 1.04,它被软件包 1:perl-Pod-Simple-3.28-4.el7.noarch 需要 --> 正在处理依赖关系 perl(Encode),它被软件包 1:perl-Pod-Simple-3.28-4.el7.noarch 需要 ---> 软件包 perl-Scalar-List-Utils.x86_64.0.1.27-248.el7 将被 安装 ---> 软件包 perl-Socket.x86_64.0.2.010-4.el7 将被 安装 ---> 软件包 perl-Storable.x86_64.0.2.45-3.el7 将被 安装 ---> 软件包 perl-Time-HiRes.x86_64.4.1.9725-3.el7 将被 安装 ---> 软件包 perl-Time-Local.noarch.0.1.2300-2.el7 将被 安装 ---> 软件包 perl-constant.noarch.0.1.27-2.el7 将被 安装 ---> 软件包 perl-libs.x86_64.4.5.16.3-294.el7_6 将被 安装 ---> 软件包 perl-macros.x86_64.4.5.16.3-294.el7_6 将被 安装 ---> 软件包 perl-threads.x86_64.0.1.87-4.el7 将被 安装 ---> 软件包 perl-threads-shared.x86_64.0.1.43-6.el7 将被 安装 --> 正在检查事务 ---> 软件包 perl-Encode.x86_64.0.2.51-7.el7 将被 安装 ---> 软件包 perl-Pod-Escapes.noarch.1.1.04-294.el7_6 将被 安装 ---> 软件包 perl-Pod-Usage.noarch.0.1.63-3.el7 将被 安装 --> 正在处理依赖关系 perl(Pod::Text) >= 3.15,它被软件包 perl-Pod-Usage-1.63-3.el7.noarch 需要 --> 正在处理依赖关系 perl-Pod-Perldoc,它被软件包 perl-Pod-Usage-1.63-3.el7.noarch 需要 ---> 软件包 perl-Text-ParseWords.noarch.0.3.29-4.el7 将被 安装 --> 正在检查事务 ---> 软件包 perl-Pod-Perldoc.noarch.0.3.20-4.el7 将被 安装 --> 正在处理依赖关系 perl(parent),它被软件包 perl-Pod-Perldoc-3.20-4.el7.noarch 需要 --> 正在处理依赖关系 perl(HTTP::Tiny),它被软件包 perl-Pod-Perldoc-3.20-4.el7.noarch 需要 ---> 软件包 perl-podlators.noarch.0.2.5.1-3.el7 将被 安装 --> 正在检查事务 ---> 软件包 perl-HTTP-Tiny.noarch.0.0.033-3.el7 将被 安装 ---> 软件包 perl-parent.noarch.1.0.225-244.el7 将被 安装 --> 解决依赖关系完成 依赖关系解决 =============================================================================================== Package 架构 版本 源 大小 =============================================================================================== 正在安装: subversion x86_64 1.7.14-14.el7 base 1.0 M 为依赖而安装: apr x86_64 1.4.8-5.el7 base 103 k apr-util x86_64 1.5.2-6.el7 base 92 k neon x86_64 0.30.0-4.el7 base 166 k pakchois x86_64 0.4-10.el7 base 14 k perl x86_64 4:5.16.3-294.el7_6 base 8.0 M perl-Carp noarch 1.26-244.el7 base 19 k perl-Encode x86_64 2.51-7.el7 base 1.5 M perl-Exporter noarch 5.68-3.el7 base 28 k perl-File-Path noarch 2.09-2.el7 base 26 k perl-File-Temp noarch 0.23.01-3.el7 base 56 k perl-Filter x86_64 1.49-3.el7 base 76 k perl-Getopt-Long noarch 2.40-3.el7 base 56 k perl-HTTP-Tiny noarch 0.033-3.el7 base 38 k perl-PathTools x86_64 3.40-5.el7 base 82 k perl-Pod-Escapes noarch 1:1.04-294.el7_6 base 51 k perl-Pod-Perldoc noarch 3.20-4.el7 base 87 k perl-Pod-Simple noarch 1:3.28-4.el7 base 216 k perl-Pod-Usage noarch 1.63-3.el7 base 27 k perl-Scalar-List-Utils x86_64 1.27-248.el7 base 36 k perl-Socket x86_64 2.010-4.el7 base 49 k perl-Storable x86_64 2.45-3.el7 base 77 k perl-Text-ParseWords noarch 3.29-4.el7 base 14 k perl-Time-HiRes x86_64 4:1.9725-3.el7 base 45 k perl-Time-Local noarch 1.2300-2.el7 base 24 k perl-constant noarch 1.27-2.el7 base 19 k perl-libs x86_64 4:5.16.3-294.el7_6 base 688 k perl-macros x86_64 4:5.16.3-294.el7_6 base 44 k perl-parent noarch 1:0.225-244.el7 base 12 k perl-podlators noarch 2.5.1-3.el7 base 112 k perl-threads x86_64 1.87-4.el7 base 49 k perl-threads-shared x86_64 1.43-6.el7 base 39 k subversion-libs x86_64 1.7.14-14.el7 base 922 k 事务概要 =============================================================================================== 安装 1 软件包 (+32 依赖软件包) 总下载量:14 M 安装大小:44 M Downloading packages: 警告:/var/cache/yum/x86_64/7/base/packages/apr-util-1.5.2-6.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY apr-util-1.5.2-6.el7.x86_64.rpm 的公钥尚未安装 (1/33): apr-util-1.5.2-6.el7.x86_64.rpm | 92 kB 00:00:00 (2/33): apr-1.4.8-5.el7.x86_64.rpm | 103 kB 00:00:00 (3/33): pakchois-0.4-10.el7.x86_64.rpm | 14 kB 00:00:00 (4/33): neon-0.30.0-4.el7.x86_64.rpm | 166 kB 00:00:00 (5/33): perl-Carp-1.26-244.el7.noarch.rpm | 19 kB 00:00:00 (6/33): perl-Encode-2.51-7.el7.x86_64.rpm | 1.5 MB 00:00:00 (7/33): perl-Exporter-5.68-3.el7.noarch.rpm | 28 kB 00:00:00 (8/33): perl-File-Path-2.09-2.el7.noarch.rpm | 26 kB 00:00:00 (9/33): perl-File-Temp-0.23.01-3.el7.noarch.rpm | 56 kB 00:00:00 (10/33): perl-Filter-1.49-3.el7.x86_64.rpm | 76 kB 00:00:00 (11/33): perl-5.16.3-294.el7_6.x86_64.rpm | 8.0 MB 00:00:01 (12/33): perl-Getopt-Long-2.40-3.el7.noarch.rpm | 56 kB 00:00:00 (13/33): perl-HTTP-Tiny-0.033-3.el7.noarch.rpm | 38 kB 00:00:00 (14/33): perl-PathTools-3.40-5.el7.x86_64.rpm | 82 kB 00:00:00 (15/33): perl-Pod-Escapes-1.04-294.el7_6.noarch.rpm | 51 kB 00:00:00 (16/33): perl-Pod-Perldoc-3.20-4.el7.noarch.rpm | 87 kB 00:00:00 (17/33): perl-Pod-Usage-1.63-3.el7.noarch.rpm | 27 kB 00:00:00 (18/33): perl-Pod-Simple-3.28-4.el7.noarch.rpm | 216 kB 00:00:00 (19/33): perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm | 36 kB 00:00:00 (20/33): perl-Socket-2.010-4.el7.x86_64.rpm | 49 kB 00:00:00 (21/33): perl-Storable-2.45-3.el7.x86_64.rpm | 77 kB 00:00:00 (22/33): perl-Time-HiRes-1.9725-3.el7.x86_64.rpm | 45 kB 00:00:00 (23/33): perl-Time-Local-1.2300-2.el7.noarch.rpm | 24 kB 00:00:00 (24/33): perl-constant-1.27-2.el7.noarch.rpm | 19 kB 00:00:00 (25/33): perl-Text-ParseWords-3.29-4.el7.noarch.rpm | 14 kB 00:00:00 (26/33): perl-libs-5.16.3-294.el7_6.x86_64.rpm | 688 kB 00:00:00 (27/33): perl-macros-5.16.3-294.el7_6.x86_64.rpm | 44 kB 00:00:00 (28/33): perl-parent-0.225-244.el7.noarch.rpm | 12 kB 00:00:00 (29/33): perl-threads-1.87-4.el7.x86_64.rpm | 49 kB 00:00:00 (30/33): perl-podlators-2.5.1-3.el7.noarch.rpm | 112 kB 00:00:00 (31/33): perl-threads-shared-1.43-6.el7.x86_64.rpm | 39 kB 00:00:00 (32/33): subversion-libs-1.7.14-14.el7.x86_64.rpm | 922 kB 00:00:00 (33/33): subversion-1.7.14-14.el7.x86_64.rpm | 1.0 MB 00:00:00 ----------------------------------------------------------------------------------------------- 总计 5.9 MB/s | 14 MB 00:00:02 从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥 导入 GPG key 0xF4A80EB5: 用户ID : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>" 指纹 : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 软件包 : centos-release-7-3.1611.el7.centos.x86_64 (@anaconda) 来自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安装 : apr-1.4.8-5.el7.x86_64 1/33 正在安装 : apr-util-1.5.2-6.el7.x86_64 2/33 正在安装 : 1:perl-parent-0.225-244.el7.noarch 3/33 正在安装 : perl-HTTP-Tiny-0.033-3.el7.noarch 4/33 正在安装 : perl-podlators-2.5.1-3.el7.noarch 5/33 正在安装 : perl-Pod-Perldoc-3.20-4.el7.noarch 6/33 正在安装 : 1:perl-Pod-Escapes-1.04-294.el7_6.noarch 7/33 正在安装 : perl-Encode-2.51-7.el7.x86_64 8/33 正在安装 : perl-Text-ParseWords-3.29-4.el7.noarch 9/33 正在安装 : perl-Pod-Usage-1.63-3.el7.noarch 10/33 正在安装 : 4:perl-libs-5.16.3-294.el7_6.x86_64 11/33 正在安装 : 4:perl-macros-5.16.3-294.el7_6.x86_64 12/33 正在安装 : perl-Storable-2.45-3.el7.x86_64 13/33 正在安装 : perl-Exporter-5.68-3.el7.noarch 14/33 正在安装 : perl-constant-1.27-2.el7.noarch 15/33 正在安装 : perl-Time-Local-1.2300-2.el7.noarch 16/33 正在安装 : perl-Socket-2.010-4.el7.x86_64 17/33 正在安装 : perl-Carp-1.26-244.el7.noarch 18/33 正在安装 : 4:perl-Time-HiRes-1.9725-3.el7.x86_64 19/33 正在安装 : perl-PathTools-3.40-5.el7.x86_64 20/33 正在安装 : perl-Scalar-List-Utils-1.27-248.el7.x86_64 21/33 正在安装 : 1:perl-Pod-Simple-3.28-4.el7.noarch 22/33 正在安装 : perl-File-Temp-0.23.01-3.el7.noarch 23/33 正在安装 : perl-File-Path-2.09-2.el7.noarch 24/33 正在安装 : perl-threads-shared-1.43-6.el7.x86_64 25/33 正在安装 : perl-threads-1.87-4.el7.x86_64 26/33 正在安装 : perl-Filter-1.49-3.el7.x86_64 27/33 正在安装 : perl-Getopt-Long-2.40-3.el7.noarch 28/33 正在安装 : 4:perl-5.16.3-294.el7_6.x86_64 29/33 正在安装 : pakchois-0.4-10.el7.x86_64 30/33 正在安装 : neon-0.30.0-4.el7.x86_64 31/33 正在安装 : subversion-libs-1.7.14-14.el7.x86_64 32/33 正在安装 : subversion-1.7.14-14.el7.x86_64 33/33 验证中 : perl-HTTP-Tiny-0.033-3.el7.noarch 1/33 验证中 : perl-threads-shared-1.43-6.el7.x86_64 2/33 验证中 : perl-Storable-2.45-3.el7.x86_64 3/33 验证中 : 1:perl-Pod-Escapes-1.04-294.el7_6.noarch 4/33 验证中 : perl-Exporter-5.68-3.el7.noarch 5/33 验证中 : perl-constant-1.27-2.el7.noarch 6/33 验证中 : perl-PathTools-3.40-5.el7.x86_64 7/33 验证中 : neon-0.30.0-4.el7.x86_64 8/33 验证中 : 1:perl-parent-0.225-244.el7.noarch 9/33 验证中 : subversion-1.7.14-14.el7.x86_64 10/33 验证中 : 4:perl-libs-5.16.3-294.el7_6.x86_64 11/33 验证中 : perl-File-Temp-0.23.01-3.el7.noarch 12/33 验证中 : 1:perl-Pod-Simple-3.28-4.el7.noarch 13/33 验证中 : perl-Time-Local-1.2300-2.el7.noarch 14/33 验证中 : 4:perl-macros-5.16.3-294.el7_6.x86_64 15/33 验证中 : perl-Socket-2.010-4.el7.x86_64 16/33 验证中 : perl-Carp-1.26-244.el7.noarch 17/33 验证中 : apr-util-1.5.2-6.el7.x86_64 18/33 验证中 : 4:perl-Time-HiRes-1.9725-3.el7.x86_64 19/33 验证中 : perl-Scalar-List-Utils-1.27-248.el7.x86_64 20/33 验证中 : perl-Pod-Usage-1.63-3.el7.noarch 21/33 验证中 : perl-Encode-2.51-7.el7.x86_64 22/33 验证中 : perl-Pod-Perldoc-3.20-4.el7.noarch 23/33 验证中 : perl-podlators-2.5.1-3.el7.noarch 24/33 验证中 : apr-1.4.8-5.el7.x86_64 25/33 验证中 : perl-File-Path-2.09-2.el7.noarch 26/33 验证中 : subversion-libs-1.7.14-14.el7.x86_64 27/33 验证中 : perl-threads-1.87-4.el7.x86_64 28/33 验证中 : perl-Filter-1.49-3.el7.x86_64 29/33 验证中 : perl-Getopt-Long-2.40-3.el7.noarch 30/33 验证中 : perl-Text-ParseWords-3.29-4.el7.noarch 31/33 验证中 : 4:perl-5.16.3-294.el7_6.x86_64 32/33 验证中 : pakchois-0.4-10.el7.x86_64 33/33 已安装: subversion.x86_64 0:1.7.14-14.el7 作为依赖被安装: apr.x86_64 0:1.4.8-5.el7 apr-util.x86_64 0:1.5.2-6.el7 neon.x86_64 0:0.30.0-4.el7 pakchois.x86_64 0:0.4-10.el7 perl.x86_64 4:5.16.3-294.el7_6 perl-Carp.noarch 0:1.26-244.el7 perl-Encode.x86_64 0:2.51-7.el7 perl-Exporter.noarch 0:5.68-3.el7 perl-File-Path.noarch 0:2.09-2.el7 perl-File-Temp.noarch 0:0.23.01-3.el7 perl-Filter.x86_64 0:1.49-3.el7 perl-Getopt-Long.noarch 0:2.40-3.el7 perl-HTTP-Tiny.noarch 0:0.033-3.el7 perl-PathTools.x86_64 0:3.40-5.el7 perl-Pod-Escapes.noarch 1:1.04-294.el7_6 perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7 perl-Pod-Usage.noarch 0:1.63-3.el7 perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-4.el7 perl-Storable.x86_64 0:2.45-3.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7 perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-294.el7_6 perl-macros.x86_64 4:5.16.3-294.el7_6 perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7 subversion-libs.x86_64 0:1.7.14-14.el7 完毕! [root@localhost ~]# svn --version svn,版本 1.7.14 (r1542130) 编译于 Apr 11 2018,02:40:28 版权所有 (C) 2013 Apache 软件基金会。 此软件包含了许多人的贡献,请查看文件 NOTICE 以获得更多信息。 Subversion 是开放源代码软件,请参阅 http://subversion.apache.org/ 站点。 可使用以下的版本库访问模块: * ra_neon : 通过 WebDAV 协议使用 neon 访问版本库的模块。 - 处理“http”方案 - 处理“https”方案 * ra_svn : 使用 svn 网络协议访问版本库的模块。 - 使用 Cyrus SASL 认证 - 处理“svn”方案 * ra_local : 访问本地磁盘的版本库模块。 - 处理“file”方案 [root@localhost ~]#
Linux中查询SVN相关命令:svn help
[root@localhost ~]# svn help 用法: svn <subcommand> [options] [args] Subversion 命令行客户端,版本 1.7.14。 使用“svn help <subcommand>” 显示子命令的帮助信息。 使用“svn --version”查看程序的版本号和版本库访问模块,或者 使用“svn --version --quiet”只查看程序的版本号。 大多数的子命令可接受文件或目录参数,对目录进行递归处理。 如果没有指定参数,默认对当前目录(包含当前目录)递归处理。 可用的子命令: add blame (praise, annotate, ann) cat changelist (cl) checkout (co) cleanup commit (ci) copy (cp) delete (del, remove, rm) diff (di) export help (?, h) import info list (ls) lock log merge mergeinfo mkdir move (mv, rename, ren) patch propdel (pdel, pd) propedit (pedit, pe) propget (pget, pg) proplist (plist, pl) propset (pset, ps) relocate resolve resolved revert status (stat, st) switch (sw) unlock update (up) upgrade Subversion 是版本控制工具。 欲取得详细资料,请参阅 http://subversion.apache.org/
创建仓库:
创建SVN仓库目录:mkdir svnrepository(svnrepository是目录名,自定义)
创建SVN项目仓库:svnadmin create /root/svnrepository/mypro(svnrepository为空,mypro目录事先不存在)
[root@localhost ~]# mkdir svnrepository [root@localhost ~]# ll 总用量 4 -rw-------. 1 root root 1437 2月 15 04:51 anaconda-ks.cfg drwxr-xr-x. 2 root root 6 2月 28 20:58 svnrepository [root@localhost ~]# pwd /root [root@localhost ~]# svnadmin create /root/svnrepository/mypro [root@localhost ~]# ll 总用量 4 -rw-------. 1 root root 1437 2月 15 04:51 anaconda-ks.cfg drwxr-xr-x. 3 root root 19 2月 28 21:00 svnrepository [root@localhost ~]# cd svnrepository/ [root@localhost svnrepository]# ll 总用量 0 drwxr-xr-x. 6 root root 86 2月 28 21:00 mypro [root@localhost svnrepository]# cd mypro/ [root@localhost mypro]# ll 总用量 8 drwxr-xr-x. 2 root root 54 2月 28 21:00 conf drwxr-sr-x. 6 root root 233 2月 28 21:00 db -r--r--r--. 1 root root 2 2月 28 21:00 format drwxr-xr-x. 2 root root 231 2月 28 21:00 hooks drwxr-xr-x. 2 root root 41 2月 28 21:00 locks -rw-r--r--. 1 root root 229 2月 28 21:00 README.txt
启动SVN服务:
对svnrepository目录管理:svnserve -d -r /root/svnrepository/ 说明:-d表示后台运行,-r表示目录递归,启动成功后会多一个3690的服务
若只想对其他目录管理则用:svnserve -d -r 目录绝对路径
[root@localhost mypro]# netstat -nltp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 986/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1245/master tcp6 0 0 :::22 :::* LISTEN 986/sshd tcp6 0 0 ::1:25 :::* LISTEN 1245/master [root@localhost mypro]# svnserve -d -r /root/svnrepository/ [root@localhost mypro]# netstat -nltp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 11865/svnserve tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 986/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1245/master tcp6 0 0 :::22 :::* LISTEN 986/sshd tcp6 0 0 ::1:25 :::* LISTEN 1245/master
建立mypro目录和svnrepository取得联系:svn checkout svn://localhost/mypro
[root@localhost /]# ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr [root@localhost /]# ll 总用量 16 lrwxrwxrwx. 1 root root 7 2月 15 04:45 bin -> usr/bin dr-xr-xr-x. 4 root root 4096 2月 15 04:53 boot drwxr-xr-x. 20 root root 3200 2月 28 20:33 dev drwxr-xr-x. 79 root root 8192 2月 28 20:42 etc drwxr-xr-x. 3 root root 25 2月 15 04:50 home lrwxrwxrwx. 1 root root 7 2月 15 04:45 lib -> usr/lib lrwxrwxrwx. 1 root root 9 2月 15 04:45 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 11月 5 2016 media drwxr-xr-x. 2 root root 6 11月 5 2016 mnt drwxr-xr-x. 2 root root 6 11月 5 2016 opt dr-xr-xr-x. 106 root root 0 2月 28 20:33 proc dr-xr-x---. 4 root root 175 2月 28 20:58 root drwxr-xr-x. 23 root root 700 2月 28 20:42 run lrwxrwxrwx. 1 root root 8 2月 15 04:45 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 11月 5 2016 srv dr-xr-xr-x. 13 root root 0 2月 28 20:33 sys drwxrwxrwt. 8 root root 173 2月 28 21:07 tmp drwxr-xr-x. 13 root root 155 2月 15 04:45 usr drwxr-xr-x. 19 root root 267 2月 28 20:33 var [root@localhost /]# pwd / [root@localhost /]# svn checkout svn://localhost/mypro 取出版本 0。 [root@localhost /]# ll 总用量 16 lrwxrwxrwx. 1 root root 7 2月 15 04:45 bin -> usr/bin dr-xr-xr-x. 4 root root 4096 2月 15 04:53 boot drwxr-xr-x. 20 root root 3200 2月 28 20:33 dev drwxr-xr-x. 79 root root 8192 2月 28 20:42 etc drwxr-xr-x. 3 root root 25 2月 15 04:50 home lrwxrwxrwx. 1 root root 7 2月 15 04:45 lib -> usr/lib lrwxrwxrwx. 1 root root 9 2月 15 04:45 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 11月 5 2016 media drwxr-xr-x. 2 root root 6 11月 5 2016 mnt drwxr-xr-x. 3 root root 18 2月 28 21:23 mypro drwxr-xr-x. 2 root root 6 11月 5 2016 opt dr-xr-xr-x. 106 root root 0 2月 28 20:33 proc dr-xr-x---. 4 root root 175 2月 28 20:58 root drwxr-xr-x. 23 root root 700 2月 28 20:42 run lrwxrwxrwx. 1 root root 8 2月 15 04:45 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 11月 5 2016 srv dr-xr-xr-x. 13 root root 0 2月 28 20:33 sys drwxrwxrwt. 8 root root 173 2月 28 21:23 tmp drwxr-xr-x. 13 root root 155 2月 15 04:45 usr drwxr-xr-x. 19 root root 267 2月 28 20:33 var [root@localhost /]# cd mypro/ [root@localhost mypro]# ll -a 总用量 0 drwxr-xr-x. 3 root root 18 2月 28 21:23 . dr-xr-xr-x. 18 root root 237 2月 28 21:23 .. drwxr-xr-x. 4 root root 75 2月 28 21:23 .svn
创建文件,添加,提交
[root@localhost mypro]# ll 总用量 0 [root@localhost mypro]# vim hello.txt -bash: vim: 未找到命令 [root@localhost mypro]# ll 总用量 0 [root@localhost mypro]# vi hello.txt This is a txt file for SVN test. 这是为演示SVN创建的文件。 The end. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "hello.txt" [New] 3L, 79C written [root@localhost mypro]# svn add hello.txt A hello.txt [root@localhost mypro]# svn commit hello.txt svn: E205007: 提交失败(细节如下): svn: E205007: 无法使用外部编辑器获得日志信息;考虑设置环境变量 $SVN_EDITOR,或者使用 --message (-m) 或 --file (-F) 选项 svn: E205007: 没有设置 SVN_EDITOR,VISUAL 或 EDITOR 环境变量,运行时的配置参数中也没有 “editor-cmd” 选项 [root@localhost mypro]# svn commit -m '第一次提交First Commit' hello.txt svn: E170001: 提交失败(细节如下): svn: E170001: 认证失败 [root@localhost mypro]# ll 总用量 4 -rw-r--r--. 1 root root 79 2月 28 21:31 hello.txt [root@localhost mypro]# cd conf/ -bash: cd: conf/: 没有那个文件或目录 [root@localhost mypro]# cd /root/svnrepository/ [root@localhost svnrepository]# ll 总用量 0 drwxr-xr-x. 6 root root 86 2月 28 21:00 mypro [root@localhost svnrepository]# cd mypro/ [root@localhost mypro]# ll 总用量 8 drwxr-xr-x. 2 root root 54 2月 28 21:00 conf drwxr-sr-x. 6 root root 233 2月 28 21:00 db -r--r--r--. 1 root root 2 2月 28 21:00 format drwxr-xr-x. 2 root root 231 2月 28 21:00 hooks drwxr-xr-x. 2 root root 41 2月 28 21:00 locks -rw-r--r--. 1 root root 229 2月 28 21:00 README.txt [root@localhost mypro]# cd conf/ [root@localhost conf]# ll 总用量 12 -rw-r--r--. 1 root root 1080 2月 28 21:00 authz -rw-r--r--. 1 root root 309 2月 28 21:00 passwd -rw-r--r--. 1 root root 3090 2月 28 21:00 svnserve.conf [root@localhost conf]# vi svnserve.conf ### This file controls the configuration of the svnserve daemon, if you ### use it to allow access to this repository. (If you only allow ### access through http: and/or file: URLs, then this file is ### irrelevant.) ### Visit http://subversion.apache.org/ for more information. [general] ### The anon-access and auth-access options control access to the ### repository for unauthenticated (a.k.a. anonymous) users and ### authenticated users, respectively. ### Valid values are "write", "read", and "none". ### Setting the value to "none" prohibits both reading and writing; ### "read" allows read-only access, and "write" allows complete ### read/write access to the repository. ### The sample settings below are the defaults and specify that anonymous ### users have read-only access to the repository, while authenticated ### users have read and write access to the repository. anon-access = write 允许匿名用户写 # 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 "svnserve.conf" 61L, 3089C written [root@localhost conf]# ls authz passwd svnserve.conf [root@localhost conf]# cd / [root@localhost /]# ls bin dev home lib64 mnt opt root sbin sys usr boot etc lib media mypro proc run srv tmp var [root@localhost /]# cd mypro/ [root@localhost mypro]# ls hello.txt [root@localhost mypro]# svn commit -m '第一次提交First Commit' hello.txt 正在增加 hello.txt 传输文件数据. 提交后的版本为 1。 [root@localhost mypro]# cd /root/svnrepository/ [root@localhost svnrepository]# ls mypro [root@localhost svnrepository]# cd mypro/ [root@localhost mypro]# ls conf db format hooks locks README.txt [root@localhost mypro]# cd db [root@localhost db]# ls current fsfs.conf min-unpacked-rev revprops transactions txn-current-lock uuid format fs-type rep-cache.db revs txn-current txn-protorevs write-lock [root@localhost db]# cd revs [root@localhost revs]# ls 0 [root@localhost revs]# cd 0 [root@localhost 0]# ll 总用量 8 -r--r--r--. 1 root root 115 2月 28 21:00 0 -r--r--r--. 1 root root 502 2月 28 21:38 1 [root@localhost 0]# vi 1 DELTA SVN^A^@^@O^CP^B<80>OOThis is a txt file for SVN test. è¿<99>æ<98>¯ä¸ºæ¼<94>示SVNå<88><9b>建ç<9a><84>æ<96><87>件ã<80><82> The end. ENDREP id: 0-1.0.r1/105 type: file count: 0 text: 1 0 92 79 1a729a1113bd2312950ef1fd24fb89aa ae798a3e24644a623ae2306fbcdb24e30b15c49b 0-0/_2 cpath: /hello.txt copyroot: 0 / PLAIN K 9 hello.txt V 17 file 0-1.0.r1/105 END ENDREP id: 0.0.r1/326 type: dir pred: 0.0.r0/17 count: 1 text: 1 272 41 41 fcd6f1e9732e181d6fa1c740fcd3621e cpath: / copyroot: 0 / _0.0.t0-0 add-file true false /hello.txt "1" [readonly][converted] 31L, 536C
Windows中安装SVN服务端:和安装普通软件一样,没什么可讲,下一步下一步就好。安装完成后通过以下命令查看。
C:\Users\xiongjiawei>svn --version svn, version 1.9.5 (r1770682) compiled Nov 26 2016, 14:22:31 on x86-microsoft-windows Copyright (C) 2016 The Apache Software Foundation. This software consists of contributions made by many people; see the NOTICE file for more information. Subversion is open source software, see http://subversion.apache.org/ The following repository access (RA) modules are available: * ra_svn : Module for accessing a repository using the svn network protocol. - with Cyrus SASL authentication - handles 'svn' scheme * ra_local : Module for accessing a repository on local disk. - handles 'file' scheme * ra_serf : Module for accessing a repository via WebDAV protocol using serf. - using serf 1.3.9 (compiled with 1.3.9) - handles 'http' scheme - handles 'https' scheme The following authentication credential caches are available: * Wincrypt cache in C:\Users\xiongjiawei\AppData\Roaming\Subversion C:\Users\xiongjiawei>where svn D:\Program Files\TortoiseSVN\bin\svn.exe
Windows中安装SVN客户端:和安装普通软件一样,没什么可讲,下一步下一步就好。
安装完成后若右键菜单中无svn相关选项,尝试重启电脑解决,或任务管理器结束进程explorer.exe后再新建运行此进程。
Windows客户端检出SVN目录:
连接失败:
解决办法:关闭SVN服务器防火墙:
关闭防火墙方法一:/etc/init.d/iptables stop 若此法不行,参见方法二。
关闭防火墙方法二:
[root@localhost init.d]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since 五 2020-02-28 20:33:21 CST; 1h 52min ago Docs: man:firewalld(1) Main PID: 663 (firewalld) CGroup: /system.slice/firewalld.service └─663 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid 2月 28 20:33:20 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewa.... 2月 28 20:33:21 localhost.localdomain systemd[1]: Started firewalld - dynamic firewal.... Hint: Some lines were ellipsized, use -l to show in full. [root@localhost init.d]# systemctl stop firewalld.service [root@localhost init.d]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: inactive (dead) since 五 2020-02-28 22:26:51 CST; 8s ago Docs: man:firewalld(1) Main PID: 663 (code=exited, status=0/SUCCESS) 2月 28 20:33:20 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewa.... 2月 28 20:33:21 localhost.localdomain systemd[1]: Started firewalld - dynamic firewal.... 2月 28 22:26:50 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewa.... 2月 28 22:26:51 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewal.... Hint: Some lines were ellipsized, use -l to show in full.
Linux服务端关闭防火墙后,windows客户端就成功check out了:
客户端提交的文件或文件夹都提到服务器的/root/svnrepository/mypro/db/revs/0目录下了,1是第一次提交,2是第二次提交。
[root@localhost 0]# pwd /root/svnrepository/mypro/db/revs/0 [root@localhost 0]# ll 总用量 12 -r--r--r--. 1 root root 115 2月 28 21:00 0 -r--r--r--. 1 root root 502 2月 28 21:38 1 -r--r--r--. 1 root root 313 2月 28 22:36 2
Linux客户端更新:svn update
[root@localhost mypro]# svn update 正在升级 '.': A 2 A 2/新建文本文档.txt A 3 A 3/新建 RTF 文档.rtf A 3/22.txt A abc 更新到版本 3。 [root@localhost mypro]# ll 总用量 4 drwxr-xr-x. 2 root root 36 2月 28 23:00 2 drwxr-xr-x. 2 root root 49 2月 28 23:00 3 drwxr-xr-x. 2 root root 6 2月 28 23:00 abc -rw-r--r--. 1 root root 79 2月 28 21:31 hello.txt [root@localhost mypro]# cd 2 [root@localhost 2]# ll 总用量 0 -rw-r--r--. 1 root root 0 2月 28 23:00 新建文本文档.txt
windows客户端恢复误删文件:
右键-TortoiseSVN-Update to revision...-Show log,选择要回退到的版本,OK,OK
恢复文件后建议复制或剪切到其他地方,或重命名,否则直接Update还是会删除。
冲突的终极解决办法:删除.svn重新check out
关闭匿名用户,启用账号密码
Last login: Fri Feb 28 23:22:58 2020 [root@localhost ~]# ls anaconda-ks.cfg svnrepository [root@localhost ~]# cd svnrepository/ [root@localhost svnrepository]# ls mypro [root@localhost svnrepository]# cd mypro/ [root@localhost mypro]# ls conf db format hooks locks README.txt [root@localhost mypro]# cd conf/ [root@localhost conf]# ls authz passwd svnserve.conf [root@localhost conf]# ll 总用量 12 -rw-r--r--. 1 root root 1080 2月 28 21:00 authz -rw-r--r--. 1 root root 309 2月 28 21:00 passwd -rw-r--r--. 1 root root 3089 2月 28 21:38 svnserve.conf [root@localhost conf]# vi svnserve.conf ### Uncomment the line below to use the default password file. ### This file controls the configuration of the svnserve daemon, if you ### use it to allow access to this repository. (If you only allow ### access through http: and/or file: URLs, then this file is ### irrelevant.) ### Visit http://subversion.apache.org/ for more information. [general] ### The anon-access and auth-access options control access to the ### repository for unauthenticated (a.k.a. anonymous) users and ### authenticated users, respectively. ### Valid values are "write", "read", and "none". ### Setting the value to "none" prohibits both reading and writing; ### "read" allows read-only access, and "write" allows complete ### read/write access to the repository. ### The sample settings below are the defaults and specify that anonymous ### users have read-only access to the repository, while authenticated ### users have read and write access to the repository. # anon-access = write 关闭匿名用户anonymous,anonymity # 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 启用账号密码 ### This option specifies the authentication realm of the repository. "svnserve.conf" 61L, 3087C written
再提交就会提示输入用户名密码:
添加账号密码:
[root@localhost conf]# ll 总用量 12 -rw-r--r--. 1 root root 1080 2月 28 21:00 authz -rw-r--r--. 1 root root 309 2月 28 21:00 passwd -rw-r--r--. 1 root root 3087 2月 28 23:46 svnserve.conf [root@localhost conf]# vi passwd ### This file is an example password file for svnserve. ### Its format is similar to that of svnserve.conf. As shown in the ### example below it contains one section labelled [users]. ### The name and password for each user follow, one account per line. [users] # harry = harryssecret # sally = sallyssecret xiongjiawei = 9527 添加一个用户xiongjiawei密码9527 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "passwd" 9L, 328C written [root@localhost conf]# vi authz ### This file is an example authorization file for svnserve. ### Its format is identical to that of mod_authz_svn authorization ### files. ### As shown below each section defines authorizations for the path and ### (optional) repository specified by the section name. ### The authorizations follow. An authorization line can refer to: ### - a single user, ### - a group of users defined in a special [groups] section, ### - an alias defined in a special [aliases] section, ### - all authenticated users, using the '$authenticated' token, ### - only anonymous users, using the '$anonymous' token, ### - anyone, using the '*' wildcard. ### ### A match can be inverted by prefixing the rule with '~'. Rules can ### grant read ('r') access, read-write ('rw') access, or no access ### (''). [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 # [/foo/bar] # harry = rw # &joe = r # * = 其他人 # [repository:/baz/fuz] # @harry_and_sally = rw 分组 # * = r [mypro:/] 对mypro仓库所有目录/ xiongjiawei = rw 对用户xiongjiawei赋予读写权限 "authz" 35L, 1108C written
钩子的使用:
创建配置仓库:步骤同上
[root@localhost svnrepository]# ls mypro [root@localhost svnrepository]# pwd /root/svnrepository [root@localhost svnrepository]# svnadmin create /root/svnrepository/gouzi [root@localhost svnrepository]# ll 总用量 0 drwxr-xr-x. 6 root root 86 2月 29 00:31 gouzi drwxr-xr-x. 6 root root 86 2月 28 21:00 mypro [root@localhost svnrepository]# cd gouzi/ [root@localhost gouzi]# ls conf db format hooks locks README.txt [root@localhost gouzi]# cd conf/ [root@localhost conf]# ll 总用量 12 -rw-r--r--. 1 root root 1080 2月 29 00:31 authz -rw-r--r--. 1 root root 309 2月 29 00:31 passwd -rw-r--r--. 1 root root 3090 2月 29 00:31 svnserve.conf [root@localhost conf]# vi svnserve.conf ### This file controls the configuration of the svnserve daemon, if you ### use it to allow access to this repository. (If you only allow ### access through http: and/or file: URLs, then this file is ### irrelevant.) ### Visit http://subversion.apache.org/ for more information. [general] ### The anon-access and auth-access options control access to the ### repository for unauthenticated (a.k.a. anonymous) users and ### authenticated users, respectively. ### Valid values are "write", "read", and "none". ### Setting the value to "none" prohibits both reading and writing; ### "read" allows read-only access, and "write" allows complete ### read/write access to the repository. ### The sample settings below are the defaults and specify that anonymous ### users have read-only access to the repository, while authenticated ### users have read and write access to the repository. # anon-access = read # 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 ### This option specifies the authentication realm of the repository. "svnserve.conf" 61L, 3086C written [root@localhost conf]# vi passwd ### This file is an example password file for svnserve. ### Its format is similar to that of svnserve.conf. As shown in the ### example below it contains one section labelled [users]. ### The name and password for each user follow, one account per line. [users] # harry = harryssecret # sally = sallyssecret xiong = xiong ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "passwd" 9L, 323C written [root@localhost conf]# vi authz ### This file is an example authorization file for svnserve. ### Its format is identical to that of mod_authz_svn authorization ### files. ### As shown below each section defines authorizations for the path and ### (optional) repository specified by the section name. ### The authorizations follow. An authorization line can refer to: ### - a single user, ### - a group of users defined in a special [groups] section, ### - an alias defined in a special [aliases] section, ### - all authenticated users, using the '$authenticated' token, ### - only anonymous users, using the '$anonymous' token, ### - anyone, using the '*' wildcard. ### ### A match can be inverted by prefixing the rule with '~'. Rules can ### grant read ('r') access, read-write ('rw') access, or no access ### (''). [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 # [/foo/bar] # harry = rw # &joe = r # * = # [repository:/baz/fuz] # @harry_and_sally = rw # * = r [gouzi:/] xiong = rw "authz" 35L, 1102C written [root@localhost conf]#
windows客户端check out:
在服务器上创建一个自动同步的目录:
[root@localhost /]# cd root [root@localhost ~]# ls anaconda-ks.cfg svnrepository [root@localhost ~]# mkdir www [root@localhost ~]# ls anaconda-ks.cfg svnrepository www [root@localhost ~]# cd www [root@localhost www]# ls [root@localhost www]# svn co svn://127.0.0.1/gouzi co是check out的简写 认证领域: <svn://127.0.0.1:3690> dd5216b7-47f5-4872-a853-3c3a663ff50a “root”的密码: 认证领域: <svn://127.0.0.1:3690> dd5216b7-47f5-4872-a853-3c3a663ff50a 用户名:
可以看到windows客户端上提交的index.html成功check out到服务器自动同步的目录中了:
[root@localhost www]# ls gouzi [root@localhost www]# cd .. [root@localhost ~]# ls anaconda-ks.cfg svnrepository www [root@localhost ~]# cd svnrepository/ [root@localhost svnrepository]# ls gouzi mypro [root@localhost svnrepository]# cd ../www/ [root@localhost www]# ls gouzi [root@localhost www]# cd gouzi/ [root@localhost gouzi]# ls index.html Linux服务器上自动同步的目录
windows客户端截图:
设置钩子:
Last login: Fri Feb 28 23:43:30 2020 from 192.168.133.1 [root@localhost ~]# pwd /root [root@localhost ~]# cd svnrepository/gouzi/hooks/ [root@localhost hooks]# ll 总用量 36 -rw-r--r--. 1 root root 1977 2月 29 00:31 post-commit.tmpl -rw-r--r--. 1 root root 1638 2月 29 00:31 post-lock.tmpl -rw-r--r--. 1 root root 2289 2月 29 00:31 post-revprop-change.tmpl -rw-r--r--. 1 root root 1567 2月 29 00:31 post-unlock.tmpl -rw-r--r--. 1 root root 3426 2月 29 00:31 pre-commit.tmpl -rw-r--r--. 1 root root 2434 2月 29 00:31 pre-lock.tmpl -rw-r--r--. 1 root root 2786 2月 29 00:31 pre-revprop-change.tmpl -rw-r--r--. 1 root root 2122 2月 29 00:31 pre-unlock.tmpl -rw-r--r--. 1 root root 2780 2月 29 00:31 start-commit.tmpl [root@localhost hooks]# cp post-commit.tmpl post-commit [root@localhost hooks]# chmod +x post-commit [root@localhost hooks]# ll 总用量 40 -rwxr-xr-x. 1 root root 1977 2月 29 00:57 post-commit -rw-r--r--. 1 root root 1977 2月 29 00:31 post-commit.tmpl -rw-r--r--. 1 root root 1638 2月 29 00:31 post-lock.tmpl -rw-r--r--. 1 root root 2289 2月 29 00:31 post-revprop-change.tmpl -rw-r--r--. 1 root root 1567 2月 29 00:31 post-unlock.tmpl -rw-r--r--. 1 root root 3426 2月 29 00:31 pre-commit.tmpl -rw-r--r--. 1 root root 2434 2月 29 00:31 pre-lock.tmpl -rw-r--r--. 1 root root 2786 2月 29 00:31 pre-revprop-change.tmpl -rw-r--r--. 1 root root 2122 2月 29 00:31 pre-unlock.tmpl -rw-r--r--. 1 root root 2780 2月 29 00:31 start-commit.tmpl [root@localhost hooks]# vi post-commit
删除原文件所有注释内容,添加两行:
export LANG=en_US.UTF-8
/usr/bin/svn update /root/www/gouzi --username xiong --password xiong
Last login: Sat Feb 29 01:01:00 2020 from 192.168.133.1 [root@localhost ~]# pwd /root [root@localhost ~]# cd svnrepository/gouzi/hooks/ [root@localhost hooks]# ll 总用量 40 -rwxr-xr-x. 1 root root 2070 2月 29 01:06 post-commit -rw-r--r--. 1 root root 1977 2月 29 00:31 post-commit.tmpl -rw-r--r--. 1 root root 1638 2月 29 00:31 post-lock.tmpl -rw-r--r--. 1 root root 2289 2月 29 00:31 post-revprop-change.tmpl -rw-r--r--. 1 root root 1567 2月 29 00:31 post-unlock.tmpl -rw-r--r--. 1 root root 3426 2月 29 00:31 pre-commit.tmpl -rw-r--r--. 1 root root 2434 2月 29 00:31 pre-lock.tmpl -rw-r--r--. 1 root root 2786 2月 29 00:31 pre-revprop-change.tmpl -rw-r--r--. 1 root root 2122 2月 29 00:31 pre-unlock.tmpl -rw-r--r--. 1 root root 2780 2月 29 00:31 start-commit.tmpl [root@localhost hooks]# vi post-commit # POST-COMMIT HOOK # # The post-commit hook is invoked after a commit. Subversion runs # this hook by invoking a program (script, executable, binary, etc.) # named 'post-commit' (for which this file is a template) with the # following ordered arguments: # # [1] REPOS-PATH (the path to this repository) # [2] REV (the number of the revision just committed) # # The default working directory for the invocation is undefined, so # the program should set one explicitly if it cares. # # Because the commit has already completed and cannot be undone, # the exit code of the hook program is ignored. The hook program # can use the 'svnlook' utility to help it examine the # newly-committed tree. # # On a Unix system, the normal procedure is to have 'post-commit' # invoke other programs to do the real work, though it may do the # work itself too. # # Note that 'post-commit' must be executable by the user(s) who will # invoke it (typically the user httpd runs as), and that user must # have filesystem-level permission to access the repository. # # On a Windows system, you should name the hook program # 'post-commit.bat' or 'post-commit.exe', # but the basic idea is the same. # # The hook program typically does not inherit the environment of # its parent process. For example, a common problem is for the # PATH environment variable to not be set to its usual value, so # that subprograms fail to launch unless invoked via absolute path. # If you're having unexpected problems with a hook program, the # culprit may be unusual (or missing) environment variables. # # Here is an example hook script, for a Unix /bin/sh interpreter. # For more examples and pre-written hooks, see those in # the Subversion repository at # http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and # http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ REPOS="$1" REV="$2" #!/bin/sh export LANG=en_US.UTF-8 /usr/bin/svn update /root/www/gouzi --username xiong --password xiong ~ ~ "post-commit" 3L, 104C written [root@localhost hooks]# cd /root/www/gouzi [root@localhost gouzi]# ls index.html
在Windows客户端添加新内容:
查看服务器端自动同步目录:
[root@localhost gouzi]# ls index.html 服务器端设置好钩子后在Windows客户端提交.txt
……