当前位置: 首页 > 知识库问答 >
问题:

如何读取或逆向工程composer.lock文件?

田嘉慕
2023-03-14

我继承了一个用PHP 5.3. x、Symfony2和Composer构建的项目,用于依赖管理。

composer.json文件中有许多类似的行:“vendorname/library”:“dev master”,表示正在使用的库的版本。它上一次编辑是在2012年8月,当时显然是有效的,因为composer.lock文件存在,并且项目正在我们主机的服务器上运行。

谢天谢地,有一个小调整composer.lock,我得到了作曲家安装的工作,但我现在要做的是修复一些失败,我得到了当运行作曲家更新。网上有很多关于作曲家依赖地狱的帖子——我在冥河上的一艘漏水的船上,正往那里拉头发。

简而言之,几年前composer.lock创建时,该项目与当时几十个包含供应商库的“开发”版本一起工作,但现在我正试图清理混乱,我想把合适的版本composer.json并尝试从已知状态更新事物。

如何发现作曲家安装实际安装的版本?或者composer.lock文件中的哪些键/值告诉你这一点?

我在composer.lock文件中有很多github提交哈希,但是如果给定任意提交哈希,那么用什么最接近的标记版本替换composer.json中的相应行还不清楚。

这是composer.json的一个例子:

"doctrine/doctrine-bundle"              : "dev-master",

下面是该模块的composer.lock中的对应节点:

{
    "name": "doctrine/doctrine-bundle",
    "version": "dev-master",
    "target-dir": "Doctrine/Bundle/DoctrineBundle",
    "source": {
        "type": "git",
        "url": "http://github.com/doctrine/DoctrineBundle.git",
        "reference": "d3c930599723c8343472a5791b0f5909a4111a73"
    },
    "dist": {
        "type": "zip",
        "url": "https://github.com/doctrine/DoctrineBundle/zipball/d3c930599723c8343472a5791b0f5909a4111a73",
        "reference": "d3c930599723c8343472a5791b0f5909a4111a73",
        "shasum": ""
    },
    "require": {
        "doctrine/dbal": ">=2.2,<2.4-dev",
        "php": ">=5.3.2",
        "symfony/doctrine-bridge": "2.1.*",
        "symfony/framework-bundle": "2.1.*"
    },
    "require-dev": {
        "doctrine/orm": ">=2.2,<2.4-dev",
        "symfony/validator": "2.1.*",
        "symfony/yaml": "2.1.*"
    },
    "suggest": {
        "doctrine/orm": "The Doctrine ORM integration is optional in the bundle."
    },
    "type": "symfony-bundle",
    "extra": {
        "branch-alias": {
            "dev-master": "1.0.x-dev"
        }
    },
    "autoload": {
        "psr-0": {
            "Doctrine\\Bundle\\DoctrineBundle": ""
        }
    },
    "license": [
        "MIT"
    ],
    "authors": [
        {
            "name": "Fabien Potencier",
            "email": "fabien@symfony.com"
        },
        {
            "name": "Benjamin Eberlei",
            "email": "kontakt@beberlei.de"
        },
        {
            "name": "Symfony Community",
            "homepage": "http://symfony.com/contributors"
        }
    ],
    "description": "Symfony DoctrineBundle",
    "homepage": "http://www.doctrine-project.org",
    "keywords": [
        "DBAL",
        "Database",
        "ORM",
        "Persistence"
    ],
    "support": {
        "source": "https://github.com/doctrine/DoctrineBundle/tree/master",
        "issues": "https://github.com/doctrine/DoctrineBundle/issues"
    },
    "time": "2012-09-10 15:12:44"
}

我猜作曲家安装了发行-

共有2个答案

储法
2023-03-14

多亏了其他答案,我开始挖掘,并发现您可以获得以下有用信息:

composer show -t

它将产生一个依赖树,每个包旁边都有版本。

邵正雅
2023-03-14

首先,您需要找出哪些包依赖于dev-master版本。

composer show -i

这将列出您的所有软件包以及安装的版本。大概是这样的:

symfony/http-foundation               dev-master 1234abc
symfony/http-kernel                   v2.5.7

您将看到一些软件包被列为具有版本devmaster

现在,您可以在供应商目录中安装软件包的源代码,从而使自己的工作变得更轻松。

composer install --prefer-source

现在,对于上面提到的每个包,将cd放入包目录并找到最新的标记。

cd vendor/symfony/http-foundation
git describe # Shows the latest tag

现在,您可以使用该标记来确定要安装的版本。例如,如果git descripe返回v2.2.3,您可以将composer.json中的版本号更改为2.2.

"symfony/http-foundation": "2.2.*"

如果最新的标签“远离”安装的提交,这部分可能会很棘手。如果您遇到太多问题,您总是可以通过将dev-master#

"symfony/http-foundation": "dev-master#1234abc"

 类似资料:
  • 逆向工程 是模型其中一个主要功能。这功能让你加载现有的数据库结构以创建新的图表。它支持导入 MySQL、 PostgreSQL、Oracle、SQLite、SQL Server 或 MariaDB 数据库、模式、表或视图。 Navicat 提供一个步骤的向导让你完成任务: 选择 工具 -> 从数据库导入。 选择连接。 选择你要导入的数据库、模式或表。 点击 开始。 你也可以简单地在 Navicat

  • 逆向工程是模型的其中一个主要功能。这功能让你加载现有的数据库结构以创建新的图表。它支持导入数据库、模式、表或视图。 Navicat 提供一个向导,一步一步指导你完成任务: 选择“文件”->“从数据库导入”。 选择一个连接。 选择你要导入的数据库、模式、表或视图。 点击“开始”。 你也可以简单地在 Navicat 主窗口使用逆向工程创建一个新模型。右击一个已打开的数据库或模式、表或视图并在弹出式菜单

  • 逆向工程是模型的其中一个主要功能。这功能让你加载现有的数据库结构以创建新的图表。它支持导入数据库、模式、表或视图。 Navicat 提供一个向导,一步一步指导你完成任务: 选择“文件”->“从数据库导入”。 选择一个连接。 选择你要导入的数据库、模式、表或视图。 点击“开始”。 你也可以简单地在 Navicat 主窗口使用逆向工程创建一个新模型。按住 Control 键并点按一个已打开的数据库或模

  • 逆向工程是模型的其中一个主要功能。这功能让你加载现有的数据库结构以创建新的图表。它支持导入数据库、模式、表或视图。 Navicat 提供一个向导,一步一步指导你完成任务: 选择“文件”->“从数据库导入”。 选择一个连接。 选择你要导入的数据库、模式、表或视图。 点击“开始”。 你也可以简单地在 Navicat 主窗口使用逆向工程创建一个新模型。右击一个已打开的数据库或模式、表或视图并在弹出式菜单

  • 主要内容:1. 下载jar包,2. 创建数据表,3. 创建项目Mybatis 提供了一个逆向工程工具,该工具可以根据数据表自动生成针对单表的 po 类、mapper 映射文件和 mapper 接口。大大缩减了开发时间,可以让开发人员将更多的精力放在繁杂的业务逻辑上。 之所以强调单表两个字,是因为 MyBatis 逆向工程生成的 Mapper 中的操作都是针对单表的。在大型项目中,很少有复杂的多表关联查询,所以该工具作用还是很大的。 1. 下载jar包 jar

  • 有没有其他的方法可以让反编译的代码变得不可读? (请不要评论或回答,无论我做什么,CIA总是能够完全逆转我的应用程序。显然,我已经超过了使用Proguard等)。