引导项目:私人git repos,Composer和Satis

时间:2014-01-23 14:39:20

标签: git composer-php yeoman satis skeleton-code

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


所以我在私人服务器上设置git + composer + satisf,一切正常,我真的很热心。要全部爱他们。

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

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

这将克隆项目仓库,并安装所需的依赖项。奇妙。

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

举个例子:

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

这很好,但是它有一个问题:我有不同的依赖关系 - 不同的composer.json文件。 - 对于fb-bootstrap和api-bootstrap repos,所以我需要找到一种方法来安装所有这些。

请注意,我不使用composer,因为除了自动加载的php类之外,我无法将任何内容放入供应商/文件夹中,因为访问仅限于该文件夹。

取消该限制也无法解决问题,因为如果我稍后添加一个依赖项,并且我调用composer update,我可能会丢失我在bootstrap文件夹中所做的更改。

由于上述原因,子模块和上面唯一的复制文件并没有完全削减它。

要点:

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

像这样:

  • git init a project repo,
  • git在本地克隆项目仓库,
  • 获取我需要的几个bootstrap repos的内容,
  • 安装我为项目声明的依赖项,以及所有bootstrap repos的依赖项。

有办法吗?

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

任何评论都表示赞赏。

1 个答案:

答案 0 :(得分:2)

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

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

组合不同的bootstrapping repos有太多问题;什么都可能发生,真的。

我想要自动化的一件事是合并bootstrap repos的不同依赖项。

所以在theese改变之后,我想出了一个非常简单的脚本,其用法如下: (请注意,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,并合并其中的bootstaps中的所有其他composer.json文件。 bootstrap composer.json文件在此过程中被删除,因此我可以将引导程序内容复制到项目的根文件夹中,而不会提示覆盖其他composer.json文件。

所以基本上,它只是一个很好的小工具来抓住我需要的一切,之后我可以自己处理可能的问题。

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

我唯一无法研究的是如何使这个脚本成为可执行文件,因此它可以像composer一样工作。 而是抓住bootstrap.php的bootstrap repo,我可以说:bootstrap api webapp etc

但那是另一天。 :)