1、什么是SVN

1.1 定义

1、SVN是一个开放源代码项目,用于版本控制,是CollabNet公司在2000年创建。目前SVN作为阿帕奇软件基金会的一个项目运作。

2、TortoiseSVNApache Subversion(SVN)客户端,作为SVN window shell的扩展。

3、VisualSVN是专业SVN客户端,用于和Microsoft Visual Studio集成。

4、参考链接:

http://subversion.apache.org/

https://www.runoob.com/svn/svn-tutorial.html

https://tortoisesvn.net/

https://www.visualsvn.com/visualsvn/

1.2 SVN主要概念

SVN类似于文件系统,能记录每个文件的变更。

源代码库:Repository

统一存放源代码的仓库,实际存储库位于SVN服务器上的某个目录。

仓库是任何一个版本机的核心,仓库不止处理文件还有历史记录,它需要访问网络,扮演服务器的角色,版本控制系统扮演客户端的角色,客户端可以连接仓库,那么他们就可以从仓库中存储或者提取。通过保存这些更改,一个客户端的更改可以被其他人检索到,一个客户端可以让其他人的更改作为一个工作副本。 

检出:checkout

实际上是提取,用于初次下拉代码文件到本地。

提交:submit

当修改了代码,并做了自测(开发人员自行测试,方式可能包括单元测试、集成测试、系统测试等等),则把修改过的代码文件提交到Repository中。

提交是一个保存更改的过程,从私人工作空间到中央服务器。提交后,更改对全部成员可用,通过更新工作副本其他开发者提取这些更改。提交是一个原子操作,要么全部提交成功要么回滚,用户绝不会看到一半完成提交。

更新:update

如果别人做了源代码修改,则需要更新代码,实际上是从Repository把变更后的代码文件同步到本地。

主干:trunk

是主要开发所在的目录,经常被项目开发者们查看。

标签:tags

目录用于储存项目中被命名的快照,标签操作允许给予对仓库中特定版本一个描述和一个难忘的名字。比如,LAST_STABLE_CODE_BEFORE_EMAIL_SUPPORT Repository UUID: 7ceef8cb-3799-40dd-a067-c216ec2e5247 Revision: 13 更令人难忘。

分支:Branch

分支操作用于创建开发的另一条线,当你想把开发进程复制进两个不同的方向是很有用的。比如,当你发布 5.0 版本时,你可能想从 5.0 bug 修复中分离出来创建一个开发 6.0 功能的分支。

工作副本:

工作副本是仓库的一个快照。这个仓库被所有的成员共享,但人们不直接修改它,相反每个开发者检查这个工作副本,工作副本是一个私人的工作空间,这里开发者可以独立于其他成员做自己的工作。

2、TortoiseSVN安装

2.1下载

官网下载链接:

https://tortoisesvn.net/downloads.html

此链接下面有语言包下载:

image.png

2.2安装

直接按提示安装即可,安装后自动在文件系统中右键菜单中增加入口,如下图:

image.png


3、VisualSVN安装

3.1下载

官网链接:https://www.visualsvn.com/visualsvn/download/

按照编码规范规定,需要使用VS 2017,所以下载用于VS 2017的版本:6.3.1

下载文件:VisualSVN-VS2017-6.3.1.vsix

3.2安装

直接双击安装:

image.png


安装后,VS2017增加了一个一级菜单:

image.png


同时,在解决方案资源管理器右键菜单中增加:

image.png


4、Visual Studio工程准备

4.1重新指定objbin目录的路径

1C#项目

右键点击项目,出现弹出菜单,选“属性”,如下:

image.png


点击“属性”后,出现如下界面:


image.png

修改输出路径。强烈要求把目录定到仓库或者分支的根目录中,使用..来相对表示根目录,这样就不用每次修改了。

2、C++项目

3、VB项目

4.2重新指定发布目录的路径

右键点击项目,出现弹出菜单,选“发布”,如下:

image.png


点击“新建配置文件...”,如下:

image.png


输入新的发布目录,强烈要求把目录定到仓库或者分支的根目录中,使用..来相对表示根目录,这样就不用每次修改了。


5、SVN常用操作

5.1 Checkout

1、获取仓库地址

例如:https://keys/svn/测试仓库/

2、新建本地项目地址

例如:D:\测试项目

3、创建本地工作副本

在资源管理器中,选择本地工作副本文件夹,右键菜单:

image.png


执行SVN Checkout...后,如下:

image.png


点击OK后,如果没有连接过SVN服务器,会提示输出用户名和密码,否则提示如下:

image.png


Completed表示完成,同时自动产生一个.svn目录。不应该进去这个目录,尤其不应该更动这个目录下面的任何内容。否则会很可能会造成SVN无法正常运作。

 

由于仓库是空的,所以本地工作副本也是空的。

5.2 Add

进入VS 2017,新建一个项目,如下:

image.png


指定位置为D:\测试项目”,这是在5.1 Checkout中新建的本地副本。确认后,如下:

image.png


web应用程序,确定后,如下:

image.png


“解决方案资源管理器”中,右键点击TestProject项目后,如下:

image.png


执行Add to Subversion”后,如下:

image.png


小黄点表示已经加入到本地副本,实际上被复制到了.svn目录下。


5.3 配置ignore

还是在项目上右键弹出菜单:

image.png


进入VisualSVN-->Properties菜单后,点击“New...”,如下:

image.png


执行Other”菜单,“Property name”选择为“svn:ignore

image.png


5.4 Commit

1、修改在5.2 Add一节中新增的项目生成目录,还是在项目上右键菜单,选择“属性”:

image.png

选择“所有配置”,修改输出目录为:..\..\bin

 

2、生成解决方案

解决方案右键菜单“生成解决方案”:

image.png


输出窗口提示为:

image.png


生成过程没有错误,所以可以提交代码文件到仓库了。


2、提交

项目右键菜单:


image.png


选择Commit...,注意一定要输入Message说明修改哪些了bug或者新增了哪些功能:

image.png

提示:

image.png


点击OK后,用解决方案右键菜单来提交不会提示错误:

image.png


点击OK后,发现黄点变为绿点:

image.png


进入资源管理器查看sln文件是否加入:

image.png


画了红线的sln文件没有加入到本地工作副本中,执行右键弹出菜单的“Add”:

image.png


结果是这个sln文件前面的问号改为加号:

image.png