xendk/bandaid

此软件包已被废弃,不再维护。未建议替代软件包。

Drush命令,用于帮助修补 contrib 模块。

1.8 2015-06-02 07:37 UTC

This package is auto-updated.

Last update: 2024-02-14 04:27:52 UTC


README

Drush工具,用于帮助在Drupal上管理补丁,它有助于修补和升级模块。

请参阅这篇博客文章,了解此Drush命令背后的原理。

"太棒了" - 满意的用户

Build Status Scrutinizer Code Quality Code Coverage

在你拿起这把装满子弹的枪之前

Bandaid假设你使用Git或其他VCS维护你的网站,并假设任何值得保留的东西都已提交或存档。请小心。

安装

推荐的安装方法是使用composer

  • 全局安装Composer(如果需要)。

  • 安装最新稳定版

    cd ~/.drush && composer require xendk/bandaid:*

  • 安装最新开发版

    cd ~/.drush && composer require xendk/bandaid:dev-master

  • 更新(将更新到最后稳定版或最新开发版,具体取决于你最初的选择)

    cd ~/.drush && composer update xendk/bandaid

或者,您可以手动安装,通过克隆仓库或将发布包下载到 .drush 中,并在bandaid目录中运行composer install。

使用方法

常见选项

--no-cache:将覆盖文件下载缓存。

命令,按其有用顺序

修补

drush bandaid-patch <patch file|url of patch|d.o issue> [project path]

项目路径是你想要修补的项目路径。如果是从模块或项目目录发出命令,则为可选。

将使用提供的补丁修补模块,如果成功,将弹出你的编辑器以记录修补的原因(以提醒你最初为什么要这样做)。此信息将被写入位于模块目录旁边的 .yml 文件中。如果需要,你可以编辑YAML文件,但请注意,它被以下命令使用。

如果提供的补丁是本地文件,它将被保存在YAML文件中,路径相对于YAML文件,因此假定本地补丁已提交到存储库。

示例

drush bandaid-patch patches/panels-something.patch  sites/all/modules/contrib/panels

使用给定的补丁,并将其保存在 .yml 文件中的 ../../../patches/panels-something.patch

示例

drush bandaid-patch https://www.drupal.org/node/1985980#comment-8596585 sites/all/modules/contrib/panels

将使用第五条评论(cid 8596585)中的补丁修补模块。

对于问题URL,补丁的“主页”自动设置为问题URL,对于直接指向补丁/本地文件的URL,它将询问你。

如果你提供了一个不指向特定评论的问题URL,它将列出找到的补丁并询问使用哪个。

如果你不喜欢交互式问题,可以使用 --home--reason 选项提供这些。

您可以使用--editor来指定您喜欢的编辑器(或设置$EDITOR$VISUAL),或者使用--no-editor来完全不调用编辑器。

故障模式

如果补丁没有正确应用,理论上可能会破坏您的模块。这是对先提交原始模块的良好实践的微妙提醒。然而,由于gitpatch相当保守,它们不太可能真的破坏模块,而且git reset应该可以修复它。

检查本地更改

drush bandaid-diff [project path] [patch file]

示例

drush bandaid-diff sites/all/modules/contrib/panels

显示本地更改的diff,排除YAML文件中的补丁。可用于检查模块的状态或为上游生成补丁。如果补丁无法应用到基本修订版本,则应产生警告。

除非提供了第二个参数,否则将在标准输出上输出补丁。

故障模式

出现错误时不会执行任何操作。

移除补丁

drush bandaid-tearoff [project path]

示例

drush bandaid-tearoff sites/all/modules/contrib/panels

将撤销应用的补丁,并创建一个包含任何进一步本地修改的<module>.local.patch文件。

现在您可以使用drush dl来升级模块。

故障模式

如果YAML文件中的补丁无法干净地应用,或发生其他错误,它将顽固地拒绝执行任何操作,让您通过二分查找的方式找到是谁搞错了YAML文件或更新了模块而没有正确处理YAML文件,并因此应用惩罚。

对于不太严重的错误(例如,已应用的补丁但没有在YAML文件中提及),它将仅生成比预期的更改更多的本地补丁。

重新打补丁

drush bandaid-apply [project path]

示例

drush bandaid-apply sites/all/modules/contrib/panels

将重新应用yaml文件中的补丁,最后是任何<module>.local.patch,如果成功,将删除本地补丁文件。

故障模式

如果YAML文件中的任何补丁应用失败,则默认会出错。选项--ignore-failing将使其忽略失败的补丁,而--update-yaml将删除YAML文件中的补丁。如果补丁已经在上游应用,这很方便。

您还可以手动修改YAML文件,并使用此命令将一系列补丁应用到模块的纯净版本。为了确保您没有给未来的不幸者留下混乱,提交您的更改(如果您喜欢,可以选择一个临时分支),然后尝试运行bandaid-tearoff,看看本地补丁是否看起来正常。

取消git化

drush bandaid-degit [project path]

示例

drush bandaid-degit custom_module

如果您有一个git checkout的项目,此命令将在YAML文件中记录原始存储库和检出修订版。

故障模式

因为它会删除.git目录,所以它会删除任何未提交的更改、未推送的提交和暂存区。

重新git化

drush bandaid-regit [project path]

示例

drush bandaid-regit custom_module

将项目转换为git存储库。原始和修订版要么从YAML文件中读取(bandaid-degit放置的地方),要么可以使用--origin--revision命令行选项提供。

这很方便用于将更改推送到上游或更新通过git下载的项目。

故障模式

无法确定正确的来源和版本,这只会让你回到起点。

总结

如果你发现某个模块在本地补丁中生成垃圾,或者以其他方式让Bandaid表现不佳,请打开一个问题。

如果它坏了,你将保留两块碎片。