Don’t Repeat Yourself

Don’t Repeat Yourself,这是程序员修炼之道中的经典名言。源代码版本管理对程序员来说是非常重要的工作。因为它让你能够回到过去,而不用做重复的工作。比调试代码更令人痛苦的是你回不到你之前的版本的状态,而且你也记不得到底修改了哪些地方,源代码版本控制工具就是干这工作的,把琐碎的事交给计算机,它比你在这方面更靠谱。版本管理不仅是技术,更是一种理念。如果代码都管理不好,更别说管理人了。即使是一个人开发的项目也需要版本控制。源代码版本控制系统或资源管理系统是现代软件开发的一个重要方面。不使用版本控制系统就如同超速驾驶一辆汽车:很刺激,也可能会更快抵达目的地,但事故却在所难免。但通常的情况是稍具规模的工程,你不可能一次成型。

常用的源代码版本控制工具有Git, SVN ,CVS等。Linux内核开发采用git版本控制工具,所以在开源社区最为广泛的是git版本管理软件。在github 代码托管网站上的项目无一例外地采用git。FPGA和ASIC前端开发和软件的开发方式越来越相似,所以,FPGA和ASIC前端的开发都采用软件的管理方式。我目前的需求是知道应用SVN和git 管理里Verilog和SystemVerilog代码。

SVN

Subversion —— 一种开放源码、多用户版本控制系统,支持非 ASCII 文本和二进制数据。SVN通常有三个文件夹:branches、tags 和 trunk。Branches 文件夹用于试验。Tags 通常标识较老的、已发布的软件版本。而大多数时候在主分支trunk上工作(CVS 称之为 HEAD).

Subversion 的命令示例

# Create a new repository

svnadmin create /home/user/new_repository

# Check out a sandbox from the central repository

svn checkout file:///server/svn/existing_repository new_repository

# Update a local sandbox from the central repository

svn update

# Check in changes from the local sandbox to the central repository

svn commit

# Add new files to the local sandbox (need to be committed)

svn add <file/subdirectory>

# Show changes made in the local sandbox

svn diff

# Rename a file in the local sandbox (requires commit to the repository)

svn rename <old_file> <new_file>

# Remove files (also removed from repository, requires commit)

svn delete <file/subdirectory>

Git

Git 是一个开源的分布式版本控制软件。相对于 CVS、SVN 等主流版本控制软件,Git 的学习成本甚至会更高。常用的git命令如下。

git clone

git add –A

git commit –a

git checkout master

git pull

git push

git merge dev

总之,无论使用何种源代码控制工具或者软件配置管理(Software Configuration Management,SCM),都会获得一些普遍的收益。如果使用一种工具后效率极高,那就使用这种工具吧! 解决问题才是王道。SCM 是软件开发中的必需工具,能激发团队之间的激情。

参考文献:

[1] Linux 的版本控制. https://www.ibm.com/developerworks/cn/linux/l-vercon/

[2] 开源分布式版本控制工具 —— Git 之旅.

http://www.ibm.com/developerworks/cn/opensource/os-cn-tourofgit/

