【Tool】---SVN的超级简单并具体得使用介绍
又一次被打脸,笔者表示再也不相信自己的记性了。简单的SVN隔了一段时间后,由于项目的需要要重新简历代码库,竟然一下子又忘了。天那,这就好比战士上了战场发现没带枪,这能行吗?因此,趁着今天又简短的复习了一遍,简要记录一下,纯粹为了以后看。
本地初始化代码库
使用SVN工具的开始应该要在本地初始化仓库以及构建仓库。步骤如下:
1. 建立一个空的文件夹

2. 点击PRJ_Test文件夹右键TortoiseSVN->Create Repository Here

建立完毕之后,SVN的基本工程即建立完毕,PRJ_Test目录如下图:

3. 工程建立完毕之后,即可进行checkout,也就是最常见的trunk,tag, branch
点击刚刚的工程目录右键-->Checkout,checkout完毕之后,会看到PRJ_Testwc文件夹

Checkout出来的PRJ_Testwc目录如下,看到这里,是否已经让你感觉非常熟悉呢?到这里基本的工程也就创建完成了。

4. 工程创建完毕,基本工作也准备完毕,正题开始,准备代码由于trunk一般作为最终的开发主仓库,因此建议第一步降trunk准备好。
这里我们就以简单的几个代码文件做下说明即可。将所有的代码均copy至trunk下,如下图,(此处仅以main.cpp和main.h为例)

全选所有的代码文件,右键TortoiseSVN->Add,此步骤将所有的代码添加到SVN的工程管理中,这样我们的SVN才知道管理哪些代码。

Add完毕之后,接下来右键trunk查看下diff,应该能看到新增了两个文件,然后再右键commit,并且填写相应的commit信息,如下图:


5. 最终点击ok之后,我们的trunk主分支的代码已经准备完毕,此时可以在自己电脑上制定checkout的路径,从而checkout该项目trunk目录的代码,同样的,也带有SVN的版本管理功能啦。
SVN创建分支
最基本的代码库已经创建完毕,但是trunk作为我们最终要维护的主支,一般都是最终才会把修改的代码merge到这个主支上,在调试阶段,一般要创建分支,SVN创建分支的步骤如下:
首先,点击trunk目录右键->TortoiseSVN->Branch/tag

在To Path目录中填入准备创建得分支目录,记得填上Log message信息,点击OK即可创建分支完成。

创建Branch1分支完成后,Checkout时,可以看到下面得分支信息,接下来就可以在分支信息上任意得玩耍了。

注: 由于通常情况下,你是为了解决某个问题而创建一个分支,待问题解决后,会把修改merge到主分支上,因此每次创建分支时,建议add一个说明文档,这样就不会乱了。
所有得分支信息,都是branch在管理,你可以通过查看branches得log information来看到你得分支创建和删除信息,有时候还需要删除某个分支,达到一个闭环得效果。如下图:
右键检出得分支文件夹,然后TortoiseSVN->Repo Browser->右键Branch1->Delete->填写log messgae即可

SVN分支Merge
在创建完分支并完成修改后,通常要将分支合并到主支上面,这个操作也比较简单。
首先,我们在检出得Branch1目录中增添一个add.txt测试文档,并且add提交,然后查看Branch1得日志如下:

其次,右键Trunk主仓库->TortoiseSVN->Merge->Next->指定Branch1路径并选择版本,如下图


最后,一直next等待merge,即可。最终可以查看Trunk得改动,会发现add.txt已经被添加过来

