Php 如何将本地文件系统设置为我的开发环境的编写器存储库?

Php 如何将本地文件系统设置为我的开发环境的编写器存储库?,php,maven,svn,composer-php,Php,Maven,Svn,Composer Php,我通常使用Java将Maven作为依赖项管理DM来创建IT项目。根据要求,我必须在我从事PHP项目的公司中实现DM。其中一个要求是,他们不想使用任何类型的框架,如symfony、laravel、zend等 我调查了一些PHP的DM,发现最好的选择是Composer。我正在从事多层项目,类似于: 果心 服务 客户 地点 当我开始使用这种结构时,我发现的第一个问题是Composer不能检索递归依赖项,因此,我将Satis实现为包存储库。我使用Satis而不是Packagist是因为这些项目是私有项目

我通常使用Java将Maven作为依赖项管理DM来创建IT项目。根据要求,我必须在我从事PHP项目的公司中实现DM。其中一个要求是,他们不想使用任何类型的框架,如symfony、laravel、zend等

我调查了一些PHP的DM,发现最好的选择是Composer。我正在从事多层项目,类似于:

果心 服务 客户 地点 当我开始使用这种结构时,我发现的第一个问题是Composer不能检索递归依赖项,因此,我将Satis实现为包存储库。我使用Satis而不是Packagist是因为这些项目是私有项目,它将SVN实现为版本控制系统,而Packagist使用GitHub检索项目的源代码

在解释了我所做的所有实现之后,我发现在我的多层结构的开发过程中存在一些障碍

例如,如果我修改了核心项目,为了反映这些更改,我必须提交到SVN,然后刷新Satis存储库,最后更新使用核心的项目。出于这个原因,我试图找到一些方法将依赖项指向我的文件系统,以避免每次提交,而只是在特性bug修复完成时提交。 我的satis.json看起来像

{
    "name": "My Repository",
    "homepage": "https://www.myrepository.com/",
    "repositories": [
        { "type": "vcs", "url": "file:///C:/core/branches/core/" },
        { "type": "vcs", "url": "file:///C:/services/branches/services/" }
    ],
    "require-all": true
}

感谢您的帮助。

Satis不接受指向grap内容的文件URL,但您可以直接在根项目的composer.json中指向SVN存储库,因为您已经发现,composer不会递归解析这些存储库


您不必直接依赖于此存储库中提供的包,只需提及它即可用于更新内容。

Satis不接受指向grap内容的文件URL,但您可以直接在根项目的composer.json中指向SVN存储库,因为您已经发现,Composer不会递归解析这些存储库


您不必直接依赖于此存储库中提供的包,只需提及它即可用于更新内容。

只需指定文件路径,即可支持本地引用

我不知道它在Windows上是如何工作的,但在基于unix/linux的系统上,以下功能可以工作:

{
    "repositories": [
        { "type": "vcs", "url": "/path/to/git/repo" }
    ]
}
参考资料:


只需指定文件路径,即可支持本地引用

我不知道它在Windows上是如何工作的,但在基于unix/linux的系统上,以下功能可以工作:

{
    "repositories": [
        { "type": "vcs", "url": "/path/to/git/repo" }
    ]
}
参考资料:


有了你们的评论,我是否可以避免在顶层看到我在底层所做的改变?你有一些例子吗?如果你像composer update-Preference source那样运行,composer将签出你代码的SVN副本,你可以就地编辑文件,如果你想永久更改,可以随时提交。只有在删除现有供应商文件夹的情况下,此操作才有效。使用您的注释是否可以避免提交,以查看我在底层所做的反映在顶层的更改?你有一些例子吗?如果你像composer update-Preference source那样运行,composer将签出你代码的SVN副本,你可以就地编辑文件,如果你想永久更改,可以随时提交。仅当删除现有供应商文件夹时,此操作才有效。