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

2012-05-14 20:55:22 +08:00
 raly
事情是这样的:

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

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

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

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

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

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

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

就是你啥都不改。只改后台配置。。。
sampeng
2012-05-15 09:29:18 +08:00
原来是ThinkSaas。。我朋友做的= =
那个啥,你就直接等他出新的吧,重构这种事,基本不可能无痛更新

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/35891

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX