如何使用git和buildout在不使用符号链接的情况下构建共享子应用的Python项目结构

6 投票
1 回答
1286 浏览
提问于 2025-04-17 00:03

我有多个项目,它们之间共享一些应用。在我处理某个项目的文件夹时,我希望能够修改这些应用,更新它们,然后把这些更新拉到另一个项目里。

需求:

  • 不使用符号链接(因为我的开发工具的调试器和它们不太兼容)
  • 不想重新编译或重新运行脚本。我希望能直接修改应用,而不需要重新运行脚本或重新构建。
  • 这些应用必须放在项目文件夹内。

这是我的文件结构:

app_one (git repo)
  |-- app_one (actual app uses by projects)
  |   +-- models.py
  |-- README.md
  +-- setup.py

project_one  (git repo)
  |-- project_one
  |   |-- apps
  |   |   |-- app_one
  |   |   |   +-- models.py
  |   |   | -- app_two
  |-- setup.cfg
  +-- setup.py

project_two  (git repo)
  |-- project_two
  |   |-- apps
  |   |   |-- app_one (same app as project_one)
  |   |   |   +-- models.py
  |   |   | -- app_two
  |-- setup.cfg
  +-- setup.py

目前我在用git子模块来处理这个问题;但缺点是无法链接到仓库的子文件夹。我最近听说了子树(subtree),这个方法会更好吗?

理想情况下,我想使用buildout,但我还没找到不使用符号链接的好办法。如果有办法做到这一点,请告诉我。

任何建议都非常感谢。

1 个回答

3

mr.developer 是一个工具。当你把 mr.developer 的源代码下载并且激活后,它就会变成一个 setuptools/distribute 开发包,这个包会在你的构建环境中使用。因此,任何在这个构建环境中运行的脚本(比如通过 zc.recipe.egg 生成的 Python 解释器)都会使用这个下载的代码。

撰写回答