2014-01-23 32 views
1

编辑:我试图在这里实现的项目可以通过Yeoman项目完成。引导项目:private git repos,Composer和Satis


因此,我在私人服务器上设置了git + composer + satis,一切正常,我对此非常热心。一定要爱他们。

我使用git的项目,并为私人包,所以现在基本的工作流程是这样的:

git clone [email protected]:the-project-name 
composer install 

这将克隆项目的回购协议,并安装所需的依赖。太棒了。

但我也希望能够使用一些'骨架回购',只是将它们的内容复制到我的项目保持依赖信息。

拿这个例子:

  • 我创建一个名为混帐回购协议:测试项目,那么我会克隆本地。
  • 我有另一个git仓库,叫做fb-bootstrap,它是facebook应用程序的框架。
  • 我也有另一个引导程序骨架git回购,我也想包括:这将是一个API /文件夹为例。我们把它称为:api-bootstrap
  • 所以我想克隆它们,但我当然不能那样做,因为我已经在同一个目录中有一个git仓库。
  • 一个可能的解决方案:我使用下面的代码,所以我只得到这些文件:'git archive --format = tar --remote = git @ myserver:the-bootstrap-repos HEAD |焦油XF - ”

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

请注意,我不使用composer,因为除了自动加载的php类以外,我不能将任何东西放入供应商/文件夹,因为访问权限限于该文件夹。

解除这个限制也不能解决问题,因为如果我稍后添加一个依赖关系,并且我打电话给composer update,我可能会失去在自举文件夹中所做的更改。

由于上述原因,子模块和上面的唯一拷贝文件不能完全切断它。

摘要:

我需要一个解决方案,因为我需要我可以包括许多引导回购协议,我是受够了之后,我必须能够安装所有的依赖关系。

像这样:

  • git的初始化项目回购,
  • 混帐克隆本地项目回购,
  • 取一对夫妇的引导回购协议的内容,我需要,
  • 安装我宣布的依赖对于该项目以及所有引导回购的依赖关系。

有没有办法做到这一点?

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

任何意见表示赞赏。

+0

任何理由不只是让api-bootstrap一个作曲家库? – nthall

+0

是的: “请注意,我不使用composer,因为除了自动加载的php类以外,我不能将任何内容放入供应商/文件夹,因为访问权限限于该文件夹。 解除这个限制也不能解决问题,因为如果我稍后添加一个依赖关系,并且我打电话给作曲者更新,我可以失去我在引导文件夹中所做的更改。“ – ZeeCoder

+0

对不起,对我的不太了解第一次阅读使用自定义安装程序来安装api-bootstrap除了供应商/ – nthall

回答

2

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

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

结合不同的bootstrapping回购存在太多问题;什么都可能发生,真的。

但是,我仍然想要自动化的一件事是合并引导回购站的不同依赖关系。因此,我想出了一个非常简单的脚本,其用法如下所示: (请注意,gitcopy是我在Linux环境中使用的脚本,它只复制存储库的内容)。

gitcopy [email protected]:bootstrap // Grabs the bootstrap.php file from a private repo. 
php bootstrap.php fb-bootstrap api-bootstrap 

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

所以基本上,这只是一个很好的小工具来抓住我需要的一切,之后我可以自己处理可能的问题。用这个,我可以使用Yeoman生成器,并且仍然使用我自己的引导文件,而不用担心冲突。

我无法看到的唯一的事情是如何使这个脚本phar可执行,所以它可以像作曲家一样工作。 取而代之的是bootstrap.php的bootstrap回购,我只能说:bootstrap api webapp etc

但这是另一天。 :)