generalredneck / drupal-version-info
Composer插件,在git下载的模块上添加版本包信息
Requires
- php: >=5.6.0
- composer-plugin-api: ^1.0
- symfony/process: >=3.4 <6.0
This package is auto-updated.
Last update: 2024-09-13 22:13:18 UTC
README
这仍然是Alpha版本,边缘粗糙且未经完全测试。
安装
composer require generalredneck/drupal-version-info
问题
如果您遇到过模块需要另一个模块版本的错误(例如d2d_migrate和migrate),您知道在使用composer工作流程时这可能会很痛苦。自从我们可以使用git检出Drupal模块以来,我们就遇到了关于模块开发版本版本信息准确性和尊重开发者在其模块中设置的版本约束的问题。
Drush通过在您使用drush make
或drush dl
时添加包信息来处理这个问题,并为您提供基于您正在进行的提交的特殊版本,例如7.x-1.15+11
,这意味着您比7.x-1.15多11个提交。这允许您满足需要>= 7.x-1.15的模块的要求。
自Drush 9以来,drush dl
不再推荐,make文件已成为过去式,但这又带来了问题。
它做什么?
在所有通过git源安装的drupal-module和drupal-theme类型composer包上,此插件将像drush 8中的drush dl
一样附加包信息。例如,对于ctools.info
,可能看起来像这样
diff --git a/ctools.info b/ctools.info
index cacd137..f47256e 100644
--- a/ctools.info
+++ b/ctools.info
@@ -18,3 +18,8 @@ files[] = tests/math_expression_stack.test
files[] = tests/object_cache.test
files[] = tests/object_cache_unit.test
files[] = tests/page_tokens.test
+
+; Information added by drupal-version-info composer plugin on 2019-12-20
+version = "7.x-1.15+10-dev"
+project = "ctools"
+datestamp = "1576870166"
替代方案
Git Deploy
Git Deploy允许您在实时网站上开发并满足版本要求,同时从更新状态系统中获取准确的结果。这使得为使用的项目做出贡献变得更加容易。
版本信息在Drupal打包系统创建发布时自动添加。如果您使用Git检出Drupal存储库中的贡献项目,它不应有任何版本信息。Git Deploy从项目的Git日志中获取缺少的版本信息。
要求Git Deploy版本2需要访问git命令和PHP执行shell命令的能力。版本1完全在PHP中运行,但需要安装glip库。
Git Deploy是Drupal模块。它使用生产服务器上git的强大功能来使用日志标识版本。此插件的不同之处在于,当运行composer install
或composer update
时,它将信息写入info文件,类似于Drush使用的方法。这允许您将文件复制到没有git的服务器,或者允许删除.git文件夹。这通常是像Pantheon和Acquia这样的主机的工作流程,以避免在git存储库内提交.git文件夹的“子模块”和其他复杂性。
Composer Deploy
通常,drupal.org在项目打包时插入版本信息。某些情况下,通过Composer安装的包不包含此信息。
所需的版本是Composer在--prefer-source模式下运行的开发版本。Composer Deploy挂钩到Drupal更新系统,并尝试提供来自Composer元数据的模块和主题版本
Composer Deploy 同样是一个 Drupal 模块。它尝试使用存储在 vendor/composer/installed.json 中的数据来获取您模块的信息。这在大多数情况下通常非常准确。这仅对没有该模块版本的较老 Drupal 7 网站和您正在使用特定 dev 模块提交时成为问题。这不是 Composer Deploy 的错误,这是为 Drupal 扩展构建的 packagist 系统的缺陷。如果您必须为每个提交生成一个包变体,那么要稳健和高效是很困难的。
示例
composer require drupal/composer_deploy:1.x-dev#d8cf3fccf8966fb9e45659c501741a844c41a635
截至本文撰写时,此提交应描述为版本 8.x-1.1+1,即比发布版 8.x-1.1 提前 1 个提交。相反,您将在 installed.json 中看到以下内容:
"drupal": {
"version": "8.x-1.3+1-dev",
"datestamp": "1555315985",
"security-coverage": {
"status": "not-covered",
"message": "Dev releases are not covered by Drupal security advisories."
}
}
这是最新提交的元数据,因此,您标记的提交报告它比版本提前了 2 个版本。此外,您会发现,如果-dev 包的依赖项在您标记的和最新版本之间已更改,您可能没有满足您标记版本所需的一切。
创建补丁
创建补丁始终是一个选择。为了减轻此插件作为额外依赖项,您可以修复 .info 文件。为了减轻 composer dev 包的问题,您可以创建一个补丁,从您想要的提交之前的稳定版本开始,通过使用提交和稳定版本之间的 diff 来修复到该提交。
感谢
感谢社区成员为我们提供了如此出色的贡献软件。特别是这个项目使用了 Drush 团队、Webflo 和 cweagans 的作品和灵感。