Windows搭建Svn服务器

1、svn概述

1.1、svn简介

SVN(Subversion)是一个开源的版本控制系统,用于管理代码的版本控制和协作开发。它提供了一系列的命令行工具,以及一套客户端和服务器架构,用于管理代码的版本控制和协作。

在Windows系统,主要有TortoiseSVN和VisualSVN两种客户端GUI集成管理工具。

  • TortoiseSVN,也就是我们常说的"小乌龟"。可以帮助团队成员协同工作,跟踪代码的变化,解决冲突,并保留历史记录。它提供了一套图形化的界面,使用户可以直观地进行版本控制操作,如添加、提交、更新、回滚等。它还提供了一些高级功能,如分支、合并、标签等,以支持更复杂的开发流程。
  • VisualSVN是一个商业的SVN集成工具,专为Microsoft Visual Studio开发环境设计。它提供了与TortoiseSVN类似的功能,但更加紧密地集成到Visual Studio中,使开发人员可以在IDE中直接进行SVN操作。

总的来说,TortoiseSVN和VisualSVN都是用于管理代码的版本控制工具,它们提供了类似的功能,但在集成程度和适用环境上略有不同。TortoiseSVN适用于Windows操作系统,可以与任何开发环境集成;而VisualSVN专为Visual Studio开发环境设计,更紧密地集成到IDE中,提供了更高效的开发体验。

1.2、svn与git的主要差异

SVN和Git都是版本控制工具,但是它们有一些主要的差异。

  1. 分布式 vs 集中式:Git是分布式版本控制系统,每个开发者都有一个完整的代码仓库副本,并且可以在本地进行版本控制。而SVN是集中式版本控制系统,所有代码都托管在中央服务器上,每个开发者只能通过网络访问中央服务器来进行版本控制。

  2. 分支管理:Git在分支管理上比SVN更加灵活。Git的分支是轻量级的,创建和切换分支非常快速。而SVN的分支需要在服务器端创建,切换分支时需要从服务器端进行操作。

  3. 修改历史:Git记录文件的修改历史是基于内容的,每次提交都会生成一个新的快照。SVN记录的是文件的差异,每次提交只会记录文件的增删改动。

  4. 提交操作:Git的提交是本地操作,可以多次提交后再一次推送到远程仓库。SVN的提交是直接同步到中央服务器上。

  5. 分布式开发与协作:由于Git是分布式的,每个开发者都可以在本地进行版本控制和开发,而不会对其他人产生影响。SVN需要通过网络访问中央服务器,开发者需要提交代码到中央服务器上。

总的来说,Git更加适合分布式开发和协作,具有更强大的分支管理功能和快速的提交操作。SVN适合集中式的版本控制和较简单的项目。对于开发来说,Git和Svn使用通常没什么难度,而对于非开发人员(例如策划测试等),git绝对是个噩梦,svn才是正确的选择。

2、TortoiseSVN安装与使用

2.1、TortoiseSVN安装

本文主要使用TortoiseSVN进行演示。

官网下载--》 svn官网下载

网络问题,可能下载不了,换个地址,从svn中文网下载--> svn中文网下载

软件安装:

安装过程比较简单,但有两点需要注意:

1.安装路径最好不要带有空格,如常见的"E:\Program Files",不然注册windows服务比较麻烦。

2.安装过程记得把命令行工具栏勾选上,才可以使用命令行的方式操作,如下所示

安装重启之后,鼠标右键可以出现以下界面:

2.2、TortoiseSVN使用

选择一个文件目录作为代码远程仓库,然后右键

TortoiseSVN->Create repository here,创建一个仓库。然后选择"Create folder structure",创建svn默认的目录结果,包括trunk(主干),branches(分支),tags(标签)

用户/权限配置

编辑conf/svnserve.conf文件,下面的配置项目取消注释

编辑conf/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]
admin = admin
Lily = harryssecret
Lucy = sallyssecret
Tom = sallyssecret

