将外部django应用程序合并到项目中并安全地进行本地更改的最佳方法

将外部django应用程序合并到项目中并安全地进行本地更改的最佳方法,django,git,Django,Git,我在一个基于django lfs的电子商务网站上工作,我发现我需要对django lfs核心文件做一些更改。。。i、 e.向模型添加附加属性、更新视图、添加url模式等。我一开始将django lfs放在我的pythons站点包路径中,认为如果我需要对代码进行任何更改,我要么重新定义url模式(如果我需要在视图中执行不同的操作),要么重新定义猴子补丁代码 这背后的想法是,我能够保持原来的django lfs主干干净,不受影响,允许我将其更新到最新版本,然后独立更新/测试本地覆盖、子类化和编写的m

我在一个基于django lfs的电子商务网站上工作,我发现我需要对django lfs核心文件做一些更改。。。i、 e.向模型添加附加属性、更新视图、添加url模式等。我一开始将django lfs放在我的pythons站点包路径中,认为如果我需要对代码进行任何更改,我要么重新定义url模式(如果我需要在视图中执行不同的操作),要么重新定义猴子补丁代码

这背后的想法是,我能够保持原来的django lfs主干干净,不受影响,允许我将其更新到最新版本,然后独立更新/测试本地覆盖、子类化和编写的monkey补丁

正如您可能已经猜到的,这很快会成为一个需要管理的噩梦,所以我迫切需要一个更干净、更稳定的解决方案

客户端项目位于git回购中,因此我一直在研究子模块或子树合并策略。。。但从我所读到的所有内容来看,我发现很难找到任何简单易懂的明确答案(我对git比较陌生)

简而言之,我需要能够:

1) 将外部git存储库包括到主项目repo中 2) 直接对外部回购进行更改(但将其推送到项目git repo而不是外部远程源),或者创建外部回购的本地副本,然后定期将外部回购与复制的文件夹合并

但我不知道如何做到这一点。为了清楚起见,我希望以以下文件夹结构结束:

  • 项目名称
    • 媒体
    • 树干
      • 应用程序
        • django lfs
    • 对外回购
      • django lfs
外部回购文件夹中的lfs应用程序应该能够从官方(外部)django lfs存储库中下载更新,并且我应该能够自由更改存储在应用程序文件夹中的lfs文件夹

如果可能的话,我要寻找的是一组git命令/指令来实现上述功能,并利用上面概述的real-worls文件夹,而不是使用foo和bar引用


我紧紧地交叉着手指,希望外面的人能给我一些建议:)

我的快速想法是:要么把项目交给别人,要么(取决于你对hg和git的偏好),然后为你的改变做一个分支

这将使您的分支和官方主机更容易保持同步

然后,假设您使用pip+virtualenv,在pip需求文件中添加指向回购/分支的指针

不幸的是,LFS使用buildout,因此不太确定什么是
python setup.py develope
的等价物(即在virtualenv站点软件包中安装软件包,但带有返回到repo的链接,这样您就可以在不必经常运行setup.py的情况下进行更改)