【问题标题】:Composer with local SVN repo具有本地 SVN 存储库的作曲家
【发布时间】:2012-10-24 00:53:13
【问题描述】:

我正在尝试使用本地 SVN 存储库运行 composer,我可以点击我想要的存储库,但 composer 不断将 /branch 添加到 URL 的末尾。

我怎样才能覆盖它?

这里是文档:

我所拥有的示例

"repositories": [
    {
        "type": "vcs",
        "url": "http://host.com/externals/project",
        "trunk-path": "trunk",
        "branches-path": "branches",
        "tags-path": "tags",
        "reference": "symfony/symfony"
    }
],
"require": {
    "project/project": "svn-project"
}

输出是这样的:

[RuntimeException]                                                                                                                                                      
Repository http://host.com/externals/project/version could not be processed, 
svn: URL 'http://host.com/externals/project/version/branches' 
non-existent in that revision 

这是我的颠覆布局:

http://host.com/externals/project/version
  • 外部是 Symfony 之类的库
  • 项目是 Symfony
  • 版本是2.1.2

所以我的 svn repo 是这样的:

http://host.com/externals/symfony/2.1.2

有什么想法吗?

这就是我工作的公司存储我们正在使用的外部库的方式

更新:

我已将我们的仓库更改为:

http://host.com/externals/symfony/trunk/ <-- empty directory
http://host.com/externals/symfony/branches/ <-- empty directory
http://host.com/externals/symfony/trunk/2.1.2 <-- holds the Symfony 2.1.2 release code

现在我收到这条消息:

Reading composer.json of http://host.com/externals/symfony/ (2.1.2)
Importing tag 2.1.2 (2.1.2.0)

但它仍然从 github 存储库而不是我的 svn 存储库中提取。

我也读过 Satis

但是如果我在那里,我在哪里托管呢?

  • 哪个项目?
  • 在我的 SVN 存储库上?
  • 在其他地方?

【问题讨论】:

    标签: php svn symfony composer-php


    【解决方案1】:

    看起来 Composer 假设您坚持使用 /trunk/branches/tags 的通用存储库布局。另外,您必须输入存储库根目录的 URL,而不是完整的项目路径。您使用 package-path 指定项目特定的路径。

    请参阅文档Composer | Subversion Options

    由于 Subversion 没有分支和标签的原生概念,因此 Composer 默认情况下假定代码位于$url/trunk$url/branches$url/tags。如果您的存储库有不同的布局,您可以 更改这些值。

    【讨论】:

    • 没错,你应该进入存储库的根目录,然后composer将扫描它并为每个包含composer.json文件的分支/标签创建版本。您可以使用composer show package/name --verbose 查看检测到哪些版本以及为什么(未检测到)。
    • @PhillPafford 我不知道为什么你试图在你的svn repo中镜像东西,但假设你有充分的理由你可能想要做的是禁用packagist通过在存储库中添加{"packagist": false}。因为目前我假设您需要没有特定版本的 symfony/symfony,因此它会尝试安装来自 packagist 并从 github 克隆的最新版本。
    • 谢谢,这对我也有帮助:getcomposer.org/doc/articles/…
    猜你喜欢
    • 2015-01-16
    • 2014-05-31
    • 2017-10-02
    • 2018-11-19
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多