在单个仓库中使用共享代码组织多个可部署的应用程序

时间:2015-05-27 16:58:09

标签: python git heroku

我有一个包含多个子目录的仓库。每个子目录都包含一个可部署到Heroku的应用程序。要关闭代码,请按照建议here使用git subtree

这一点运作良好,我希望通过添加版本化API作为可部署的应用程序继续朝着这个方向发展。问题是这些API共享大量代码。

有没有办法在此设置中拥有共享代码,以便应用程序仍可部署,共享代码包含在repo中? API是用python编写的,因此pip / virtualenv特定的东西可以工作。

据说submodules工作,但我宁愿避免他们,因为他们留下了糟糕的经历。

1 个答案:

答案 0 :(得分:0)

从来没有得到答案,所以这就是我所做的。

我继续使用子树而不是子模块。然后,对于每个子项目,我为pip创建了两个requirements.txt:一个用于Heroku,一个用于在本地运行子项目。它们看起来一样,减去共享库。

在基于Heroku的requirements.txt中,共享库的指定如下:

-e git+https://username:password@github.com/org/repo.git#egg=sharedlib&subdirectory=sharedlib

这告诉pip从github中将子目录sharedlibrepo拉出来。

在本地运行项目的requirements.txt中,共享库的指定如下:

-e ../sharedlib

这告诉pip从repo中提取localy子目录sharedlib

希望这有帮助!