V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
raly
V2EX  ›  问与答

修改开源代码做的站,在开源代码升级后,如何让自己的站随之一起无痛升级?

  •  
  •   raly · 2012-05-14 20:55:22 +08:00 · 3389 次点击
    这是一个创建于 4578 天前的主题,其中的信息可能已经有所发展或是发生改变。
    事情是这样的:

    我基于开源的 ThinkSaas 1.6 做了一个自己的小站,修改了源码中的不少东西,包括php、html 和 css 等文件都有改动,且改动量不算小。

    现在,ThinkSaas 升级到了 1.8,而且据作者本人的说法,有可能采用 Yii 框架彻底重构。

    问题来了,如何让我自己的小站随着源码无痛升级呢?

    我目前采取的办法是,使用比较软件,找出新版源码与我自己的代码不同的地方,把它们融合到我的代码中去。可这样的工作量也不小,如果源码每升级一次,我就要这样改一次,真是件颇令人头疼的事情。

    请问大家有没有什么好办法?
    20 条回复    1970-01-01 08:00:00 +08:00
    cooka
        1
    cooka  
       2012-05-14 20:56:58 +08:00
    无痛merge, 这种方法地球人正在找..
    sophy
        2
    sophy  
       2012-05-14 21:09:43 +08:00
    呵呵,ls一语道破天机
    eerie
        3
    eerie  
       2012-05-14 21:11:27 +08:00
    只能把自己的代码模块化,和源代码分开,尽量减少修改的地方
    tioover
        4
    tioover  
       2012-05-14 21:12:22 +08:00
    无痛不可能啊
    先用Git fork了再说吧
    ichigo
        5
    ichigo  
       2012-05-14 21:13:23 +08:00
    这个太..好吧看看楼下有没有大神出现。
    kejinlu
        6
    kejinlu  
       2012-05-14 21:14:21 +08:00
    人肉merge
    lfeng
        7
    lfeng  
       2012-05-14 21:43:47 +08:00   ❤️ 1
    clone源码,之后尽量采用继承重写的方式改写核心代码,尽量减少核心代码的修改,这样如果该项目更新升级,你直接pull代码回来合并一下就可以了,需要处理的冲突应该相对较少
    raly
        8
    raly  
    OP
       2012-05-14 21:51:49 +08:00
    感谢以上各位。

    @lfeng 本人编程小白,从未系统学习过编程知识,目前的水平只能在已有的代码上零敲碎打,能否介绍一下「继承重写」的具体做法?谢谢。
    manhere
        9
    manhere  
       2012-05-14 21:53:10 +08:00
    想必楼主说的是乐兔淘,1.8的我刚xx完,你懂的。
    raly
        10
    raly  
    OP
       2012-05-14 22:01:06 +08:00
    @manhere 不是乐兔淘,是 ThinkSAAS 本身,乐兔淘是收费的,ThinkSAAS 是开源的。
    manhere
        11
    manhere  
       2012-05-14 22:03:06 +08:00
    @raly 哦,乐兔淘基于TS,不过没想到竟然版本号也同步。。。今天刚xx了新版乐兔淘。。。我真是蛋疼,我又不用。。。
    binux
        12
    binux  
       2012-05-14 22:08:04 +08:00
    彻底重构想都不要想,小的修改,不涉及你改动的部分才有可能自动merge。
    你需要一个源码版本管理软件。
    jiankangxin
        13
    jiankangxin  
       2012-05-14 22:11:17 +08:00
    如果你大量更改过。。。就不好整了,其实 用简单原理实现还是挺简单,不停的递归,然后对需要替换的内容进行缓存,只要时间长 一定能完全更新,但是话说,这种方法非常耗时,以前用shell写过一个版本管理的脚本,基本处理20M以上的文件系统就非常耗时了。。不知道有木有大神有简单方法,数据结构是硬伤啊
    aligo
        14
    aligo  
       2012-05-14 22:12:33 +08:00   ❤️ 1
    1、确保自己的代码写好了全面的测试
    2、根据对方的版本提取出patch,在自己的代码上应用patch
    3、过测试

    我觉得最靠谱的做法应该这样,虽然不是无痛
    panxianhai
        15
    panxianhai  
       2012-05-14 22:32:47 +08:00
    用yii重构了的话,merge的可能性比较小了吧,大部分文件结构都不一样了,只有数据迁移到新的版本上。
    chengxiao
        16
    chengxiao  
       2012-05-14 22:51:27 +08:00
    找个作者....付钱定制....无痛~
    chuck911
        17
    chuck911  
       2012-05-15 00:44:51 +08:00
    我都是通过写插件来改功能,thinksaas恐怕不行吧?
    raly
        18
    raly  
    OP
       2012-05-15 08:42:29 +08:00
    谢谢以上各位。看来目前对于这种问题,没有太好的办法。
    sampeng
        19
    sampeng  
       2012-05-15 09:28:11 +08:00

    就是你啥都不改。只改后台配置。。。
    sampeng
        20
    sampeng  
       2012-05-15 09:29:18 +08:00
    原来是ThinkSaas。。我朋友做的= =
    那个啥,你就直接等他出新的吧,重构这种事,基本不可能无痛更新
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1689 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:47 · PVG 00:47 · LAX 08:47 · JFK 11:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.