【问题标题】:Git and shared python libraryGit 和共享 python 库
【发布时间】: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

我们考虑了以下解决方案:

  1. 重组为三个独立的存储库:wrapper1、wrapper2 和 shared_library,并分别发布。

  2. 为 wrapper1 和 wrapper2 提供两个单独的存储库,并定期同步共享库 (!!?!!)

  3. 保持这种状态,但探索是否可以以某种方式使用 Git 来释放选定的文件、特定于每个包装器的文件夹。

在 python 代码组织方面寻求您的帮助,以便使用 Git 进行更好的发布管理。提前致谢!!

【问题讨论】:

  • 你现在发布的怎么样了?你打算让他们从 github 上拉库吗?
  • 如果您的组织可以托管 pypi 镜像,您可以将每个包装器作为一个包分发,允许最终用户通过 pip 安装。
  • 您可以考虑的另一种方法是通过分支进行管理。每个库/模块都可以有自己的dev/staging/release 分支,当该特定分支准备好进行广泛发布时,您可以将其切入master
  • 如果你想从 git 部署,我建议单独的 repos。将事物分开一次并不费力,但合并总是比部署时提取更容易。
  • 您可以将所有三个设置为单独的存储库,并将共享库作为submodule

标签: python git shared-libraries release code-structure


【解决方案1】:

您有 3 个产品,每个产品都有自己的发布时间表。 Wrapper1 用户对查看 wrapper2 代码不感兴趣,反之亦然。拆分为 3 个 repos 将是最简单的方法。

请注意将自动化单元测试打包到 shared_library 存储库中。两个依赖的应用程序都应该能够成功运行自己的测试以及共享的测试。这将变得很重要,因为已发布的应用程序会提交新功能请求并尝试将 shared_library 拉到不同的方向。

【讨论】:

  • 谢谢大家。我觉得这也是我工作的更好选择。
猜你喜欢
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 2015-12-30
  • 2014-09-25
  • 2020-04-04
  • 2019-02-10
  • 2015-04-06
相关资源
最近更新 更多