背景
我正在包装一个python项目,并且正在考虑使用pro/lite版本发布它。我当然不希望重复编写代码,但是我不能发布免费版本,而免费版本只有许多专业版功能才被禁用,而专业版的许多功能都被禁用:该代码用于Blender插件,因此如果功能仍然存在,将可以轻松进行编辑并将其转换为专业版。
问题
使用Git/Pycharm维护这样的项目的最佳方法是什么(或者最好不要担心精简版)而无需重复代码? I have read that using multiple Git branches is not the way to go.
免责声明
我确实意识到有关此主题有很多类似的问题。但是,其中许多涉及使用Xcode,还有许多还没有明确的答案。不要误会我的意思,我知道我可以通过多种方法来做到这一点-但我正在寻找最好的方法,最干净的方法。
最佳答案
这是基本原理,基于您将代码分离到不同的模块中。目前,该概念具有2个不同的下载点。但这不是必须的,那就是您的电话。
无论您采用哪种打包/分发方法,都必须将代码行分成不同的代码模块。即使只是一次下载。
lite/common_core.py-从github.lite安装
#things you want in common between pro and lite
#i.e. what would be your "duplicate code"
def common_func1():
pass
注意:我不会将pro和lite通用的东西直接放到lite/main.py中,因为您想通过在lite中公开pro来提供一个统一的API,但是您也不想拥有pro import lite,因为那样会冒循环导入依赖项的风险。
lite/main.py-从github.lite安装
#things you want in common between pro and lite
import lite.common_core
#or import lite.common_core as common
def lite_function1():
pass
def lite_function2():
pass
try:
#you need to determine an appropriate path strategy
#a pypi-installed pro package should be available on the sys.path
from pro.main import *
# or import pro.main as pro
except ImportError:
pass
#client code can now call functions from the lite and pro
pro/main.py-从github.pro安装
import lite.common_core
def pro_function1():
pass
pro pypi软件包可能是您的必备条件,因此,如果以这种方式启动,则用户仍然只能进行一次下载。
另外,请问您指向re git分支的答案,另一种思考方式是您可能正在尝试修复/增强诸如pro之类的功能。因此,从专业人士的主管那里,您想要自由创建一个新分支,并且仍然了解lite的主人(因为您依赖它)。如果您在同一个仓库中兼顾专业版和精简版,并且分支机构用于分隔专业版/精简版,那么这种记账将很困难。
关于python - 使用Git/PyCharm维护Python项目的精简版和专业版,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38851381/