`
isiqi
  • 浏览: 16385817 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Thinking in Subversion

 
阅读更多

Subversion应用前提:

1、只commit测试过的代码

2、人才是最关键的因素,Subversion的成功应用取决于团队中每个成员的依照规则贯彻执行


OK,先介绍下我们的team以前是如何应用Subversion的:

1. 没有使用branch,所有人的工作都在trunk下进行

2. 每个功能的开发周期特别长。i.e. 每次开始编写一个功能,到这个功能能够通过编译/测试,经历一周到数周

3. 每个人负责不同功能的开发,但也存在同时操作同一个文件的可能

4. 为保险起见,每天commit代码到trunk中。所commit的代码可能未通过编译/测试

在这种使用模式下,我们遇到过一些什么问题呢?很多问题!

1. update后代码无法通过编译,到处找人沟通,非常影响心情。

2. 若干天后发现已经修正过的BUG突然又跳出来了,任何修改都被莫名其妙地“回滚”

在使用版本控制工具的时候以上问题应该出现吗?如何正确使用Subversion来避免以上问题?其实,很容易。

在回答具体做法之前先来看看我们组的客观需求:

1. 由于是内核开发,编码周期长。

2. 需要通过频繁commit不完整代码到仓库中,一来比较安全,二来便于回滚某些实验性的工作。

好了,现在看如何在满足客观需求的前提下解决上面遇到的问题:

1. 每个人负责的子系统都各自建立一个branch,例如/xingzhe/branches/linux-xz-fs, /xingzhe/branches/linux-xz-rpc

2. 子系统每完成一个milestone都应该建立一个tag。例如/xingzhe/tags/linux-xz-rpc-tcp-2010-5-14, /xingzhe/tags/linux-xz-rpc-tcp-and-bcl-2010-5-24,分别代表系统完成rpc的开发测试时的代码, 完成后rpc,bcl开发测试时的代码。 不要在tag中修改bug,如果有必要,应该将修改应用到一个新的tag中,例如rpc tcp版本修正一个bug后,可以打一个新tag:/xingzhe/tags/linux-xz-rpc-tcp-BUG62033-2010-7-11,表示修正了62033号bug后,在2010-7-11添加的tag

3. 每实现一个milestone后得到的可编译、可测试代码都应该及时从branch merge到trunk中。尽早merge可以尽早发现需要沟通的地方,避免将来更大规模的麻烦。

【trunk】---checkout---> 【branches】---develop---> 【branches】 ---copy(create tag)---> 【tags】 ---merge---> 【trunk】

4. 任何子系统需要用到其它子系统更新的时候,需要从trunk merge到本地branch中。

如果没有系统学习过Subversion,我是不明白以上流程的内涵的。所以,为了让团队成员理解上述过程,需要对他们进行Subversion用法培训,特别需要了解的概念包括:branch, tag, trunk, version, conflict;特别需要学会用的几个命令包括:copy, merge, switch。培训PPT下载:

最后推荐一本书:《版本控制之道 --- 使用Subversion 2nd》

分享到:
评论

相关推荐

    Subversion

    Subversion Subversion Subversion Subversion Subversion

    subversion

    Subversion 是一个开源的版本控制系统,它用于管理文件和目录的变更历史,使得多人协作开发成为可能。在给定的压缩包文件中,包含了 `subversion-1.7.2.tar.gz` 和 `subversion-deps-1.6.1.tar.gz` 两个文件,它们是...

    Jenkins subversion 插件和所有依赖说明:依赖安装顺序

    Jenkins Subversion 插件使得Jenkins能够与Subversion仓库进行交互,进行代码的检出、更新和提交等操作。在设置Jenkins与Subversion的集成时,正确安装和配置相关插件至关重要。 首先,我们需要了解Jenkins ...

    Subversion Edge详细安装与使用手册

    ### Subversion Edge 详细安装与使用手册 #### 一、Subversion Edge 下载与安装 ##### 1.1 下载地址 Subversion Edge 的下载地址为:[http://www.collab.net/svnedge](http://www.collab.net/svnedge)。 ##### ...

    SubVersion的应用详解

    **SubVersion 应用详解** SubVersion(简称SVN)是一种广泛使用的版本控制系统,它能够跟踪文件和目录的变更,使多个用户协同工作在同一个项目上成为可能。本讲解将深入探讨SubVersion的基础概念、安装配置、基本...

    subversion1.2x 插件

    Subversion 1.2x 插件是针对Eclipse集成开发环境的一个版本控制系统插件,主要用于支持Subversion(SVN)版本控制系统的操作。Subversion是一个开源的版本控制系统,允许用户跟踪文件和目录的更改历史,便于团队协作...

    Subversion快速入门教程

    Subversion,快速入门教程,本文是使用Subversion最快速的教程,在最短的时间里帮助您建立起一套可用的服务器环境,只需略加调整就可以应用到实际项目当中。

    Subversion1.5.1发布- Subversion中文站SVN_TortoiseSVN_教程_文档_培训

    Subversion(简称SVN)是一款开源的版本控制系统,它用于管理对文件和目录的更改,以便在多人协作的环境中保持数据的一致性和完整性。Subversion 1.5.1是Subversion项目的一个重要版本更新,它带来了许多改进和新...

    subversion-1.7.9.zip

    Subversion(SVN)是一个流行的开源版本控制系统,用于管理和跟踪文件和目录的变更。这个"subversion-1.7.9.zip"文件是Subversion 1.7.9版本的压缩包,它包含了该版本的所有源代码、文档、构建脚本和其他必要的组件...

    Version Control with Subversion For Subversion 1.3

    ### 版本控制与Subversion 1.3 #### 一、版本控制概念与Subversion简介 **版本控制**是一种管理计算机程序、文档以及其他类型文件变更历史的技术。它允许开发人员跟踪不同版本之间的差异,回滚到早期版本,并且在...

    Apache-Subversion-1.8.13

    Subversion是一个自由开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改...

    svn subversion-1.7.2

    Subversion(SVN)是一个开源的版本控制系统,用于管理对软件项目源代码的更改。它在软件开发领域中广泛使用,特别是在多人协作的环境中,帮助团队成员协同工作,跟踪文件的修改历史,以及解决合并冲突等问题。...

    subversion-1.14.2.tar.gz

    - `Makefile.am`和`.in`文件:automake工具的配置文件,用于构建过程。 要编译和安装Subversion,你需要遵循以下步骤: 1. 首先,确保你的系统已安装了必要的依赖,如`automake`, `libtool`, `apr`, `apr-util`, `...

    使用Subversion进行版本控制 PDF中文版

    《使用Subversion进行版本控制 PDF中文版》这一资源,深入介绍了Subversion(SVN)这一流行版本控制系统的基本概念、操作流程以及高级功能,对于想要深入了解或学习版本控制系统的开发者来说,无疑是一份宝贵的学习...

    Subversion1.8.8 32位

    Subversion 1.8.8 是一个开源的版本控制系统,主要设计用于管理源代码和文档等文本文件的变更历史。这个版本是专为32位操作系统设计的,它提供了高效且可靠的版本控制功能,便于团队协作和项目管理。TortoiseSVN ...

Global site tag (gtag.js) - Google Analytics