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. C#单纯的字母数字ASCII码转换

    字母转换成数字 byte[] array = new byte[1];   //定义一组数组array            array = System.Text.Encoding.ASCII.Ge ...

  2. 介绍开源的.net通信框架NetworkComms框架 源码分析(十四)StreamTools

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  3. Inno Setup info

    Introduce:     Inno Setup is a free installer for Windows programs. First introduced in 1997, Inno S ...

  4. LeetCode124:Binary Tree Maximum Path Sum

    题目: Given a binary tree, find the maximum path sum. The path may start and end at any node in the tr ...

  5. 习题: codevs 2492 上帝造题的七分钟2 解题报告

    这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHS ...

  6. LR--Controller的Pacing设置(不容忽视的设置)

    运行时的Pacing设置主要影响什么?     Pacing主要用来设置重复迭代脚本的间隔时间.共有三种方法: A:上次迭代结束后立刻开始. B:上次迭代结束后等待固定时间. C:按固定或随机的时间间 ...

  7. WebSocket 学习笔记--IE,IOS,Android等设备的兼容性问题与代码实现

    一.背景 公司最近准备将一套产品放到Andriod和IOS上面去,为了统一应用的开发方式,决定用各平台APP嵌套一个HTML5浏览器来实现,其中数据通信,准备使用WebSocket的方式.于是,我开始 ...

  8. HTML Minifier - 灵活的在线 HTML 压缩工具

    HTML Minifier 是一个高度可配置的,经过良好测试的,基于 JavaScript 的 HTML 在线压缩工具,用棉绒般的能力.在它的核心, Minifier 依赖于 John Resig 的 ...

  9. github添加ssh key报错Key is invalid. Ensure you've copied the file correctly

    github添加ssh key的时候报错:Key is invalid. Ensure you've copied the file correctly 将秘钥复制粘贴到文本编辑器中,再粘贴复制到

  10. word-wrap、white-space和word break的区别