维护第三方Django应用程序作为Git子模块

时间:2012-11-01 14:59:38

标签: django git git-submodules django-apps

我知道这是完全可能的,很多人已经这样做了,但我的问题略有不同,我还无法找到解决方案:

让第三方Django App的结构如下:

  • django的模块
    • 模块
      • 初始化的.py
      • views.py
      • models.py
    • requirements.txt
    • setup.py

我想仅将module目录捆绑为子模块,因为我只需键入“module.views”即可访问views.py文件。如果我导入django-module目录,我将不得不编写django-module.module.views来访问模块文件,这是不可行的。

我的目的是修改模块并偶尔向原始存储库发出拉取请求。是否有我可以遵循的工作流程,或者为此目的的最佳实践是什么?

2 个答案:

答案 0 :(得分:3)

Pip tips

Pip支持editable packagesretrieving packages with git,因此您可以创建virtualenv,使用pip安装软件包,并在需要时使用pip更新它们。

所以你可以添加:

-e git://git.myproject.org/MyProject.git@da39a3ee5e6b4b0d3255bfef95601890afd80709#egg=MyProject

requirements.txt检索确切的提交。


建议的工作流程

我认为解决问题的最佳方法如下:

  • 创建包的私有分支
  • 在分叉存储库中的特定开发分支中编辑包
  • 在需求文件中使用fork开发分支中的包。

  • 如果您愿意,请使用pip更新您使用它的分叉包。

  • 当您准备提出拉取请求时,请拉出原点,将您的工作分支重新绑定到origin / master,然后从您的分支的主分支发出拉取请求。

这意味着您有三个代码存在的位置:

  • 原始仓库(您无权访问)
  • 您的分叉回购(在叉子上工作)
  • 无论在哪里安装pip(你使用叉子的地方)

答案 1 :(得分:0)

最佳做法是使子模块完全保持原样。

将第三方模块作为子模块添加到应用程序后,下一步是确保将“django-module”目录添加到python路径中。只要django-module位于你的python路径上,你就可以像往常一样使用子模块,输入“module.views”。