管理自定义编写器存储库

时间:2015-07-02 19:24:05

标签: git symfony composer-php bundle

我的Symfony2(GregCMS)项目包含几个可以单独使用的Bundle。 我创建了一个裸的本地存储库(RepoGregCMS),它已经用我的项目启动了。

我真的需要在单个Symfony项目中嵌入我的包。不过,我不能使用github:repo必须远离互联网。

我希望能够使用来自任何其他项目的projet套装。这些捆绑包已用于设置新项目,其中包含客户将支付的一些功能。

所以我在GregCMS / src / GregCMS / CoreBundle以及GregCMS / src / GregCMS / WidgetsBundle中创建了一个composer.json文件。

例如:

{
    "name" : "gregcms/corebundle",
    "description" : "Greg CMS core bundle",
    "type" : "symfony-bundle",
    "authors" : [{
        "name" : "Greg",
        "email" : "author@mail.com"
    }],
    "keywords" : [
        "cms core bundle"
    ],
    "license" : [
        "MIT"
    ],
    "require" : {
    },
    "autoload" : {
        "psr-0" : {
            "GregCMS\\CoreBundle" : ""
        }
    },
    "target-dir" : "GregCMS/CoreBundle",
    "repositories" : [{
    }],
    "extra" : {
        "branch-alias" : {
            "dev-master" : "1.0-dev"
        }
    }
}

现在,我想要做的是创建一个需要我的CoreBundle的新Symfony项目。

我创建了projet,然后在composer.json中添加了以下代码行:

...
"gregcms/corebundle" : "dev-master"
...

我还添加了存储库路径:

...
"repositories": [
    {
        "type": "git",
        "url": "../RepoGregCMS"
    }
],
...

这么说,我尝试安装新创建的依赖项,但我终于得到了这个错误:

[Composer\Repository\InvalidRepositoryException]                                                 
No valid composer.json was found in any branch or tag of ../RepoAubergineCMS, could not load a   
  package from it.

我认为我的存储库已经裸露,因此不包含文件或目录,这使得作曲家变得疯狂。

我还尝试指向我的存储库(GregCMS)的本地分支,并使其几乎正常工作。我有以下错误:

The requested package gregcms/corebundle could not be found in any version, there may be a typo in the package name

如何使用composer将其Bundle用于其他项目?这是一个尝试指向裸存储库的好习惯吗? 我想说我尝试做的事情与Sensio对symfony做的事情是一样的:在一个项目/回购中创建几个组件,并且能够单独使用它们或者一次性使用它们。 / p> 我有点迷失在那里。谢谢你的帮助

编辑:

我成功创建了一个裸存储库并将其用作指向CVS。但我仍然得到关于未找到的包的错误。我无法弄清楚为什么我会遇到这个错误。配置文件和以后一样。我想念一些东西,但无法弄清楚是什么。

1 个答案:

答案 0 :(得分:0)

每个包都应在根级别具有适当的composer.json。如果你想拥有像"gregcms/gregcms"这样的包,你必须为GregCMS创建一个composer.json,而"gregcms/corebundle"之类的其他所有包也应该在存储库的根目录中也有composer.jsonGregCMS/src/GregCMS/CoreBundle这样的子目录。 Symfony还有一个main package和一个every subpackage。 Symfony(以及其他一些项目)管理这种称为"子树拆分"的技术。

顺便看看https://about.gitlab.com/gitlab-com/他们免费提供无限制的privete存储库托管。