1

我编写并维护了一个拥有大约 1K 活跃用户的中型网站。

我使用 Ubuntu、Python、Django、jQuery、Less、twitter-bootstrap 等技术以及它们带来的所有依赖项。我有半吨的外部组件,比如我从 Internet 下载的 JS 库,还有一些我在 GitHub 上 fork 的项目,因为我需要更改。我安装的一些 Python 项目是pip.

我还对在线下载的 JS 库进行了更改,现在所有内容都在我的存储库中。分叉的项目在我的存储库中作为 git 子模块提供。

经过 1.5 年的发展,我意识到这是一种糟糕的方法。升级任何组件都可能非常混乱。我很难跟踪版本,而且我害怕升级单个组件(无论是我用 pip 安装的 python 包,还是 javascript 库,或其他东西),因为这可能会导致回归上帝知道在哪里。

昨晚我开始想,与其分叉诸如没有明天之类的东西,我应该维护一组补丁,通过 Makefile 应用。

我会更好吗?你觉得呢?你有没有什么想法?

提前致谢。

4

1 回答 1

0

我最近在这方面有一些经验。我一直在修改我们实验室使用的文件集,以便将文件移植到他们使用的语言的更新版本,但与此同时,其他人一直在定制他们自己的文件版本以满足他们的需求。所以我需要的是一种在他们的定制版本之上修补我的更改的方法。

我这样做的方式不是使用 git 或 Make(我每天都使用这两种方法),而是使用 OS X 的可视化 FileMerge 实用程序。我假设我的自定义代码和他们的代码之间的所有差异最初都默认为他们的代码,然后我会遍历所有更改,如果有任何属于我的自定义代码,我会将它们修补到他们的代码中。

它是手动的,但 OS X 的可视化 FileMerge 实用程序使其相对快速且轻松。相对轻松,我的意思是我可以用右手完成整个合并,永远不会离开四个箭头键,也永远不会使用鼠标。老实说,我不确定这种修补是否可以自动化。在进行合并时,我必须做出决定,我不确定是否可以轻松地留给某种自动修补系统。

也就是说,我对 git 的合并算法成功合并的一些东西感到惊讶。

这是一个很好的问题。谢谢你的帖子。而且我知道这不是一个明确的答案,但这些是我目前对此事的看法,因为它们的价值。

于 2012-08-18T04:34:08.860 回答