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都是版本控制工具,但是它们有一些主要的差异。
-
分布式 vs 集中式:Git是分布式版本控制系统,每个开发者都有一个完整的代码仓库副本,并且可以在本地进行版本控制。而SVN是集中式版本控制系统,所有代码都托管在中央服务器上,每个开发者只能通过网络访问中央服务器来进行版本控制。
-
分支管理:Git在分支管理上比SVN更加灵活。Git的分支是轻量级的,创建和切换分支非常快速。而SVN的分支需要在服务器端创建,切换分支时需要从服务器端进行操作。
-
修改历史:Git记录文件的修改历史是基于内容的,每次提交都会生成一个新的快照。SVN记录的是文件的差异,每次提交只会记录文件的增删改动。
-
提交操作:Git的提交是本地操作,可以多次提交后再一次推送到远程仓库。SVN的提交是直接同步到中央服务器上。
-
分布式开发与协作:由于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"操作,先添加文件,再提交。