版本管理-SVN本地版本管理
0. 引言
使用工具是人与动物的基本区别,善用工具可以极大的提高效率,降低错误率。在PC软件领域,有很多好用的工具,这些工具都是软件工程重要的基础设施。然而,嵌入式开发,在其代码数量上,很多时候由于没有那些层出不穷的框架和库,所以代码量相比小很多,另外嵌入式的运行载体决定了不可能运行大规模的程序,目标文件一般都是kB为单位,即使带操作系统的嵌入式开发,目标代码也常是MB级别。
这些因素导致很多嵌入式开发者对代码工具不太重视,直接手动管理代码,习惯性的改动一次copy一个版本,几天下来,要不是文件以日期为单位,每天一版或者一天有好几个后缀版本,要不是就一路v1,v2,v3后缀备份… 一段时间备份下来,这些东西只有自己可以看懂,但是一旦放下几天,某天又回头要追溯哪个问题时,由于没有修改记录等原因,变得及其困难,自己也看不懂了。虽然公司都有服务器,但是涉及到多人开发情况下,服务器提交都非常慎重,一般的是做出一个阶段性成果或者一个模块测试之后才往服务器合并。大部分时间都是本地开发,一周往服务器commit一两次。最终导致本机硬盘快速消耗,代码依然很难追述到某个节点,尤其为一些验证和尝试工作而新开的版本,这些尝试其实很有价值,但是最终被大量备份文件淹没了,当硬盘快爆了的时候往往都是把所有备份全部删掉,项目赶得急,根本无暇顾及那些有意义的研究和备份。
其实这些都可以在本机用版本管理软件很好的解决,本文就说说单机版的版本管理。做PC软件的可以绕过,服务器仓库不受地点限制,机器故障概率基本为零,比单机强多了,做嵌入式的朋友,或入行不深的学生和爱好者可以看看本文,毕竟经验之谈。
1.SVN本地版本管理
1.1 下载安装Tortoise SVN
单机版本管理,Tortoise SVN就足够了,如果多人合作项目,当然就直接使用Visual SVN 了,主要就是配置Visual SVN Server,都是傻瓜式的安装,不再赘述。(本文只讨论Windows平台)
1.2 代码管理基础操作
A. 新建代码仓库
1、新建文件夹,目录和文件夹名称最好都用英文;
2、打开文件夹,在空白处按下右键;
3、在弹出的菜单中选择“Tortoise SVN - Create repository here”;
4、弹出对话框,提示创建成功,并自动在文件夹中创建了目录结构;
5、在资源文件夹内,右键“Tortoise SVN – Repo browser”,然后复制代码仓库地址URL,其实就是本地的文件夹地址加了file://。
B. 导入项目(把项目加入代码库)
1、打开已有的项目文件夹,在空白处按下鼠标右键;
2、在弹出的菜单中选择“TortoiseSVN - Import”;
3、选择导入路径file:///F:/repository,填写备注信息,点击“OK”开始导入;
4、导入完成后会弹出提示,可以查看导入的文件,点击“OK”,完成导入。
C. 建立工作目录(检出)
1、新建工作目录文件夹,在空白处按下鼠标右键;
2、在弹出的菜单中选择“SVN Checkout...”;
3、在弹出的对话框中选择库目录、工作目录,点击“OK”开始检出;
4、弹出详细信息对话框,导出完成后,点击“OK”。
可以看到工作目录中多出了版本管理库中的文件,这些文件就是有版本控制的,对这些文件的修改可以保存到库,也可以从库里恢复旧版本的文件。
一般的,也可以在任何地方点击右键,在弹出的菜单中选择“SVN Checkout...”,然后修改检出的文件的保存路径。
D. 更新工作目录
1.对于单机版本管理来说,这个问题基本可以忽略,除非你在好几个地方做了check out然后提交了修改。然后某一天你又到了你常用的目录下工作,然后提交修改,但是这时候你用的版本已经不是最新的了。
2.工作前更新文件是一个好习惯,通常在你对工作目录进行修改前,为保证你的文件是最新的,需要进行更新操作;
3. 在工作目录空白处点击鼠标右键,选择“SVN Update”;
4. 会弹出对话框开始更新,并显示更新了哪些内容,库版本是多少。下面就是我在另外一个目录提交了版本,然后到workSpace目录下,又提交一次update。
E.提交工作目录(Commit、check in)
1、本地目录做了修改,然后需要提交到代码库;
2、在工作目录内的空白处或者目录上点击鼠标右键,选择“SVN Commit”;
3、会弹出对话框,可以输入备注信息,方便以后查看历史记录。
显示将要提交哪些文件,是什么类型改动,点击“OK”开始提交,比如下图是我在文件夹内加了add2.txt文件,然后提交显示add类型改动;
4、弹出对话框显示提交进度,完成后点击“OK”完成。
若不是新加文件,而是修改了已有文件然后提交,会显示文件修改。
F.版本回滚
问题来了,最前面的引言说的,如何退回某一个版本。
1.为了试验更加清晰。我们先提交一次,做个记录。提交时候的log写为:测试版本回滚v7.
2.修改文件,提交第二次,log为test changed 1。
3. 修改文件,提交第三次。
4. 版本回滚到v7.
目前版本9,可以回到版本7。根据版本回滚.
当然,一般的都是根据提交时候的注释回滚。找到某一版本,然后右键选择Update item to revision 或者直接Check Out,两者效果是一样的。
G. 如何新加一个文件
如下,新建了两个文件。
然后新加文件添加到代码仓库,告诉SVN,这两个小弟也帮忙看管着。
右键“TortoiseSVN - add”,弹出对话框选择要添加的文件。若直接在文件上单击右键添加,那么这两个文件会直接添加到版本库,不会给出提示。
添加成功之后会红色提示,表示和版本库不一致,没有同步。提交之后,红色感叹号会变成绿色钩的标记。
提交之后,这两个文件就在代码仓库有了一个备份,下次check out时候就会有这两个文件。
同样道理,要删除文件也必须commit,让SVN知道不再需要管理这个文件,下次check out时候他才不会出现这个文件。
但是,如果按照版本来找,还是可以在当前版本找到被删除的文件的,这就是版本管理软件的优势。
若要取消刚才添加的文件,直接revert 即可,和添加的逻辑刚好相反。
版本管理-SVN本地版本管理的更多相关文章
- svn代码版本管理总结
svn代码版本管理 1.0开发,做dev1.0的branch此时的目录结构svn://proj/ +trunk/ (不负担开发任务) +branches ...
- linux下搭建svn本地服务器
在linux下搭建svn本地服务器可以很好的管理自己的代码,具体过程如下: # mkdir svn_local # cd svn_local # svnadmin create led_diplay ...
- 怎样搭建svn本地server,管理本地的代码
搭建svn本地server,以下是详细的步骤介绍. 一.准备工作 1.下载svnserver端:Subversion. 到官方站点(http://s version.tigris.org/)下载最新的 ...
- SVN本地服务器搭建及在Eclipse中的应用
0.说明在程序开发的时候会有很多的版本,通过手动备份的方式不紧麻烦而且低效易出错.使用SVN来管理版本会方便很多,虽然有一些学习成本,但是学会使用之后会使得开发更加的高效.本文介绍如何在本地搭建svn ...
- 在vs2005中使用SVN进行版本管理
1.软件准备 VisualSVN-Server-2.5.10.msi SVN服务端 WindowsXP-KB942288-v3-x86.exe XP中安装TortoiseSVNSVN1.8必须 Tor ...
- $SVN代码版本管理工具的使用
SVN是一种代码版本管理工具,具有可视化的操作界面,使用简便,和git的功能类似.下面总结一下SVN的基本用法: 1.安装SVN软件,和安装一般的软件的步骤差不多,这里使用的版本是TortoiseSV ...
- 代码版本管理/SVN/Git
代码版本管理 一.SVN 1.SVN diff(create patch) 遇到了一个问题: Index: 通信协议.doc ===================================== ...
- SVN 等版本管理工具
程序猿团队开发代码,必须的程序版本管理工具 1.SVN使用教程总结 2.SVN如何切换用户 在使用svn更新或提交数据时需要输入用户名和密码,在输入框中可以选择是否记录,以便下次操作无需再次输入用户名 ...
- ※版本管理※=>☆SVN工具=>※解决地域麻烦※№→搭建自己的网络SVN (SourceForge 免费) [转]
源文 http://blog.csdn.net/xiaoting451292510/article/details/8562570 分类: 版本管理 2013-02-01 14:44 26057人阅读 ...
随机推荐
- es6分享——变量的解构赋值
变量的解构赋值:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前的写法: var a = 1; var b = 2; es6允许的写法 ...
- 实现tap的多种方式
一.tap.js 这是一个比较轻量的插件tap.js,142行代码,支持模块化开发. 1)handleEvent addEventListener方法中的第二个参数,我原先并没有注意到其实可以传一个对 ...
- C语言 第七章 数组与字符串
一.数组 1.1.数组的概念 用来存储一组相同类型数据的数据结构.有点像班上放手机的手机袋,超市的储物柜. 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素. ...
- 《图解Spark:核心技术与案例实战》介绍及书附资源
本书中所使用到的测试数据.代码和安装包放在百度盘提供 下载 ,地址为https://pan.baidu.com/s/1o8ydtKA 密码:imaa 另外在百度盘提供本书附录 下载 ,地址为http ...
- 使用phpize安装php扩展
环境: CentOs 6.3 php 7 nginx 举例: 安装ssh2扩展 1.登陆http://pecl.php.net,搜索ssh2,如下图所示,注意版本的选择要根据php的版本来 2.下载s ...
- SQL Server 数据缓存
引言 SQL Server通过一些工具来监控数据,其中之一的方法就是动态管理管理视图(DMV). 常规动态服务器管理对象 dm_db_*:数据库和数据库对象 dm_exec_*:执行用户代码和关联的连 ...
- 3.Java基础之Date对象
毕向东老师Java基础学习笔记——Date对象 今天学习Java中的Date对象后,感觉这个对象对我们主要有以下几点用处. 1.获取时间和日期并按照自己定义的格式显示. 2.网站设计时显示时间. 知 ...
- 4.Struts2转向类型详解
struts2中提供了多种视图转向类型,类型由type属性指定,如: dispatcher:请求转发(默认值) redirect:重定向到页面 redirectAction:重定向到Action pl ...
- 实用的CSS3属性和使用技巧
CSS可以改进网站的设计并且开拓网站设计更多的可能性,可以令你的网页更具吸引力.对于前端开发者.网站设计师来说,掌握并熟练应用CSS是一项必不可少的技能. 下面列出了一些非常实用的CSS3属性和使用技 ...
- C# DataTable的詳細用法
转载别人的转载,原作者都不知道了 在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一 ...