`
snoopy7713
  • 浏览: 1130840 次
  • 性别: 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的修改丢失了。

分享到:
评论

相关推荐

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

    SVN(Subversion)是近年来崛起的版本管理工具,在当前的开源项目里(J2EE),几乎95%以上的项目都用到了 SVN。Subversion 项目的初衷是为了替换当年开源社区最为流行的版本控制软件 CVS,在 CVS的功能的基础上有很多...

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

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

    SVN任务管理工具

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。SVN就是用于多个人共同开发同一个项目,共用资源的目的。

    服务器svn上的项目下载到eclipse

    资源名称:服务器svn上的项目下载到eclipse内容简介: SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从...

    完整详细图文版 代码管理工具SVN、CVS、CC、VSS、GIT详细使用说明书(最终版本)Eclipse相关(共94页).pdf

    svn是版本管理工具,譬如团队进行项目开发,项目代码都储存在服务器上,成员可用svn在本地获得并更新代码 控制服务器有很多..ClearCase SVN CVS.建议学CC SVN GIT VSS(*^__^*) 嘻嘻…… TortoiseSVN安装双击...next-...

    svn 管理工具

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同...

    GIT安装文件取代SVN和CVS

    用,即使是用来管理我们自己的开发项目,Git 都是一个友好,有力的工具。现在,越来越多的著 名项目采用 Git 来管理项目开发,例如:wine, U-boot 等,详情看 http://www.kernel.org/git 作为开源自由原教旨主义项目...

    SVN服务端与客户端

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同...

    TortoiseSVN-1.14.1.29085-x64-svn-1.14.1.zip

    简介:SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个...

    svn 多个人共同开发项目工具

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同...

    几款版本控制工具SVN、GIT、CVS及Mercurial的比较.pdf

    "版本控制工具比较:SVN、GIT、CVS及Mercurial" 版本控制是软件开发过程中的一个重要环节,用于跟踪和管理代码的变化。有多种版本控制工具可供选择,每种工具都有其特点和优缺。下面将对 SVN、GIT、CVS 及 ...

    如何使用SVN进行版本管理笔记.pdf

    集中式版本控制的代表工具有 CVS、SVN 和 VSS 等,而分布式版本控制的代表工具则有 Git。 在本文中,我们将对 SVN 进行详细的介绍,并探讨其在版本管理中的应用。SVN(Subversion)是一款开源的版本管理工具,它...

    TortoiseSVN-1.14.6.29673-x64-svn-1.14.3

    简介:SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个...

    Eclipse安装SVN-CC-GIT-VSS-CVS详细使用说明书

    SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库 一、安装Subclipse 安装Subclipse的最好方法...

    SVN使用手册中文版快速入门

    当我启动Apache,mod_dav_svn抱怨说发现一个“bad database version”,它发现了db-3.X而不是db-4.X。 我在RedHat 9得到“Function not implemented”错误,无法工作,我如何修正这个问题? 为什么日志说通过...

    SVN64位下载

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同...

    32位+64位svn

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同...

    SVN使用手册中文版.chm

    当我启动Apache,mod_dav_svn抱怨说发现一个“bad database version”,它发现了db-3.X而不是db-4.X。 我在RedHat 9得到“Function not implemented”错误,无法工作,我如何修正这个问题? 为什么日志说通过...

    redmine项目管理软件

    是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据库,有不少自己独特的功能,例如提供wiki、新闻台等,还可以集成其他版本管理系统和BUG跟踪系统,例如Perforce、SVN、CVS、...

    SVN服务器搭建以及Eclipse作为SVN客户端配置

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同...

Global site tag (gtag.js) - Google Analytics