标 题: BBS站点升级和同步开发心得

发信人: dvlt (饿了就要吃!), 信区: BBSMan_Dev
标  题: BBS站点升级和同步开发心得
发信站: 水木社区 (Fri Apr  7 21:18:09 2006), 转信

[在这里发文,难免有班门弄斧之嫌,然而觉得有些心得体会,于是写来抛砖引玉了]

我们的BBS站点原先采用smthbbs-1.2.2代码,并且在其基础上作了一些功能增改。然
而看到KBS开发如火如荼,功能不断完善,于是打算升级到KBS代码。

升级代码的最大障碍恐怕是保留原有的对代码的修改。当然这也归功于KBS系统对数据
文件的兼容性做得很好。我采纳总们的建议,先把自己的代码与最初的smthbbs-1.2.2
的代码diff了一下,这样就看出来修改了些什么东西,然后试图把这些修改应用到KBS
的代码上。

然而,由于diff的结果太大,而且修改比较零碎,因此直接patch到KBS上再手工修补
conflicts显得不太可能。幸运的是,过去添改了功能之后,会发有站内公告。于是我
找出了这些公告,看看都有些什么主要的改动,然后根据每一项改动,把原先的代码
port到KBS的代码中。不重要的功能就懒得管了 :P

当然,一边port一边要不断地编译,时不时地安装、测试,以保证port的结果是正确
的。当主要功能port完之后,在最初的diff文件中人工删除已经修补的片段。这时还
剩下千余行的diff,那么可以根据具体情况,或者patch+修补conflict, 或者手工port
代码。

上述的是一个大致的思路。具体操作上,还须借助版本控制系统。由于我使用的是svn,
所以就记录一下我的svn经过吧。这个方法不一定是最好的,不过是可行的。

1, 在某一个目录里cvs checkout来下载KBS的代码。这个目录很重要,不能丢掉。
2, 建立一个svn repository, 这个repository只有一个project,就是我将要升级的
   bbs.
3, 在这个repository里建一个目录,名为kbs-mirror.
4, 把刚才cvs co的kbs代码import到这个kbs-mirror目录下。于是那个working
   directory同时受到cvs和svn两个版本控制系统的控制。
5, 用svn copy命令把kbs-mirror目录复制为trunk目录。接下来我们将在trunk目录
   里把自己以前的修改移植进来。

上述准备工作做完以后,就耐心的把原有的改动patch到kbs的代码上吧。不时地ci,
当然都要ci到trunk目录里边去。

我花了好几天时间才把过去的改动patch上。经过这么几天,KBS的代码又变了很多,
那么就需要把KBS的改动merge到我们自己的代码里。步骤如下:

1, 在最初cvs co kbs代码的那个working directory里,cvs up -dAP,获取KBS这几天
   内的更新。(tip: 不要在working directory里面做修改,这样会up得比较快)
2, svn ci 把更新commit进svn的repository。当然这之前可能还需要svn add和
   svn rm来处理新增的和删除的文件。
3, 通过 svn log,看看kbs-mirror目录 svn ci 前后的revision分别是多少。假设
   是 10 和 45。
4, 进到trunk的working directory里,svn merge -r10:45 file:///path/to/svn/
   repository/kbs-mirror。这就把KBS的改动merge到了我们自己的代码中。当然
   需要手工解决conflicts。然后编译测试通过之后,就可以svn ci了,并且注明
   -m"trunk: merged updates from kbs-mirror r10:45."

上述步骤显得比较麻烦。如果KBS的代码也采用svn管理,那么我等“跟进”的站点
就会好过些。例如,上述步骤只需改为:(猜测的,没有验证过哦)

1, svn co http://dev.kcn.cn/repos/kbs_bbs 下载kbs代码,到一个working
   directory中。这时会有一个revision number,要记住。假设是1234。
2, 把这个working directory放进自己的repository中。这需要先复制目录,然后
   把.svn都去掉,然后import.
3, 在这个working directory里修改,不时地ci.
4, 修改完毕后,看看kbs的revision到了多少,假设是5678。那么执行:
   svn merge -r1234:5678 http://dev.kcn.cn/repos/kbs_bbs
   就把kbs的修改merge到本地了。

有一份有用的参考资料《svnbook》,在subversion的网站上有下载的(pdf), 其中的
vendor branches一节所描述的几乎就是我们所遇到的情形:)其中的branching and
merging这一章也讲得不错~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值