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. Oracle sqlplus设置显示格式命令详解

    / 运行 SQL 缓冲区 ? [关键词] 对关键词提供 SQL 帮助 @[@] [文件名] [参数列表] 通过指定的参数,运行指定的命令文件 ACC[EPT] 变量 [DEF[AULT] 值] [PR ...

  2. 基于吉日嘎底层架构的Web端权限管理操作演示-菜单模块管理

    按照顺序,这一篇介绍菜单模块管理,主要演示如下操作: 新增.修改.锁定.解锁.删除.撤销删除 排序 角色成员管理 用户成员管理 导出菜单模块数据 也许你会问,你在这自吹自擂,你这个BS的权限管理有啥缺 ...

  3. vs2012运行项目报未能加载文件或程序集“System.Web.Mvc, Version=4.0.0.1,Culture=neutral”问题和解决方法

    原先本地项目版本(4.0.0.1)高于服务器版本(4.0.0.0),本地项目改成服务器版本4.0.0.0时,发布后的项目报这个错误

  4. Tomcat Server Timeouts属性的设置

    在启动Tomcat Server时,经常会出现启动时间过长的错误,如下图所示(为了方便截图,Start Timeout被设置为5秒钟,一般为45秒钟). 双击Tomcat v7.0 Server at ...

  5. ListActivity的使用

    Android中经常用到列表,ListActivity是实现列表的一种好方法. 使用ListActivity的方法,首先定义布局文件: <?xml version="1.0" ...

  6. 制作Java视频播放器

    一.工程准备 首先需要下载并安装VLC播放器,然后下载vlcj外部库. 下载slf4j中的slf4j-api-1.7.13.jar. slf4j- nop-1.7.13.jar 将vlc安装目录下的l ...

  7. 泛函编程(35)-泛函Stream IO:IO处理过程-IO Process

    IO处理可以说是计算机技术的核心.不是吗?使用计算机的目的就是希望它对输入数据进行运算后向我们输出计算结果.所谓Stream IO简单来说就是对一串按序相同类型的输入数据进行处理后输出计算结果.输入数 ...

  8. CI框架源码阅读笔记2 一切的入口 index.php

    上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...

  9. 不可小觑的SQL语句

    在前面学的我们通过点鼠标给数据表插数据,虽然这种方法很靠谱,但是有那么的一些缺点,就是比较麻烦和效率不高.所以现在我们的好好学SQL语句,来弥补这么的一个漏洞,能提高我们工作的效率. SQL语句能做什 ...

  10. jbox演示30种不同的调用方法

     在线预览 插件说明 - jbox 是一款基于 jQuery 的多功能对话框插件,能够实现网站的整体风格效果,给用户一个新的视觉享受. 运行环境 - 兼容 IE6+.Firefox.Chrome.Sa ...