davereid/drush-patchfile

帮助您使用Drush管理Drupal安装的补丁。

安装次数2,846

依赖项: 0

建议者: 0

安全: 0

类型:drupal-drush

dev-master 2016-12-21 18:37 UTC

This package is auto-updated.

Last update: 2024-08-29 04:03:20 UTC


README

为什么?

本项目旨在解决以下问题

  • 如何记录应用到项目中的补丁?
  • 如何可靠地知道哪些补丁已应用或未应用,而无需手动检查每一个?
  • 如何在下载数据包更新后提醒自己重新应用补丁?

关于

这是一套Drush命令,用于帮助您管理本地Drupal安装上的补丁。大多数开发者(应该)知道Drush Make文件作为存储有关网站、安装配置等信息的一种方式。当使用Drush Make文件时,通常您会以以下方式添加有关项目已应用补丁的信息

projects[nodequeue][subdir] = contrib
projects[nodequeue][version] = 2.0-alpha1
projects[nodequeue][patch][] = "http://drupal.org/files/issues/1023606-qid-to-name-6.patch"
projects[nodequeue][patch][] = "http://drupal.org/files/issues/nodequeue_d7_autocomplete-872444-6.patch"

这些Drush脚本可以很好地读取正常的Drush make文件,并且它只关注定义了'patch'的项目。您应该确保引用的文件包含您需要的所有补丁。如果您有多个Drush make文件(大多数项目都是这样),您可以定义一个patches.make,它将"包含"其他文件。

Drush Make项目示例patches.make,引用任何包含补丁的文件

# Our project contains patches for both Drupal core and contrib modules/themes.
includes[] = "drupal-org.make"
includes[] = "drupal-org-core.make"

如果您不使用Drush make,您可以只为记录补丁目的添加一个Drush make文件。我通常喜欢添加额外的注释来提供有关每个补丁的更多信息,例如在Drupal.org评论中找到补丁的问题,或者补丁是否已提交到模块,并注明在升级时应该删除它。

不使用Drush Make的项目示例patches.make

; @see https://drupal.org/comment/5460918#comment-5460918
; @todo Remove when updating to 7.x-2.0-beta2 or higher
projects[nodequeue][patch][] = "https://drupal.org/files/node-mark-deprecated-1402634-1.patch"

; @see https://drupal.org/node/763454#comment-6070450
projects[noderefcreate][patch][] = "https://drupal.org/files/763454-9.patch"

要求

  • Drush 5.x或更高版本
  • 一个有效的补丁Drush make文件(或正常的Drush make文件),如上所述。
  • Git

安装

下载或git clone此存储库到您的~/.drush目录,或本地Drush命令存储的任何位置。

您还应将补丁make文件的规范位置添加到项目的drushrc.php中

# Patch file is relevant to the Drupal root directory. This example would refer
# a patch file that is located one directory up from the Drupal root. Define
# this option to save typing when running Drush commands for your project.
$options['patch-file'] = '../patches.make';

用法

drush patch-add (pa)

将补丁应用到项目并将它们列入补丁文件。

通过直接补丁远程URL添加补丁

drush patch-add noderefcreate https://drupal.org/files/763454-9.patch

从Drupal.org问题添加补丁

drush patch-add noderefcreate https://www.drupal.org/node/763454
Which patch do you want to apply?
 [0]  :  Cancel
 [1]  :  763454-9.patch                                         3.37 KB by BrockBoland on comment 9
 [2]  :  763454-6-to-9.interdiff.txt                            2.43 KB by BrockBoland on comment 9
 [3]  :  noderefcreate_763454_multiredirect_to_origin.patch     3.19 KB by froboy on comment 5
 [4]  :  noderefcreate_763454_multiredirect_to_origin.patch     3.16 KB by froboy on comment 6
 [5]  :  noderefcreate_763454_multiredirect.patch               2.29 KB by akamaus on comment 4

drush patch-status (ps)

查看已应用补丁的状态摘要。您将为具有补丁的每个项目收到一个状态。响应值是是、否或不确定。除了不确定之外,这些值应该是显而易见的。不确定意味着有关该补丁的问题既不能从当前代码状态中回滚(在这种情况下,补丁已应用,即“是”),也不能重新应用。在不确定的情况下,您需要手动调查有关补丁的问题的状态。

drush patch-project (pp)

使用此命令将补丁应用到指定的项目。例如,如果您已更新了一个模块并需要重新应用补丁,您将使用此命令与该模块名称一起使用以执行此操作。

drush patch-apply-all (paa)

使用此命令将补丁文件中列出的所有补丁应用。

drush pm-download (dl)

如果您正在运行drush dl的模块或主题,并且与相关补丁相关联,在下载完成后,补丁实用程序将尝试将补丁再次应用到项目。使用补丁应用消息查看是否需要重新应用补丁,或者它是否已修复。

以下表示补丁已成功重新应用。

drush dl noderefcreate
Install location sites/all/modules/contrib/noderefcreate already exists. Do you want to overwrite it? (y/n): y
Project noderefcreate (7.x-1.0) downloaded to sites/all/modules/contrib/noderefcreate. [success]
noderefcreate patched with 763454-9.patch. [ok]

以下表示补丁可能无法应用,需要重新回滚,或者该补丁可能已经被包含在您下载的版本中,因此不再必要。

drush dl noderefcreate
Install location sites/all/modules/contrib/noderefcreate already exists. Do you want to overwrite it? (y/n): y
Project noderefcreate (7.x-1.0) downloaded to sites/all/modules/contrib/noderefcreate. [success]
Unable to patch noderefcreate with 763454-9.patch. [error]