回到过去美好的时光——源代码版本管理Always Use source code Control的更多相关文章

  1. 源代码版本管理与项目管理软件的认识与github的注册

    源代码版本管理软件: 主要有:svn,cvs,hg,git,VSS 这些工具主要是一种记录代码更改历史, 可以无限回溯, 用于代码管理,多个程序员开发协作的工具.Perforce,StarTeam)- ...

  2. VS2017源代码版本管理

    VS2017源代码版本管理有两种方式:Git(代码提交到服务器)和Team Foundation Server(代码提交到局域网) 一.Git版本管理(上传到码云服务器https://gitee.co ...

  3. source code analyzer 功能强大的C/C++源代码分析软件 Celerity CRACK 破解版

    特色 迅捷是一个功能强大的C/C++源代码分析软件.可以处理数百万行的源程序代码.支持标准及K&R风格的C/C++.对每一个打开的源代码工程,通过建立一个包含丰富交叉引用关系的数据库,显示其所 ...

  4. C#调试含有源代码的动态链接库遇见there is no source code available for the current location提示时的解决方案

    C#调试含有源代码的动态链接库遇见there is no source code available for the current location提示时的解决方案: 1.首先试最常规的方法:Cle ...

  5. Maven下载依赖项的源代码(source code)和Javadoc

    Maven 默认只下载依赖项本身的 jar 文件,不下载源代码和 Javadoc.如此固然工程的体积是最小的,但在开发者不熟悉依赖的对象时,需要查找源代码中的方法定义和说明. 这时我们需要使用一条 M ...

  6. Tools - 源代码阅读分析工具Source Insight

    简介 https://www.sourceinsight.com/ Source Insight是一个面向项目开发的程序编辑器和代码浏览器,可以分析C/C++.C#.Java.Python等语言源代码 ...

  7. 第四代增强 源代码增强(ABAP Source Code Enhancements)

    显式代码增强的创建 se38打开你要增强的程序 进入编辑状态 在菜单栏选择: Edit->Enhancement Opreations->Create option. 此时弹出Create ...

  8. 20155202 2016-2017-2 《Java程序设计》第1周学习总结

    20155202 2016-2017-2 <Java程序设计>第1周学习总结 考核方式于成绩构成 100分构成  翻转课堂考核12次(5*12 = 60):每次考试20-30道题目,考试 ...

  9. UML基础与Rose建模实训教程

    目  录 第1章  初识UML. 1 1.1 初识UML用例图... 1 1.2 初识UML类图... 3 第2章  Rational Rose工具... 6 2.1 安装与配置Rational Ro ...

随机推荐

  1. jQuery使用经验建议

    在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以复制并粘贴大部分的代码结构,只要专注最主要的逻辑代码就行了. 使用相同的设计模式和架构也 ...

  2. TabControl 显示彩色的图示 (XE6 Firemonkey)

    提示:Delphi 10 Seattle 透过 TImageList 来指定图标,就能显示原来图标的颜色. 下列方法只适用于 XE6 XE6 Firemonkey 里的 TabControl 可以将切 ...

  3. mysql分页查询详解

    我们做的后端项目一般都会有admin管理端,当管理端将要展示数据的时候,就需要用到分页.所以分页的考查在面试中也相当多.在mysql中进行分页查询时,一般会使用limit查询,而且通常查询中都会使用o ...

  4. 为什么正常安装并成功运行了Genymotion虚拟但是运行的时候启动的却是自带的模拟器?

    最近因为这个问题困惑了好久,最终找到了解决思路: 点击genymotion——setting——ADB——Use sustom Android tools,找到电脑中SDK文件位置就可了! 希望自己坚 ...

  5. Javascript——DOM

    DOM(Document Object Model)文档对象模型 --DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的结构. D--doument(文档).当创建一个网页并把它加载到we ...

  6. HTTP狀態碼

    1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试 ...

  7. GJM :Unity 使用SqlServer数据库 [原创]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创 ,未经作者同意必须保留此段声明! ...

  8. LBS数据分析:使用地图展示统计数据——麻点图与麻数图

    作为一个LBS的APP,都获得了用户经纬度,也都使用了友盟统计.google ana等等统计分析系统,不过没有地图展示功能,不能进行直观的展示. 友盟统计.google ana等系统是总体数据统计,无 ...

  9. Html技巧 语义化你的代码

    首先是关于语义(Semantics)和默认样式的区别,默认样式是浏览器设定的一些常用tag的表现形式,语义化的主要目的就是让大家直观的认识标签(markup)和属性(attribute)的用途和作用. ...

  10. html5音频和视频标签

    在html5之前的版本中如果想要在网页中插入音频和视频必须要安装插件才可以,比如最常见的flash插件.很多人在刚安装一款浏览器的时候都会遇到浏览器建议安装flash插件,在移动端也是如此.如果想要在 ...