【发布时间】:2018-05-25 14:47:56
【问题描述】:
这可能是一个新手问题,所以请原谅。 我们有一个小型 python 开发团队,我们的 repo 组织如下所示。我们有一个自定义库,它在多个脚本(包装器)之间共享,然后是每个包装器特定的库。下面的结构是在 Git 下维护的。到目前为止,这对开发很有用。现在我们想单独发布包装器。例如,我们需要针对不同的受众(不同的时间线和需求)发布 wrapper1,然后再发布 wrapper2。两者都需要包含 shared_library 并且只包含它们的特定库。做这个的最好方式是什么?
repo/:
wrapper1.py
wrapper2.py
shared_library/:
module1.py
module2.py
wrapper1_specific_lib/:
wrapper1_module1.py
wrapper1_module2.py
wrapper2_specific_lib/:
wrapper2_module1.py
wrapper2_module2.py
我们考虑了以下解决方案:
重组为三个独立的存储库:wrapper1、wrapper2 和 shared_library,并分别发布。
为 wrapper1 和 wrapper2 提供两个单独的存储库,并定期同步共享库 (!!?!!)
保持这种状态,但探索是否可以以某种方式使用 Git 来释放选定的文件、特定于每个包装器的文件夹。
在 python 代码组织方面寻求您的帮助,以便使用 Git 进行更好的发布管理。提前致谢!!
【问题讨论】:
-
你现在发布的怎么样了?你打算让他们从 github 上拉库吗?
-
如果您的组织可以托管 pypi 镜像,您可以将每个包装器作为一个包分发,允许最终用户通过
pip安装。 -
您可以考虑的另一种方法是通过分支进行管理。每个库/模块都可以有自己的
dev/staging/release分支,当该特定分支准备好进行广泛发布时,您可以将其切入master -
如果你想从 git 部署,我建议单独的 repos。将事物分开一次并不费力,但合并总是比部署时提取更容易。
-
您可以将所有三个设置为单独的存储库,并将共享库作为submodule。
标签: python git shared-libraries release code-structure