最终在trunk再commit一次,完成log meeage即可。至此,merge成功并结束
【Tool】---SVN的超级简单并具体得使用介绍的更多相关文章
- JS基础(超级简单)
1 JS基础(超级简单) 1.1 数据类型 1.1.1 基本类型: 1) Number:特别注意:NaN的检测方法:Nan!=NaN;或者使用isNaN方法 2) ...
- JavaScript,一个超级简单的方法判断浏览器的内核前缀
先说明,此处的方法是说超级简单的方法,不是指代码超级少,而是用非常简单的知识点,只要懂得怎么写JavaScript的行内样式就可以判断. 大家应该还记得JavaScript行内样式怎么写吧?(看来我是 ...
- zw版_Halcon图像交换、数据格式、以及超级简单实用的DIY全内存计算.TXT
zw版_Halcon图像交换.数据格式.以及超级简单实用的DIY全内存计算.TXT Halcon由于效率和其他原因,内部图像采用了很多自有格式,提高运行速度,但在数据交换方面非常麻烦. 特别是基于co ...
- phpexcelreader超级简单使用
phpexcelreader超级简单使用 该php类可以到官网下载:http://www.codeplex.com/PHPExcel,下载的文件不能直接使用要看下面的备注. 备注: 1.要将olere ...
- 哈,又一款超级简单的队列(MQ)实现方案来了~
开源的消息队列已经很多了,但大部分很重,实际环境下,很多可能只是使用到了一点功能而已,杀鸡使用牛刀,着实有些浪费了.很多时候,我们只想要一片绿叶,但它们给了我们整个的春天,很难消化.本着DIR精神, ...
- JQuery -> 超级简单的下拉菜单
使用jquery实现一个超级简单的下拉菜单. 效果图 最初的效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRmVlTGFuZw==/font/5a6L ...
- html超级简单实现点赞(收藏)和取消赞效果
1.前言 我们经常会遇到对一些列表呀进行点赞呀收藏数据等效果呀.今天就用html+css实现超级简单易上手的点赞和取消赞的demo展示. 2.详情 1.css样式 .like{ font-size:6 ...
- Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷
Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...
- SVN就是这么简单
什么是SVN SVN全称:Subversion,是一个开放源代码的版本控制系统 Svn是一种集中式文件版本管理系统.集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码, ...
随机推荐
- CountableThreadPool
Spider剩下的CountableThreadPool 在上一篇的Spider中我们一定注意到了threadpool这个变量,这个变量是Spider中的线程池,具体代码 public class C ...
- H3C 静态路由配置示例
- 递归实现深拷贝( 只要学过js递归,看不懂找我包会 )
要用递归实现深拷贝,首先说说什么是深拷贝和浅拷贝 浅拷贝:一个值赋给另一个值,当原先的值不改变地址的情况下改变数据,另一个值跟着变 深拷贝:一个值赋给另一个值,当原先的值不改变地址的情况下改变数据,另 ...
- D3.js力导向图中新增节点及新增关系连线示例
大家在使用D3.js中的力导向图时,基本都会遇到动态增加节点及连线的需求,这里记录一下我的实现方式. 话不多说,先放代码: <!DOCTYPE html> <html lang=&q ...
- 手机网页H5 自适应不同分辨率的屏幕 必学标签meta之viewport
viewport 语法介绍 <meta name="viewport"content=" height = [pixel_value | device-height ...
- dotnet 动态代理魔法书
看到标题的小伙伴是不是想知道什么是魔法书,如果你需要写一段代码,这段代码是在做神奇的业务,只有你查询到了魔法书你才能找到这个对象,同时你还需要实现自己的接口,通过自己实现的接口调用才能用到有趣的方法 ...
- SQLAlchemy的增删改查 一对多 多对多
Models只是配置和使用比较简单,因为是Django自带的ORM框架,所以兼容性不行,所以出现了SQLAlchemy,SQLAlchemy是比较全面的ORM框架,它可以在任何使用SQL查询时使用 以 ...
- Iterator接口介绍(迭代器)
第一步 第二步 第二步用while 第二步用for循环(了解) 备注:
- Elasticsearch基本概念和使用
Elasticsearch基本概念和使用 1.操作索引 1.1.基本概念 Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的. 对比关系: 索引( ...
- 跟我一起学QT_QT标准对话框_文件对话框
标准对话框 QT的标准对话框分为以下几种 颜色对话框 文件对话框 字体对话框 输入对话框 消息对话框 进度对话框 错误信息对话框 向导对话框 文件对话框 QT中的文件对话框QFileDialog类提供 ...