1

编辑:我试图在这里实现的目标可以通过Yeoman项目来完成。


于是我在私服上设置了git+composer+satis,一切正常,我真的很热心。必须爱他们所有人。

我将 git 用于项目和私有包,所以现在基本的工作流程如下所示:

git clone git@myserver:the-project-name
composer install

这将克隆项目 repo,并安装所需的依赖项。极好的。

但我也希望能够使用一些'skeleton-repos'并将它们的内容复制到我的项目中,保留依赖信息。

举个例子:

  • 我创建了一个名为:test-project 的 git repo,然后在本地克隆它。
  • 我有另一个 git repo,称为 fb-bootstrap,它是 facebook 应用程序的骨架。
  • 我还有另一个引导框架 git repo,我也想包含它:例如,这将是一个 api/ 文件夹。我们称之为:api-bootstrap
  • 所以我也想克隆它们,但我当然不能这样做,因为我已经在同一个目录中有一个 git repo。
  • 一个可能的解决方案:我使用以下代码,所以我只获取文件:'git archive --format=tar --remote=git@myserver:the-bootstrap-repos HEAD | 焦油 xf -'

这很好,它有一个问题:我有不同的依赖项 - 不同的 composer.json 文件。- 对于 fb-bootstrap 和 api-bootstrap 存储库,所以我需要找到一种方法来安装它们。

请注意,我不为此使用作曲家,因为除了自动加载的 php 类之外,我不能将任何内容放入 vendor/ 文件夹中,因为访问权限仅限于该文件夹。

解除该限制也不能解决问题,因为如果我稍后添加依赖项并调用composer update,我可能会丢失在引导文件夹中所做的更改。

由于上述原因,上面的子模块和唯一副本文件的破解并没有完全消除它。

概括:

我需要一个解决方案,我可以在其中包含尽可能多的引导存储库,并且在我完成它之后,我必须能够安装所有依赖项。

像这样:

  • git init 一个项目仓库,
  • git 在本地克隆项目仓库,
  • 获取我需要的几个引导存储库的内容,
  • 安装我为项目声明的依赖项,以及所有引导存储库的依赖项。

有没有办法做到这一点?

另外:如果您认为我以完全错误的方式处理此问题,请随时告诉我。无论如何,我正在适应新技术,我并不害怕变化。:)

任何评论表示赞赏。

4

1 回答 1

2

在此期间,我或多或少地解决了这个问题。

首先,我放弃了完全自动化一切的想法。

组合不同的引导存储库存在太多问题;什么都可能发生,真的。

不过,我仍然想自动化的一件事是合并引导存储库的不同依赖项。

所以在这些更改之后,我想出了一个非常简单的脚本,它的用法如下所示:(注意 gitcopy 是我在我的 linux 环境中使用的一个脚本,它只复制存储库的内容。)

gitcopy git@server:bootstrap // Grabs the bootstrap.php file from a private repo.
php bootstrap.php fb-bootstrap api-bootstrap

第二个命令将创建一个新文件夹:'bootstrap',并将 repos 克隆到其中。然后它会删除 .git 文件夹,因为我不需要那里的版本控制。它还引导一个基本的 composer.json,并从其中的引导程序中合并所有其他 composer.json 文件。引导程序 composer.json 文件在此过程中被删除,因此我可以将引导程序内容复制到项目的根文件夹中,而不会提示覆盖其他 composer.json 文件。

所以基本上,它只是一个很好的小工具,可以获取我需要的一切,然后我可以自己处理可能出现的问题。

有了这个,我可以使用 Yeoman 生成器,并且仍然使用我自己的引导文件,而不必担心冲突。

我唯一无法研究的是如何使这个脚本成为 phar 可执行文件,这样它就可以像作曲家一样工作。取而代之的是获取 bootstrap.php 的引导存储库,我只能说:bootstrap api webapp etc.

但那是另一天。:)

于 2014-01-26T22:16:46.387 回答