`
snoopy7713
  • 浏览: 1149675 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

项目管理之 CVS & SVN 总结

    博客分类:
  • SVN
阅读更多

做了多时的软件开发项目管理,深知代码管理在软件项目开发的过程中的重要位置,于是想到把遇到的关于代码管理方面的经验和问题记下,以供日后补充参考。目 前在这个领域运用最为广泛的莫过于CVS和SVN两者,在实际运用中发现其实他们都同样非常优秀,以下我总结一下 CVS 的日常使用(夹杂与 SVN 的对比):

日常运用 :
cvs init : CVS版本库的初始化
cvs import -m "write some comments here" project_name vendor_tag release_tag : 一个项目的首次导入
cvs checkout(co) project_name : 将代码从CVS库里导出#与SVN同#
cvs update(up) file_name : 将文件同步到最新的版本#与SVN同#
cvs update : 将当前目录同步到最新的版本#与SVN同#
cvs commit(ci) -m "write some comments here" file_name : 确认修改写入到CVS库里#与SVN同#
cvs admin -m 1.3:"write some comments here" file_name : 修改某个版本注释
cvs add new_file : 创建好新文件后添加文件#与SVN同#
cvs add -kb new_file.gif : 按二进制文件方式导入#与SVN同#
cvs admin -kkv new_file.css : 改回ASCII文件方式导入
cvs ci -m "write some comments here" : 然后确认修改并注释#与SVN同#
cvs rm file_name : 将某个源文件物理删除后(删除后需要cvs ci -m "comments"一下)
cvs add dir_name : 添加目录#与SVN同#
cvs log file_name / cvs history file_name : 查看修改历史#与SVN同#
cvs diff(di) -r1.3 -r1.5 file_name : 查看当前文件不同版本的区别#与SVN同#
cvs diff file_name : 查看当前文件(可能已经修改了)和库中相应文件的区别#与SVN同#
* notice : cvs里没有cvs move或cvs rename,因为这两个操作是可以由先cvs remove old_file_name,然后cvs add new_file_name实现的。

项目发布导出不带CVS目录的源文件#与SVN同# :
cvs export -r release1 project_name
cvs export -D 20021023 project_name
cvs export -D now project_name

多项目并发管理#与SVN不同#参考文件最后的NOTICE# :
cvs tag release_1_0 : 建立版本里程碑
cvs commit -r 2 : 开始一个新的里程碑(标记所有文件开始进入2.x的开发)
cvs rtag -b -r release_1_0 release_1_0_patch proj_dir : 版本分支的建立(在开发项目的2.x版本的时候发现1.x有问题,但2.x又不敢用,则从先前标记的里程碑:release_1_0导出一个分支 release_1_0_patch)
cvs checkout -r release_1_0_patch : 一些人先在另外一个目录下导出release_1_0_patch这个分支:解决1.0中的紧急问题,而其他人员仍旧在项目的主干分支2.x上开发
cvs tag release_1_0_patch_1 : 在release_1_0_patch上修正错误后,标记一个1.0的错误修正版本号
cvs update -j release_1_0_patch_1 : 如果2.0认为这些错误修改在2.0里也需要,也可以在2.0的开发目录下合并release_1_0_patch_1中的修改到当前代码中

cvs (-d :pserver:cvs_user_name@cvs.server.address:/path/to/cvsroot) login : 常见的登陆格式
cvs (-d xxx) passwd -a user_name : 添加用户
cvs (-d xxx) passwd -r system_user user_name : 绑定用户
cvs (-d xxx) passwd -X user_name : 删除用户
* notice : 也可以通过设置CVSROOT系统参数使得所有客户机所有本地用户都可以映射到CVS服务器相应同名帐号
* notice : 将 $Id$ 加在程序文件开头的注释里是一个很好的习惯

CVSNT 里面还有一个问题就是:添加的用户登录时有可能出现 Fatal error, aborting. administrator: no such user 此类的错误,那么我们需要在CVSNT的Server Settings中把client user设置一下,一般设置成 administrator 即可。


目前 My Team 统一使用 Eclipse 开发工具,以下是一篇关于 Eclipse CVS 使用的文章,以供参考:http://www.eclipse.org/articles/article.php?file=Article- BranchingWithEclipseAndCVS/article1.html.

* notice : 注意右键菜单下面 Team/Compare with/Replace With 菜单的用法基本上就掌握了基本的 Eclipse CVS Plugin 的用法了~
* notice : svn 的多任务管理与cvs不同,svn中的branch实际上是复制一份当前的repository,然后可以并行地分别修改。复制采用cheap copy机制,类似于unix系统中的硬链接,branch操作不会使repository所占用的空间倍增,花费的时间也是常数级别的。svn中没有单 独的branch命令,通过svn copy来实现。

这里有一点容易让人糊涂,因为svn中的版本号都是指repository,所以不同branch的版本号是混合交叉的,比如trunk为r60,svn copy之后会创建r61的branch,对trunk修改后再commit就成了r62。

svn 中的merge并非字面上所示的将两个分支归并到一起,而是diff-and-apply的意思,比较两个repository tree,并将他们的差异归并到working-copy中。这里merge并不区分两个repository tree是否处于不同的分支,也不会验证working-copy的源头,所以使用这个功能的时候要自己小心。

当我们创建了一个 branch,并且对trunk和branch分别进行了比较大的修改,现在想要把branch中的修改归并到trunk中,此时应该 merge的对象并不是trunk和branch的最新版本,而应该是branch的起始版本和最新版本。因为merge实际上只是做一个diff,所以 前者在将branch的修改归并到trunk的同时也让对trunk的修改丢失了。

分享到:
评论

相关推荐

    SCM&CVS&SVN 学习资料

    在学习SCM&CVS&SVN的过程中,你需要熟悉这些工具的基本命令行操作,理解它们的工作原理,以及如何在实际项目中应用。通过实践,你可以更好地掌握如何利用这些工具来提高开发效率,保证代码质量,以及团队间的有效...

    将cvs转换为svn库的工具cvs2svn

    1. **获取cvs2svn**:根据给定的文件名`cvs2svn-2.2.0`,你可以访问其官方网站或者通过包管理器下载最新版本的cvs2svn。确保选择与你的操作系统兼容的版本。 2. **安装**:解压下载的文件,遵循提供的安装指南进行...

    CVS 2 SVN 指导

    cvs2svn的FAQ涵盖了从单个仓库的迁移到多项目仓库的转换,再到EOL(End-of-Line)翻译问题的处理,以及获取帮助和报告错误的途径。 #### 九、CVSNT仓库的特别注意 尽管一些用户报告了将CVSNT仓库迁移到SVN的成功...

    我的cvs2svn笔记

    CVS是一种广泛使用的源代码控制系统,而SVN则因其先进的特性,如分支和合并管理,逐渐成为其替代者。本笔记主要涉及以下关键知识点: 1. **CVS与SVN对比**:CVS是一个早期的版本控制系统,而SVN在它基础上进行了...

    CVS和SVN配置学习

    CVS(Concurrent Versions System)和SVN(Subversion)都是广泛使用的版本控制系统,尤其在过去的几十年里,它们在开源社区和企业项目中扮演了重要角色。下面将详细介绍CVS和SVN的配置学习要点。 1. CVS简介: ...

    svn与cvs对比

    - **数据管理**:SVN的数据管理机制更为先进,能够更好地处理大型项目和高并发场景下的数据存储和访问需求。 - **Apache集成**:SVN通过与Apache Web服务器的紧密集成,提供了更安全、高性能的服务,便于Web开发和...

    CVS与SVN区别

    CVS(Concurrent Versions System)和SVN(Subversion)都是源代码版本控制系统,用于管理和跟踪文件及目录的变更。它们都属于SCM(Software Configuration Management)工具,但两者之间存在显著的区别。 1. **...

    CVS迁移SVN工具亲测可用

    CVS曾是许多项目的主要选择,但随着时间推移,SVN因其更先进的特性和更好的管理功能而逐渐受到青睐。对于那些已经积累了大量CVS历史数据的项目,进行从CVS到SVN的迁移是必要的。这个过程可以通过特定的工具来实现,...

    将CVS库转换为SVN库

    ### 将CVS库转换为SVN库 随着版本控制系统的发展与演进,从较早的集中式版本控制系统(如CVS)到更先进的Subversion(SVN),开发者们经常面临将现有CVS仓库迁移到SVN的需求。本文将详细介绍如何在Windows环境下...

    CVS SVN VSS 对比 说明

    总结来说,CVS、SVN和VSS在版本控制领域都有各自的定位和适用场景。CVS作为早期的开源解决方案,奠定了基础,但随着软件开发需求的提升,它的局限性逐渐显现。SVN作为CVS的升级版,弥补了CVS的不足,成为了更广泛...

    svn--项目管理工具[总结版]

    ### SVN—项目管理工具详解 #### 一、版本控制的重要性及背景 在现代软件开发过程中,版本控制成为了不可或缺的一部分。特别是在多人协作的项目中,如何有效地管理代码版本、跟踪更改历史、解决冲突等问题变得尤为...

    清除当前文件夹下的cvs、svn标识

    CVS是一种早期的版本控制系统,它使用特定的目录结构和文件来存储和管理项目信息。这些文件通常包括`.cvsignore`(用于定义应该忽略的文件模式)、`.cvspass`(存储CVS认证信息)以及以`CVS/`开头的隐藏目录,其中...

    删除项目svn,cvs,配置文件的bat脚本

    在IT行业中,版本控制系统如Subversion (SVN) 和 Concurrent Versions System (CVS) 是团队协作开发的重要工具,用于管理代码版本和跟踪更改。然而,有时候我们可能需要清理工作环境,比如移除与这些系统相关的配置...

    CVS团队升级SVN团队的解决方案

    相比之下,SVN(Subversion)提供了更为现代且高效的版本管理方式,因此许多团队考虑从CVVS迁移至SVN。本文档旨在提供一份详尽的解决方案书,指导CVS项目团队顺利迁移到SVN,包括前期研究、产品对比、优势分析以及...

    VSS、CVS、SVN和ClearCase等配置工具对比

    本文旨在深入探讨并对比VSS(Visual SourceSafe)、CVS(Concurrent Versions System)、SVN(Subversion)以及ClearCase这四款配置管理工具。通过对比它们的功能特性、性能表现、操作便利性以及安全性等方面,帮助...

    软件配置管理实验报告(VSS,CVS,SVN)

    例如,可能探讨了VSS在小型团队中的易用性,CVS的开源性质和跨平台能力,以及SVN在大型项目中的卓越表现。** **通过这些实验,学生能够深入理解软件配置管理的重要性,掌握基本的SCM工具使用技巧,提高协作开发效率...

    一键清除SVN或CVS版本控制目录

    在软件开发过程中,版本控制系统如Subversion (SVN) 和 Concurrent Versions System (CVS) 被广泛应用于代码管理、版本跟踪和协同开发。随着时间的推移,项目目录中会积累大量的 `.svn` 或 `CVS` 文件夹,这些文件夹...

    在Eclipse中使用SVN与CVS代码管理工具管理项目

    笔者有幸接触过以下几种常用的配置管理工具:VSS、SVN、Clearcase,在此做一个小小的总结,并Ctrl+C了以前一些网友的对比评论,不一定准确,只是希望通过这些总结对自己和初学者有所帮助。如果想进一步了解这些工具...

    SVN管理项目视频教程

    ### SVN管理项目视频教程知识点详解 #### 一、SVN简介与原理 **SVN**(Subversion)是一种广泛使用的版本控制系统,它可以帮助团队管理和追踪软件开发过程中的代码变更历史。相较于早期的版本控制系统如CVS,SVN在...

Global site tag (gtag.js) - Google Analytics