2010年1月31日星期日

SVN与版本管理系统

Subversion被设计为CVS的替代产品,是一个开放源代码的版本控制系统。
有关概念和使用方法参考可以书籍:
http://svnbook.red-bean.com/index.zh.html
本文仅是导读性质的,不是可靠的参考,内容取自该书。
相比于直接拷贝文件或锁定特定文件的修改人,
使用Revision Control System带来的好处是大于对SVN等工具的使用成本的。
相比于另一种如GIT(Linux所使用的,针对大项目和复杂的分支)那样的分布式系统,SVN是中央式系统。
SVN存在一个集中的版本库,每次提交的文件会有一致的版本号。

动词,即涉及的操作
checkout 在本地获得项目副本
commit 提交对本地副本的修改,通常用-m "log"加上修改说明
update 更新本地到服务器最新版本
cleanup 从中断中恢复,移除锁定

import 导入文件到版本库
add 该操作及同类操作会作用于本地副本,并在提交是也作为一个操作提交

名词,相关概念
拷贝-修改-合并 每个客户建立本地副本并行进行修改后提交,合并(机器加人工)得最终版本。
revision 修订的版本编号
/trunk,/branches,/tags 这是版本库最常见的概念,分别用于存放主线,分支,特定版本的拷贝
冲突conflict 发生在原始版本,他人的修改和自己的修改之间,包括文件冲突和树冲突。需要执行合并操作,在update和resolve之间进行。

典型的工作周期:
1.更新你的工作副本。
*svn update
2.做出修改
*svn add
*svn delete
*svn copy
*svn move
3.检验修改
*svn status
*svn diff
4.可能会取消一些修改
*svn revert
5.解决冲突(合并别人的修改)
*svn update
*svn resolve
6.提交你的修改
*svn commit

使用分支
最基本的方式是使用copy获得分支用的副本,再执行merge复制回修改。
用switch来改变工作拷贝对应的分支,相当于update


其他协作方式
Wiki文档
Office工具提供的
不过,虽然有个各种工具,在协作中沟通仍是不可少的。

附个无关的东西:
http://www.kdecn.org/kdesoft/kde4.php

关于KDE4的发布时间
Allen Winter公布了KDE4的开发计划表。

* 2007-04-01子系统冻结
*
o 从此日开始kdelibs不再接受大的子项目。
o 所有的类的位置都将固定在kdelibs目录下。
o Trunk目录中开始包含KDE4代码。
o 基于KDE3的其它程序移至/branches/stable,并在始继续开发。
o 系统构建依赖关系固定。

* 2007-05-01 alpha版发布,kdelibs软件API冻结
*
o 将全面应用Qt4.3。
o 除非核心开发者同意,所有类与界面都不允许变动。
o 想要更改API的话,必须向kde-core-devel邮件列表提交申请,说明理由并附上代码。如果一周内无人反对,变动才允许提交。

* 2007-06-01 特性冻结
*
o KDE主要模块新特性冻结。
o 不再允许加入新特性,从此日开始关注程序的稳定性并解决bug。
o 所有主要模块的维护者必须指出是否能按时刻表完成任务,或者退出不与KDE4.0同时发布。

* 2007-06-25 Beta版周期,所有kdelibs API冻结
*
o 从此日起,每月发布一个Beta版,直到大量严重的漏洞得到解决为止。
o kdelibs的API正式完全冻结。
o 程序中字符串不能再改变,翻译工作全面启动。在Beta2版中加入翻译文件。

* 2007-09-25 RC版周期
*
o 从此日起,每两周发布一个RC版,直到所有严重的漏洞得到解决为止。
o 首个RC版发布后将迎来总体的发布冻结。除了后退(因KDE4移植而导致破损)或漏洞修补,不允许做任何事。
o 从首个RC版开始,KDE4.0中将包含语言包。

* 2007-10-23 KDE 4.0发布
*
o 发布日期视三个Beta版与两个RC版的具体情况而定。