【杏仁】Windows下安装与配置SVN

前言


【杏仁】写在前面的话

有缘人:
  您好!
  首先,请原谅我把模块化思维用到写文章上,前言部分独立抽离出来写了篇文章,这样【杏仁】系列的文章就可以重复引用了。
  偷懒,始终是程序员最棒的优点。
  偷懒,是一门很高深的艺术,很容易误入歧途,请君三思而行!


人生
不止是工作
不止是生活
不止是学习
我愿你
找到人生的意义
经历过不堪
经历过疾苦
经历过分离
仍能坦然度过余生
遇见你的人生
我已三生有幸
                           ——杏仁奶昔随笔


我默默看了一眼远方 你依旧美丽的盛开

目录


一、关于SVN
二、准备工作
1.安装包
2.语言包
三、SVN的安装
四、SVN的配置使用
1、创建本地版本库
2、配置登录用户和密码
3、配置用户组和访问权限
4、开启验证服务配置
5、开启局域网访问服务
6、登录SVN版本库
五、相关拓展

注:菜单设置有锚点,点击可直达相关内容

正文


一、关于SVN[1]

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。[#引用]

二、准备工作[2]

本机系统环境:2019LTSC企业版Win10(64位)

小乌龟官网:https://tortoisesvn.net/
下载安装包:https://tortoisesvn.net/downloads.html(点我直接下载)
下载语言包:点我直接下载

【杏仁】Windows下安装与配置SVN_第1张图片
按系统位数选择: 32/64位安装包

三、SVN的安装[3]

双击下载好的安装包:TortoiseSVN-1.11.1.28492-x64-svn-1.11.1.msi
注意,如果需要自己搭建SVN库,需要勾选全部功能


【杏仁】Windows下安装与配置SVN_第2张图片
勾选全部功能

双击安装中文语言包:LanguagePack_1.11.1.28492-x64-zh_CN.msi
设置成中文


【杏仁】Windows下安装与配置SVN_第3张图片
设置SVN语言

四、SVN的配置使用[4]

1、创建本地版本库
通常我们创建SVN服务端都是通过VisualSVN Server这个软件来完成,然后用TotoiseSVN来当客户端,其实TotoiseSVN也是可以当服务器的,而且很方便,不用装那么多软件,何乐而不为。

【杏仁】Windows下安装与配置SVN_第4张图片
创建版本库

2、配置登录用户和密码
创建版本库完成后,会自动在当前文件夹生成多个文件夹,右键TotoiseSVN》版本库浏览器,可以对当前版本库进行文件管理,当前版本库地址为:file:///D:/Dev/svn.repo,这显然还不能局域网多人使用。
进入conf文件夹,用记事本编辑passwd文件(我用的是notepad++),在文件最后
添加登录用户和密码

### 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
root = 123456
siner = 123456
user1 = 123456
user2 = 123456

3、配置用户组和访问权限
用记事本编辑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
#用户组名 = 用户,用户...
admin = root,siner
user = user1,user2
#SVN根目录,如果不设置* = ,那么不用登录也能看到,请注意
[/]
@admin = rw
* = 
#主分支目录,用user1登录时,访问地址栏必须填到目录:svn://127.0.0.1/trunk
[/trunk]
@admin = rw
@user = rw
* = 
# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

4、开启验证服务配置
用记事本编辑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
### directory containing this file.  The specified path may be a
### repository relative URL (^/) or an absolute file:// URL to a text
### file in a Subversion repository.  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
### The groups-db option controls the location of the file with the
### group definitions and allows maintaining groups separately from the
### authorization rules.  The groups-db file is of the same format as the
### authz-db file and should contain a single [groups] section with the
### group definitions.  If the option is enabled, the authz-db file cannot
### contain a [groups] section.  Unless you specify a path starting with
### a /, the file's location is relative to the directory containing this
### file.  The specified path may be a repository relative URL (^/) or an
### absolute file:// URL to a text file in a Subversion repository.
### This option is not being used by default.
###组定义,如果开启了authz-db = authz,也开启这个会报错
#groups-db = groups
### 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 = My First Repository
### 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
### The hooks-env options specifies a path to the hook script environment 
### configuration file. This option overrides the per-repository default
### and can be used to configure the hook script environment for multiple 
### repositories in a single file, if an absolute path is specified.
### Unless you specify an absolute path, the file's location is relative
### to the directory containing this file.
# hooks-env = hooks-env

[sasl]
### This option specifies whether you want to use the Cyrus SASL
### library for authentication. Default is false.
### Enabling this option requires svnserve to have been 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

5、开启局域网访问服务
关键点来了,因为我们用的是TotoiseSVN,版本库创建后,那个路径是本地才能访问的,接下来要实现局域网内多人访问:用管理员身份打开CMD命令窗口,输入

#填写TortoiseSVN安装路径,版本库路径,开启端口(默认3690),创建的服务名称

sc create "MySVNService" binPath= "C:\Program Files\TortoiseSVN\bin\svnserve.exe --service --root D:\Dev\svn.repo --listen-port 3691" displayName= "MySVNService" depend= TCPIP start= auto

#启动服务(创建时填的服务名,启动后默认已经随电脑启动而启动)
net start MySVNService

#删除服务(如果你配置错了,删掉再创建一次就好)
sc delete MySVNService
【杏仁】Windows下安装与配置SVN_第5张图片
10.png

6、登录SVN版本库
使用SVN版本库进行文件管理,可以使用两种方式登录:
1.file:///D:/Dev/svn.repo
2.svn://127.0.0.1或本机IP
因此,其实只要你电脑能获取到公网IP,那么其他人也就能远程连上你的SVN库,进行版本控制

【杏仁】Windows下安装与配置SVN_第6张图片
SVN版本库的使用

连接成功后,就可以将文件直接拖进去,或者复制、删除等操作
局域网远程登录SVN库进行文件管理:
运行CMD命令窗口,输入ipconfig查看当前电脑IP地址,假设本地电脑IP为:192.168.1.7
在同一个局域网的另一台电脑,也安装上SVN,如果只是管理SVN版本库,在安装处可以不勾选全部功能。安装完毕后,桌面右键,打开TotoiseSVN>版本库浏览器,地址输入svn//:192.168.1.7
当然,如果设置有登录账户和密码,会弹出登录框,而且不同用户设置访问权限后,地址也要对应权限,本次例子里,user1这个用户只有对trunk目录的访问权限,所以用svn//:192.168.1.7直接登录user1,会提示网络资源错误,只需改变在登录时的路径为:svn//:192.168.1.7/trunk然后输入正确的密码,即可访问。
而root用户是归属admin组的,所以可以直接访问svn//:192.168.1.7

五、相关拓展[5]

SVN使用的是自己的协议,所以必须安装对应的客户端,用svn://访问,如果要让SVN使用http://协议访问,那么需要用到tomcat。大致步骤是在tomcat安装svn模块,然后将一些svn的配置搬到tomcat对应的模块配置里,然后通过tomcat进行管理svn。还有一种就是用VisualSVN搭建版本库,它本身集成了Subversion和Apache。总而言之,如果不怕麻烦,又有需求将svn改成http协议的话,可以根据这两条思路去搭建,这样也有好处,可以用nginx进行转发,让SVN不暴露出去。[参考]
SVN是一款老牌的集中式版本管理工具,随着分布式思想的推广流行,未来用得更广的版本管理软件是Git,因为它是一款分布式的版本控制工具,Git不会像SVN一样,在每个目录都创建隐藏的管理目录,相对SVN本地占用的资源量会少一点。Git在断网的情况下,依旧能进行提交上传,当网络恢复再进行版本的合并,因为是分布式的,每个账户都是一套完整的版本库,即使中心Git库挂掉了,依旧不影响每个成员的使用。而SVN中心库挂掉了,成员就无法使用命令上传代码,成员之间就处在一种失联状态,而且代码的提交下载速度也比Git慢,当然,如果在局域网,几乎可以忽略。
》》》Git预留位置
每款软件的诞生都有他的优势劣势,适用范围,如果项目需要集中式管理,那就用SVN,比如自己拿来做文件统一管理,小团队开发等。
把SVN当做自己的网盘使用,那就需要配置公网,SVN默认端口是3690,通过花生壳的端口映射,也是可以实现公网访问的。当然,还有很多相关的软件也能达到内网映射到外网,nat123,金万维动态域名,还有一些黑科技,这里以后可以开个新专题。
》》》网络配置预留位置

【杏仁】Windows下安装与配置SVN_第7张图片
www.siner.vip

作者 @杏仁奶昔
2019 年 04月 06 日


  1. 关于SVN部分 ↩

  2. 准备工作部分 ↩

  3. SVN的安装部分 ↩

  4. SVN的配置使用部分 ↩

  5. 相关拓展部分 ↩

你可能感兴趣的:(【杏仁】Windows下安装与配置SVN)