博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
centos7.x搭建svn server
阅读量:6413 次
发布时间:2019-06-23

本文共 18116 字,大约阅读时间需要 60 分钟。

简介

Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository) 中。这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。

SVN 的一些概念

repository(源代码库):源代码统一存放的地方

Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份

Commit(提交):当你已经修改了代码,你就需要Commit到repository

Update (更新):当你已经Checkout了一份源代码,Update一下你就可以和Repository 上的源代码同步,你手上的代码就会有最新的变更

日常开发过程其实就是这样的(假设你已经Checkout并且已经工作了几天):Update(获得最新的代码) —>作出自己的修改并调试成功 —> Commit(大家就可以看到你的修改了) 。

如果两个程序员同时修改了同一个文件呢, SVN可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。

如果是同一行,SVN会提示文件Confict, 冲突,需要手动确认。

subversion目录说明:

db目录:就是所有版本控制的数据存放文件。

hooks目录:放置hook脚本文件的目录。

locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端。

format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。

conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)。

进入conf目录(该svn版本库配置文件)cd conf/

authz 文件是权限控制文件

passwd 是帐号密码文件

svnserve.conf SVN服务配置文件

1
2
#添加svn账号,并且禁止登陆
useradd 
-M -s 
/sbin/nologin 
svn
[root@localhost ~]# yum install subversion -yLoaded plugins: fastestmirrorbase                                                     | 3.6 kB     00:00     extras                                                   | 3.4 kB     00:00     updates                                                  | 3.4 kB     00:00     Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: mirrors.163.com * updates: mirrors.163.comResolving Dependencies--> Running transaction check---> Package subversion.x86_64 0:1.7.14-10.el7 will be installed--> Processing Dependency: subversion-libs(x86-64) = 1.7.14-10.el7 for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_wc-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_subr-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_repos-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_ra_svn-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_ra_neon-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_ra_local-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_ra-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_fs_util-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_fs_fs-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_fs_base-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_fs-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_diff-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_delta-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libsvn_client-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libneon.so.27()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Processing Dependency: libapr-1.so.0()(64bit) for package: subversion-1.7.14-10.el7.x86_64--> Running transaction check---> Package apr.x86_64 0:1.4.8-3.el7 will be installed---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed---> Package neon.x86_64 0:0.30.0-3.el7 will be installed--> Processing Dependency: libpakchois.so.0()(64bit) for package: neon-0.30.0-3.el7.x86_64---> Package subversion-libs.x86_64 0:1.7.14-10.el7 will be installed--> Running transaction check---> Package pakchois.x86_64 0:0.4-10.el7 will be installed--> Finished Dependency ResolutionDependencies Resolved================================================================================ Package                Arch          Version                 Repository   Size================================================================================Installing: subversion             x86_64        1.7.14-10.el7           base        1.0 MInstalling for dependencies: apr                    x86_64        1.4.8-3.el7             base        103 k apr-util               x86_64        1.5.2-6.el7             base         92 k neon                   x86_64        0.30.0-3.el7            base        165 k pakchois               x86_64        0.4-10.el7              base         14 k subversion-libs        x86_64        1.7.14-10.el7           base        921 kTransaction Summary================================================================================Install  1 Package (+5 Dependent packages)Total download size: 2.3 MInstalled size: 8.1 MDownloading packages:(1/6): apr-util-1.5.2-6.el7.x86_64.rpm                     |  92 kB   00:00     (2/6): neon-0.30.0-3.el7.x86_64.rpm                        | 165 kB   00:00     (3/6): pakchois-0.4-10.el7.x86_64.rpm                      |  14 kB   00:00     (4/6): subversion-1.7.14-10.el7.x86_64.rpm                 | 1.0 MB   00:00     (5/6): subversion-libs-1.7.14-10.el7.x86_64.rpm            | 921 kB   00:00     (6/6): apr-1.4.8-3.el7.x86_64.rpm                          | 103 kB   00:01     --------------------------------------------------------------------------------Total                                              1.8 MB/s | 2.3 MB  00:01     Running transaction checkRunning transaction testTransaction test succeededRunning transaction  Installing : apr-1.4.8-3.el7.x86_64                                       1/6   Installing : apr-util-1.5.2-6.el7.x86_64                                  2/6   Installing : pakchois-0.4-10.el7.x86_64                                   3/6   Installing : neon-0.30.0-3.el7.x86_64                                     4/6   Installing : subversion-libs-1.7.14-10.el7.x86_64                         5/6   Installing : subversion-1.7.14-10.el7.x86_64                              6/6   Verifying  : neon-0.30.0-3.el7.x86_64                                     1/6   Verifying  : apr-1.4.8-3.el7.x86_64                                       2/6   Verifying  : subversion-1.7.14-10.el7.x86_64                              3/6   Verifying  : apr-util-1.5.2-6.el7.x86_64                                  4/6   Verifying  : pakchois-0.4-10.el7.x86_64                                   5/6   Verifying  : subversion-libs-1.7.14-10.el7.x86_64                         6/6 Installed:  subversion.x86_64 0:1.7.14-10.el7                                             Dependency Installed:  apr.x86_64 0:1.4.8-3.el7                    apr-util.x86_64 0:1.5.2-6.el7       neon.x86_64 0:0.30.0-3.el7                  pakchois.x86_64 0:0.4-10.el7        subversion-libs.x86_64 0:1.7.14-10.el7     Complete![root@localhost ~]# svnserve -husage: svnserve [-d | -i | -t | -X] [options]Valid options:  -d [--daemon]            : daemon mode  -i [--inetd]             : inetd mode  -t [--tunnel]            : tunnel mode  -X [--listen-once]       : listen-once mode (useful for debugging)  -r [--root] ARG          : root of directory to serve  -R [--read-only]         : force read only, overriding repository config file  --config-file ARG        : read configuration from file ARG  --listen-port ARG        : listen port                             [mode: daemon, listen-once]  --listen-host ARG        : listen hostname or IP address                             [mode: daemon, listen-once]  -6 [--prefer-ipv6]       : prefer IPv6 when resolving the listen hostname                             [IPv4 is preferred by default. Using IPv4 and IPv6                             at the same time is not supported in daemon mode.                             Use inetd mode or tunnel mode if you need this.]  -c [--compression] ARG   : compression level to use for network transmissions                             [0 .. no compression, 5 .. default,                               9 .. maximum compression]  -M [--memory-cache-size] ARG : size of the extra in-memory cache in MB used to                             minimize redundant operations.                             Default is 128 for threaded and 16 for non-                             threaded mode.                             [used for FSFS repositories only]  --cache-txdeltas ARG     : enable or disable caching of deltas between older                             revisions.                             Default is no.                             [used for FSFS repositories only]  --cache-fulltexts ARG    : enable or disable caching of file contents                             Default is yes.                             [used for FSFS repositories only]  -T [--threads]           : use threads instead of fork [mode: daemon]  --foreground             : run in foreground (useful for debugging)                             [mode: daemon]  --log-file ARG           : svnserve log file  --pid-file ARG           : write server process ID to file ARG                             [mode: daemon, listen-once]  --tunnel-user ARG        : tunnel username (default is current uid's name)                             [mode: tunnel]  -h [--help]              : display this help  --version                : show program version information  -q [--quiet]             : no progress (only errors) to stderr[root@localhost ~]# svnserve --versionsvnserve, version 1.7.14 (r1542130)   compiled Nov 20 2015, 19:25:09Copyright (C) 2013 The Apache Software Foundation.This software consists of contributions made by many people; see the NOTICEfile for more information.Subversion is open source software, see http://subversion.apache.org/The following repository back-end (FS) modules are available:* fs_base : Module for working with a Berkeley DB repository.* fs_fs : Module for working with a plain file (FSFS) repository.Cyrus SASL authentication is available.[root@localhost ~]# which svn/usr/bin/svn[root@localhost ~]# mkdir /var/svn[root@localhost ~]# cd /var/svn/#创建版本库[root@localhost svn]# svnadmin create /var/svn/svnrepos[root@localhost svn]# [root@localhost svn]# lssvnrepos[root@localhost svn]# cd svnrepos/[root@localhost svnrepos]# lsconf  db  format  hooks  locks  README.txt[root@localhost svnrepos]# cat README.txt This is a Subversion repository; use the 'svnadmin' tool to examineit.  Do not add, delete, or modify files here unless you know howto avoid corrupting the repository.Visit http://subversion.apache.org/ for more information.[root@localhost svnrepos]# cd conf/[root@localhost conf]# lsauthz  passwd  svnserve.conf[root@localhost conf]# vim 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#添加admin用户admin = 123456                             [root@localhost conf]# vim 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##添加新建的用户admin,并授予rw权限[/]admin = rw     [root@localhost conf]# cat 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 = readanon-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### This option specifies the authentication realm of the repository.### If two repositories have the same authentication realm, they should### have the same password database, and vice versa.  The default realm### is repository's uuid.#认证空间名,版本库所在目录realm = /var/svn/svnrepos### The force-username-case option causes svnserve to case-normalize### usernames before comparing them against the authorization rules in the### authz-db file configured above.  Valid values are "upper" (to upper-### case the usernames), "lower" (to lowercase the usernames), and### "none" (to compare usernames as-is without case conversion, which### is the default behavior).# force-username-case = none[sasl]### This option specifies whether you want to use the Cyrus SASL### library for authentication. Default is false.### This section will be ignored if svnserve is not built with Cyrus### SASL support; to check, run 'svnserve --version' and look for a line### reading 'Cyrus SASL authentication is available.'# use-sasl = true### These options specify the desired strength of the security layer### that you want SASL to provide. 0 means no encryption, 1 means### integrity-checking only, values larger than 1 are correlated### to the effective key length for encryption (e.g. 128 means 128-bit### encryption). The values below are the defaults.# min-encryption = 0# max-encryption = 256     #启动svn               [root@localhost conf]# svnserve -d -r /var/svn/svnrepos/[root@localhost conf]# ps -ef|grep svnroot      9114     1  0 16:06 ?        00:00:00 svnserve -d -r /var/svn/svnrepos/root      9116  8214  0 16:06 pts/0    00:00:00 grep --color=auto svn[root@localhost conf]# netstat -ntlp 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      9114/svnserve       tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1049/sshd           tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1282/master         tcp6       0      0 :::3306                 :::*                    LISTEN      26795/mysqld        tcp6       0      0 :::8080                 :::*                    LISTEN      4538/java           tcp6       0      0 :::22                   :::*                    LISTEN      1049/sshd           tcp6       0      0 ::1:25                  :::*                    LISTEN      1282/master         [root@localhost conf]# cd ..[root@localhost svnrepos]# lsconf  db  format  hooks  locks  README.txt[root@localhost svnrepos]# tree.├── conf│   ├── authz│   ├── passwd│   └── svnserve.conf├── db│   ├── current│   ├── format│   ├── fsfs.conf│   ├── fs-type│   ├── min-unpacked-rev│   ├── revprops│   │   └── 0│   │       └── 0│   ├── revs│   │   └── 0│   │       └── 0│   ├── transactions│   ├── txn-current│   ├── txn-current-lock│   ├── txn-protorevs│   ├── uuid│   └── write-lock├── format├── hooks│   ├── post-commit.tmpl│   ├── post-lock.tmpl│   ├── post-revprop-change.tmpl│   ├── post-unlock.tmpl│   ├── pre-commit.tmpl│   ├── pre-lock.tmpl│   ├── pre-revprop-change.tmpl│   ├── pre-unlock.tmpl│   └── start-commit.tmpl├── locks│   ├── db.lock│   └── db-logs.lock└── README.txt10 directories, 27 files#停止SVN命令killall svnserve
1
2
3
4
5
6
7
8
9
10
11
12
13
#svn开机启动
cat 
/lib/systemd/system/svnserve
.service
[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target
 
[Service]
Type=forking
EnvironmentFile=
/etc/sysconfig/svnserve
ExecStart=
/usr/bin/svnserve 
--daemon --pid-
file
=
/run/svnserve/svnserve
.pid $OPTIONS
 
[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13
#找到 svn 的 service 环境配置文件 /etc/sysconfig/svnserve 编辑配置文件
#将 OPTIONS="-r /var/svn" 改为 svn 版本库存放的目录
cat 
/etc/sysconfig/svnserve
# OPTIONS is used to pass command-line arguments to svnserve.
# Specify the repository location in -r parameter:
OPTIONS=
"-r /var/svn/svnrepos"
#设置开机启动
systemctl 
enable 
svnserve.service 
systemctl start svnserve.service
systemctl restart svnserve.service 
 
#ps -aux | grep 'svn'

--------------------------------------------------------

客户端连接

windows tortoisesvn 下载

参考:https://yq.aliyun.com/articles/83737

]

本文转自 yanconggod 51CTO博客,原文链接:http://blog.51cto.com/yanconggod/1927768

转载地址:http://zicra.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
OpenSSL学习(十六):基础-指令rand
查看>>
KeyMob致力于打造国内领先的移动广告平台
查看>>
路由选路原则
查看>>
jvm 学习(一)
查看>>
JavaScript简介
查看>>
SQL Server附加数据库拒绝访问解决方法汇总
查看>>
SM2算法原理及实现
查看>>
RHCA教材翻译计划
查看>>
js-小括号在不同场合下的作用
查看>>
我的友情链接
查看>>
kvm中虚拟机的硬盘扩容
查看>>
Android (Launch Mode) 四种启动模式
查看>>
透视学理论(二)
查看>>
Dubbo/HSF在Service Mesh下的思考和方案
查看>>
Django form表单
查看>>
CTYL-9.14(tomcat端口与阿里云安全组,域名与tomcat配置,域名与反向代理)
查看>>
Java 多线程相关问题记录
查看>>
LNMP架构介绍、MySQL安装、PHP安装、 Nginx介绍
查看>>
简单的Spark+Mysql整合开发
查看>>