0

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

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

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

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

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

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

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

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

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

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

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

4

1 回答 1

1

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

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

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

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

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

您的功能集不需要完整——不要在试图找出所有需要的更改的阶段停滞不前,这将花费太长时间。

  • 应用从最近反馈中收集的功能(最好通过可恢复的模组)
  • 请注意从这组必需的特性中开发时的行为差异
  • 重复
于 2011-05-24T19:47:57.077 回答