编辑conf/authz文件,进行权限控制。

该配置表明:

只有管理员(admin)对根目录拥有全部权限

开发人员(dev组)对根目录只有只读权限

用户Tom对trunk子目录拥有读写权限,其他用户只有只读权限

组成员前面加个符合"@",非组成员没有符合

[groups]
admin=admin
dev=Lily,Lucy

[/]
@admin = rw
@dev = r
* =

[/trunk]
Tom = rw
# * = r

启动svn服务器

svnserve -d -r E:\svnrepo

注意:该命令执行完毕之后,在控制台是没有任何反应的,但执行已经成功了,不要关闭窗口。

每次手动启动比较麻烦,可以通过以下命令注册成windows服务。

sc create svnserve binpath= "E:\TortoiseSVN\bin\svnserve.exe --service -r E:\svnrepo" displayname= "svnservice" depend= Tcpip start= auto  

使用账户Lily切出trunk目录,执行成功

PS E:\web2> svn co svn://192.168.0.105/trunk  --username Lily
A    trunk\svn.ico
Checked out revision 2.

然而提交新文件的时候,执行成功(没有写入权限)

PS E:\web2\trunk> svn add .\readme.txt
A         readme.txt
PS E:\web2\trunk> svn commit -m 'test'
svn: E170001: Commit failed (details follow):
svn: E170001: Authorization failed

3、svn客户端简单操作

3.1、下载本地代码

刚进企业,部门主管会帮你开通svn账号,并给你一个地址。我们先把代码下载到本地。

新建一个本地目录,右键"SVN Checkout",输入地址即可。(第一次登录需要输入账号密码,后续自动保存到本地)

3.2、更新代码

项目是整个团队在工作,时时刻刻都可能有别的成员提交代码,比如说同事提交了一个接口,说你使用某个功能直接调用一下他的接口就好了。所以,我们需要更新本地代码,与远程保持一致。

操作也很简单,直接在工作目录,空白地方,右键"SVN Update"即可。

3.3、提交代码

当你小心翼翼写了几行代码,终于到了提交代码的时候了,第一次提交的时候难免诚惶诚恐。

提交代码的时候,有几点注意事项:

  • 提交之前务必先更新代码,检查是否有冲突(团队成员刚好跟你修改了同一个文件)。
  • 提交务必添加注释(例如功能开发或者bug修复),便于团队检阅(包括后期的自己)。

直接在工作目录,空白地方,右键"SVN Commit",确认没有冲突,添加注释日志,点击OK即可。

如果是自己新增加的文件,还需要执行"Add"操作,先添加文件,再提交。

相关推荐
新兴ICT项目支撑5 小时前
天翼云910B部署DeepSeek蒸馏70B LLaMA模型实践总结
linux·运维·服务器·910b·天翼云·deepseek r1
网硕互联的小客服7 小时前
如何提高网站在百度中的权重?
linux·运维·服务器·windows·安全
魔希达8 小时前
windows在wsl ubuntu环境中启用cuda加速AI推理和训练
人工智能·windows·ubuntu
青啊青斯10 小时前
Windows搭建CUDA大模型Docker环境
windows·docker·容器
zyx没烦恼10 小时前
Linux 进程控制(进程创建,进程等待)
linux·运维·服务器
EPSDA11 小时前
Linux线程库与线程库封装
linux·运维·服务器·开发语言·c++
luoqice15 小时前
ubuntu下安装TFTP服务器
linux·服务器
马浩同学15 小时前
【ESP32】ESP-IDF开发 | WiFi开发 | HTTPS服务器 + 搭建例程
服务器·c语言·网络·单片机·mcu·https
索然无味io17 小时前
Python--正则表达式
开发语言·windows·python·安全·web安全·网络安全·正则表达式
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。18 小时前
思科、华为、H3C常用命令对照表
运维·服务器·网络·华为