【问题标题】:Recommendations for migrating custom code mods to new major release of open source software?将自定义代码模块迁移到开源软件的新主要版本的建议?
【发布时间】:2011-05-24 19:07:28
【问题描述】:

我有一个简单机器论坛 (SMF 1.1.13) 的(肮脏的)生产安装。这是一个全新的安装,一次......大约五年,二十次更新和 40 个模组前。更不用说直接修补到代码库中的自定义代码了。这开始是一个有趣的项目,一开始没有任何代码管理实践。

现在 SMF 2 正在(越来越接近)上线,我想升级。但不会留下自定义功能。

继续阅读,这是一般软件管理问题,不是 SMF 支持问题...

我正在尝试找出将自定义功能移植到新代码分支的最佳方式。

  • 在某些情况下,自定义的 1.1.x 功能在 2.0 中已经存在。是的,我没有工作!
  • 在某些情况下,会有版本为 2.0 的 mod 包,我可以直接将它们安装在干净的 SMF 2 版本上。是的,我的工作量很小!
  • 在某些情况下,两个版本之间的代码移植相当简单(例如,查询或全局变量构造中的一些小改动)。 (我已经将一些特性/mod 从 2.0 移植到 1.1.x,back,所以我开始熟悉它了。)
  • 在某些情况下,我只需要从头开始重新开发功能。

最后两个选项将很难管理。

关于如何将大量更改从一个分支移植到另一个分支有什么建议吗? 当它不是我自己的内部代码时,就是这样。这是我的初步计划:

  • 干净的 1.1.x 版本和我的“脏”生产代码之间的区别
  • 将每一行差异映射到一个特性(“那个代码更新是自定义标记特性,必须逐行移植它,那里是画廊,我可能可以安装一个更新的模块。”)如果有一个生成综合报告的 diff 工具,而不是一次检查几十个文件,这将是更容易的事情。 Google 和 SO 搜索没有找到这样的工具-- 有吗?
  • 安装干净的 2.0 分支
  • 安装可用的更新模组
  • 卷起袖子,逐个功能地检查我的差异(这就是我需要综合差异报告的原因。逐页做会很糟糕。)然后重新构建它们。

有更好的想法吗? (欢迎发布管理信息的指针,当然需要注意的是,这实际上不是我的代码,所以我的控制有限。)

不然呢?我担心我的选择是放弃自定义功能(不太可行)或留在旧分支上。两个都很烂。救命!

tl;dr:指向一个差异工具,它将为整个目录执行逐个文件的整合差异报告。和/或帮助我找出一种更简单的方法来迁移我的自定义代码。

【问题讨论】:

    标签: version-control merge smf-forum


    【解决方案1】:

    您的计划通常是最实用的方法,尽管我会说您通过寻找代码级别的差异而朝着错误的方向前进。由于对项目生命周期没有版本控制,也没有应用更改的简明记录,在检查代码级别的差异时,您正在寻找可能无法为您提供将相同更改应用于新实现所需的信息的详细程度.

    不要再考虑代码级别的更改,而是考虑应用级别的功能和行为更改。您的更改引入了哪些功能?由于您的更改,您的应用程序现在在哪些方面表现不同?

    您说在很长一段时间内有许多未版本化的更改 - 无论您使用什么工具,您都无法找到所有更改并且您仍然需要考虑该功能和行为更改,以完全代表任何升级实施中的相同功能和行为。

    您非常了解您的应用程序,您使用它,并且您确实很欣赏您引入的功能更改,即使您可能没有意识到这一点。

    • 安装 vanilla 2.0 版本
    • 应用所有合适的模组
    • 应用相关样式
    • 使用新系统,注意行为上的差异,并从中开发出一组必需的功能

    您的功能集不需要完整 - 不要停留在尝试找出所有必需更改的阶段,这将花费太长时间。

    • 应用从最近的反馈中收集的功能(最好通过可恢复的模组)
    • 请注意在开发这组必需功能时的行为差异
    • 重复

    【讨论】:

    • 谢谢。我(认为)我已经为旧代码库添加了一个非常好的功能级别列表。或者至少,我可以很容易地充实它。没错,我要做的第一件事就是熟悉 2.0 代码库(和功能!),看看我什至需要添加什么。我已经开始了这样的代码级分析:vanilla 1.0 release;进行版本控制;一次应用一个模组(呃,很费时间!但很有必要,因为我现在正在创建一个新的镜像服务器);那么我应该在香草和自定义修改 1.0 之间有一个不错的 TortoiseSVN 报告。
    • 然后我可以移植自定义 hack,或者全部在一个大端口中(遗憾的是,我的 svn 存储库没有我的 hack 古老)。然后创建一个 vanilla 2.0 安装,使用它,列出功能增量,并查看需要更新的内容。哇,想想这一切我都累了。还好至少还有 6 个月!
    猜你喜欢
    • 2011-02-15
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    相关资源
    最近更新 更多