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 即可,和添加的逻辑刚好相反。

另可参考:
https://blog.csdn.net/u014469537/article/details/78545604

版本管理-SVN本地版本管理相关推荐

  1. GIT(一):版本控制、git历史、git基本概念、git安装配置、git版本管理(本地和远程)、git分支管理

    目录 一.版本控制 1.1 版本控制概念 1.2 版本控制软件分类 1.2.1 集中式版本控制 1.2.2 分布式版本控制 二.git历史 三.GIT基本概念 3.1 GIT原理 3.1.1 GIT基 ...

  2. 版本管理-SVN冲突爆红后如何通过颜色和快捷键准确无误地合并代码(一)

    SVN冲突出现场景 如今是一个团结协作的时代,开发一个系统,往往会多人协作共同完成.版本管理是必不可少的,常用的软件有Git,SVN等.今天说一下,SVN管理版本时,如果出现冲突后,如何快速解决冲突. ...

  3. ※版本管理※=☆SVN工具=※解决地域麻烦※№→搭建自己的网络SVN (SourceForge 免费) [转]...

    源文 http://blog.csdn.net/xiaoting451292510/article/details/8562570 分类: 版本管理 2013-02-01 14:44 26057人阅读 ...

  4. aosp 本地版本管理_本地代码版本管理

    注意事项: 一, 先更新别人提交的,然后在把自己修改的提交上去 ,避免和别人的冲突. 二.WIN7中关于不显示SVN图标的解决方案: //_20151221 [关于在AndroidStudo中进行SV ...

  5. svn代码版本管理总结

    在本篇文章中, 我将会详细说明我是如何应用SVN trunk(树干).branches(分支)和tags(标记).这种方法同样被称为"branch always",两者非常接近.可 ...

  6. aosp 本地版本管理_谈 DevOps 平台实施:我在本地跑明明成功的,为什么在你平台跑就报错?...

    我在本地跑明明成功的,为什么在你平台跑就报错? 用户在 Jenkins 上跑构建时,失败了,把日志截图给我看,如下图: 在过去几个月,每个星期都会有一两个 Jenkins 用户就会给我发送类似的错误日 ...

  7. 版本管理-SVN分支,合并,切换

    作者:vuefine 文献: svn帮助文档 您将透过学习一个实际应用SVN 管理项目的例子,深刻体会SVN 中的分支,合并,切换的概念,应用场景,更加深刻体会它们的作用. 1 分支 1.1 为什么需 ...

  8. gitblit本地版本管理库-localhost访问

    2019独角兽企业重金招聘Python工程师标准>>> 参考配置:https://blog.csdn.net/qwer971211/article/details/71156055 ...

  9. Ant Design of Vue 学习 svn本地服务器 svn客户端 本地发布 ‘isRootMenu‘ is underfined

    目录 一.设计语言学习 1. 版本要求 2. 按需引入文件配置的2种方式 3. 组件列表 4.引入单个组件注意 5.配置.babelrc 二.搭建项目 1.安装vue的脚手架 vue/cli  (vu ...

  10. python版本管理工具_Python版本管理工具与虚拟环境的介绍

    这里简单的介绍一下Python版本管理工具--pyenv和三个个虚拟环境,分别是virtualenv,anconda,pipenv. 版本管理工具--pyenv 这个呢是一个python版本管理的包, ...

最新文章

  1. MySQL 跨库分页/ 分表分页/ 跨库分页,为什么这么难?
  2. 1055 The World‘s Richest (25 分)【难度: 一般 / 知识点: 多关键字排序】
  3. Inpainting图像修复halcon算子,持续更新
  4. 前端学习(2201):mutation提交风格
  5. mib 文件中的 rowstatus 参数_k8s yaml格式的pod定义文件详解
  6. Bing Maps进阶系列八:在Bing Maps中集成OpenStreetMap地图
  7. 获取python脚本的返回值_Python多线程获取返回值代码实例
  8. cshop是什么开发语言_C语言是用什么语言编写出来的?
  9. Transphorm的表面贴装封装产品系列增加行业标准TO-263 (D2PAK)封装产品,扩大SuperGaN平台的优势
  10. C#实现程序一次打开两个窗口,两个窗口分别放置在两个屏幕
  11. [读书笔记]用户画像:方法论与工程化解决方案
  12. iOSSafari不兼容正则表达式的断言匹配及解决办法
  13. 《都挺好》一部黑码农的神剧!
  14. 《雍正皇帝》文化专有词泰译研究(选题缘由)
  15. 论程序员如何玩阴阳师
  16. Android推特图片保存路径,从twitter获取个人资料图片图像使用解析推特登录为Android...
  17. 最小二乘支持向量机(lssvm)回归预测(matlab)
  18. 不显示藏宝阁试穿服务器,梦幻西游:真的感谢藏宝阁的试穿系统,圆了我拥有无级别的梦...
  19. 百度地图实现地图全屏(放大页面全屏)
  20. 17964 水桶打水

热门文章

  1. Linux设备驱动--块设备(一)之概念和框架(转)
  2. WinForm自适应的相关代码
  3. MaxCompute命令行工具——odpscmd的操作使用
  4. mysqldump备份所有数据库,恢复单个库的场景预演
  5. 会装64位solaris jdk1.6吗?
  6. 2.1 CMMI2级——7个PA简述
  7. SGI和Intel计划在2018年以前,将超级计算机速度提高500倍
  8. 5.CND技术详解---全局负载均衡工作原理及实现
  9. 1.Yii2 -- Controller, Request, Response, Cookie, Session
  10. 10. PHP 常量