【发布时间】:2014-02-14 04:21:46
【问题描述】:
编辑:我在这里尝试实现的目标可以通过Yeoman 项目来完成。
所以我在私人服务器上设置了git+composer+satis,一切正常,我真的很热衷。必须爱他们所有人。
我将 git 用于项目和私有包,所以现在基本工作流程如下所示:
git clone git@myserver:the-project-name
composer install
这将克隆项目 repo,并安装所需的依赖项。太棒了。
但我也希望能够使用一些“skeleton-repos”并将它们的内容复制到我的项目中,保留依赖信息。
举个例子:
- 我创建了一个名为:test-project 的 git 存储库,然后将其克隆到本地。
- 我有另一个 git 存储库,称为 fb-bootstrap,它是 facebook 应用程序的骨架。
- 我还有另一个引导框架 git 存储库,我也想包含它:例如,这将是一个 api/ 文件夹。我们称之为:api-bootstrap
- 所以我也想克隆它们,但我当然不能这样做,因为我已经在同一目录中有一个 git repo。
- 一个可能的解决方案:我使用以下代码,所以我只获取文件:'git archive --format=tar --remote=git@myserver:the-bootstrap-repos HEAD | tar xf -'
这很好,但是它有一个问题:我有不同的依赖项 - 不同的 composer.json 文件。 - 对于 fb-bootstrap 和 api-bootstrap 存储库,所以我需要找到一种方法来安装它们。
请注意,我没有为此使用 composer,因为除了自动加载的 php 类之外,我无法将任何内容放入 vendor/ 文件夹中,因为访问权限仅限于该文件夹。
解除该限制也不能解决问题,因为如果我稍后添加依赖项并调用composer update,我可能会丢失我在引导文件夹中所做的更改。
由于上述原因,上面的子模块和唯一复制文件黑客并没有完全消除它。
总结:
我需要一个解决方案,我可以在其中包含尽可能多的引导存储库,并且在我完成它之后,我必须能够安装所有依赖项。
像这样:
- git init 一个项目 repo,
- git 将项目 repo 克隆到本地,
- 获取我需要的几个引导存储库的内容,
- 安装我为项目声明的依赖项,以及所有引导存储库的依赖项。
有没有办法做到这一点?
另外:如果您认为我以完全错误的方式处理此问题,请随时告诉我。无论如何,我正在适应新技术,我并不害怕变化。 :)
欢迎评论。
【问题讨论】:
-
有什么理由不让 api-bootstrap 成为 Composer 库?
-
是:“请注意,我不为此使用 composer,因为除了自动加载的 php 类之外,我无法将任何内容放入 vendor/ 文件夹中,因为访问权限仅限于该文件夹。解除这个限制也不能解决问题,因为如果我稍后添加一个依赖项,并且我调用 composer update,我可能会丢失我在引导文件夹中所做的更改。"
-
对不起,我第一次阅读时不太明白。使用自定义安装程序在 vendor/ 以外的地方安装 api-bootstrap 怎么样?
-
好吧,我可以使用 git 子模块,但这样我就被限制在一个子文件夹中。一些引导存储库需要在根文件夹中有文件。
标签: git composer-php yeoman satis skeleton-code