假设我开发了一个用 Python 编写的通用最终用户实用程序。以前,我只有一个适用于 Python 的版本,该版本晚于 2.3 版左右。说“如果需要,请下载 Python,然后运行此脚本”就足够了。源代码控制中只有一个版本的脚本(我正在使用 Git)来跟踪。
在 Python 3 中,这不再是必然的。在可预见的未来,我需要同时开发两个不同的版本,一个适合 Python 2.x,一个适合 Python 3.x。从开发的角度来看,我可以想到几个选择:
- 在同一分支中维护两个不同的脚本,同时对两者进行改进。
- 维护两个独立的分支,并随着开发的进行来回合并常见的更改。
- 只维护脚本的一个版本,并签入将脚本从一个版本转换为另一个版本的补丁文件。当进行了足够多的更改以致补丁不再干净应用时,请解决冲突并创建新补丁。
我目前倾向于选项 3,因为前两个将涉及很多容易出错的乏味。但是选项 3 似乎很混乱,我的源代码控制系统应该为我管理补丁。
对于配送包装,有更多选项可供选择:
- 提供两种不同的下载包,一种适用于 Python 2,一种适用于 Python 3(用户必须知道为他们拥有的任何 Python 版本下载正确的下载包)。
- 提供一个下载包,其中包含两个不同的脚本(然后用户必须知道运行正确的脚本)。
- 一个包含两个特定于版本的脚本的下载包,以及一个可以在两个 Python 版本中运行的小型存根加载程序,它为已安装的 Python 版本运行正确的脚本。
我现在再次倾向于选项 3,尽管我还没有尝试开发这样的存根加载器。
还有其他想法吗?