1、什么是SVN
1.1 定义
1、SVN是一个开放源代码项目,用于版本控制,是CollabNet公司在2000年创建。目前SVN作为阿帕奇软件基金会的一个项目运作。
2、TortoiseSVN是Apache 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类似于文件系统,能记录每个文件的变更。
l 源代码库:Repository
统一存放源代码的仓库,实际存储库位于SVN服务器上的某个目录。
仓库是任何一个版本机的核心,仓库不止处理文件还有历史记录,它需要访问网络,扮演服务器的角色,版本控制系统扮演客户端的角色,客户端可以连接仓库,那么他们就可以从仓库中存储或者提取。通过保存这些更改,一个客户端的更改可以被其他人检索到,一个客户端可以让其他人的更改作为一个工作副本。
l 检出:checkout
实际上是提取,用于初次下拉代码文件到本地。
l 提交:submit
当修改了代码,并做了自测(开发人员自行测试,方式可能包括单元测试、集成测试、系统测试等等),则把修改过的代码文件提交到Repository中。
提交是一个保存更改的过程,从私人工作空间到中央服务器。提交后,更改对全部成员可用,通过更新工作副本其他开发者提取这些更改。提交是一个原子操作,要么全部提交成功要么回滚,用户绝不会看到一半完成提交。
l 更新:update
如果别人做了源代码修改,则需要更新代码,实际上是从Repository把变更后的代码文件同步到本地。
l 主干:trunk
是主要开发所在的目录,经常被项目开发者们查看。
l 标签:tags
目录用于储存项目中被命名的快照,标签操作允许给予对仓库中特定版本一个描述和一个难忘的名字。比如,LAST_STABLE_CODE_BEFORE_EMAIL_SUPPORT 比 Repository UUID: 7ceef8cb-3799-40dd-a067-c216ec2e5247 和Revision: 13 更令人难忘。
l 分支:Branch
分支操作用于创建开发的另一条线,当你想把开发进程复制进两个不同的方向是很有用的。比如,当你发布 5.0 版本时,你可能想从 5.0 的 bug 修复中分离出来创建一个开发 6.0 功能的分支。
l 工作副本:
工作副本是仓库的一个快照。这个仓库被所有的成员共享,但人们不直接修改它,相反每个开发者检查这个工作副本,工作副本是一个私人的工作空间,这里开发者可以独立于其他成员做自己的工作。
2、TortoiseSVN安装
2.1下载
官网下载链接:
https://tortoisesvn.net/downloads.html
此链接下面有语言包下载:
2.2安装
直接按提示安装即可,安装后自动在文件系统中右键菜单中增加入口,如下图:
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安装
直接双击安装:
安装后,VS2017增加了一个一级菜单:
同时,在解决方案资源管理器右键菜单中增加:
4、Visual Studio工程准备
4.1重新指定obj和bin目录的路径
1、C#项目
右键点击项目,出现弹出菜单,选“属性”,如下:
点击“属性”后,出现如下界面:
修改输出路径。强烈要求把目录定到仓库或者分支的根目录中,使用..来相对表示根目录,这样就不用每次修改了。
2、C++项目
略
3、VB项目
略
4.2重新指定发布目录的路径
右键点击项目,出现弹出菜单,选“发布”,如下:
点击“新建配置文件...”,如下:
输入新的发布目录,强烈要求把目录定到仓库或者分支的根目录中,使用..来相对表示根目录,这样就不用每次修改了。
5、SVN常用操作
5.1 Checkout
1、获取仓库地址
例如:https://keys/svn/测试仓库/
2、新建本地项目地址
例如:D:\测试项目
3、创建本地工作副本
在资源管理器中,选择本地工作副本文件夹,右键菜单:
执行SVN Checkout...后,如下:
点击OK后,如果没有连接过SVN服务器,会提示输出用户名和密码,否则提示如下:
Completed表示完成,同时自动产生一个.svn目录。不应该进去这个目录,尤其不应该更动这个目录下面的任何内容。否则会很可能会造成SVN无法正常运作。
由于仓库是空的,所以本地工作副本也是空的。
5.2 Add
进入VS 2017,新建一个项目,如下:
指定位置为“D:\测试项目”,这是在5.1 Checkout中新建的本地副本。确认后,如下:
选web应用程序,确定后,如下:
在“解决方案资源管理器”中,右键点击TestProject项目后,如下:
执行“Add to Subversion”后,如下:
小黄点表示已经加入到本地副本,实际上被复制到了.svn目录下。
5.3 配置ignore
还是在项目上右键弹出菜单:
进入VisualSVN-->Properties菜单后,点击“New...”,如下:
执行“Other”菜单,“Property name”选择为“svn:ignore”
5.4 Commit
1、修改在5.2 Add一节中新增的项目生成目录,还是在项目上右键菜单,选择“属性”:
选择“所有配置”,修改输出目录为:..\..\bin
2、生成解决方案
解决方案右键菜单“生成解决方案”:
“输出”窗口提示为:
“生成”过程没有错误,所以可以提交代码文件到仓库了。
2、提交
项目右键菜单:
选择“Commit...”,注意一定要输入Message说明修改哪些了bug或者新增了哪些功能:
提示:
点击OK后,用解决方案右键菜单来提交不会提示错误:
点击OK后,发现黄点变为绿点:
进入资源管理器查看sln文件是否加入:
画了红线的sln文件没有加入到本地工作副本中,执行右键弹出菜单的“Add”:
结果是这个sln文件前面的问号改为加号: