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

时间:2010-07-13 16:38:04

标签: django git

我正在开发一个基于django-lfs的电子商务网站,我发现我需要对django-lfs核心文件进行一些更改...即向模型添加其他属性,更新视图,添加url模式等我开始在我的pythons site-packages路径中放置django-lfs,并认为如果我需要对代码进行任何更改,我将重新定义url模式(在我需要的情况下)在视图中做一些不同的事情)或猴子补丁码。

这背后的想法是,我能够保持原始的django-lfs主干干净且不被触摸,允许我将其更新为最新版本,然后独立更新/测试本地覆盖,子类化和猴子补丁写的。

正如您可能已经猜到的那样,这很快就会成为一个噩梦,所以我迫切需要一个更清洁,更稳定的解决方案。

客户端项目位于一个git仓库中,因此我一直在研究子模块或子树合并策略......从我读过的所有内容中,我发现很难找到任何易于理解的明确答案(我对git来说相对较新。

简而言之,我需要能够:

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

我不知道如何实现这个目标。要清楚,我想最终得到以下文件夹结构:

  • PROJECT_NAME
    • MEDIA
    • TRUNK
      • APPS
        • Django的LFS
    • 外部REPOS
      • Django的LFS

external-repos文件夹中的lfs应用程序应该能够从官方(外部)django-lfs存储库中下载更新,我应该可以自由地更改存储在APPS文件夹中的lfs文件夹。

我正在寻找的,如果可能的话,是一组git命令/指令来实现上述目标并使用上面列出的真实文件夹,而不是使用foo和bar引用。

我紧紧握住我的手指,希望那里的人可以提供一些建议:)

1 个答案:

答案 0 :(得分:1)

我对此快速了解:要么在bitbucketgithub上分叉项目(取决于您对hg与git的偏好)并为您的更改创建一个分支。

这样可以更轻松地保持您的分支机构和官方主机同步。

然后,假设您使用pip + virtualenv,请在pip需求文件中添加指向repo / branch的指针。

不幸的是LFS使用了buildout,所以不太确定python setup.py develop的等价物(即在你的virtualenv站点包中安装包,但链接回你的repo,这样你就可以进行更改而不必不断运行setup.py)。