是否有一种方法可以告诉编写器只使用git repo中一个文件夹的内容?


Is there a way to tell composer to use only the contents of one folder in a git repo?

我有几个小项目(php),由VCS (git)管理单元测试(phpUnit)并发布开源(github)。我想在使用依赖管理器(composer)的大项目中使用这些小项目作为依赖项。

回购是结构化的:

/src/(files I want referenced by composer)
/phpUnit/(unit tests)
/doc/(documentation)
/(License & other meta-data)

当有人使用composer加载这些小项目时,我只希望/src的内容返回到更大项目的相应文件夹中。

有办法做到这一点吗?我一直在寻找,但还没有找到解决办法。

如果这些文件位于composer/src/的不同子文件夹中,那么您可以将这些repos添加为子模块

cd /path/to/composer
git submodule add -- /url/to/subrepo src/subrepo

那么一个简单的git clone --recusive /url/to/composer将克隆所有内容

按如下方法创建.gitattributes文件:

/phpUnit export-ignore
/doc export-ignore
/license export-ignore
(add all other metadata files here as well)

Github会排除这些文件和目录在它为发行版创建的zip文件中,所以如果用户使用--prefer-dist安装包,排除的文件将不会被安装。

但实际上我更关注的是指向子目录(/src)中的一个。

这是不可能的。Composer是一个管理器,因为包是一个内聚单元,所以部分安装它是没有意义的。