emteknetnz/vendor-code-patcher

供应商代码修补程序

安装: 602

依赖项: 0

建议者: 0

安全性: 0

星标: 1

关注者: 1

分支: 0

开放问题: 0

类型:silverstripe-vendormodule

0.2.9 2022-10-11 02:09 UTC

This package is auto-updated.

Last update: 2024-08-27 12:11:55 UTC


README

用于将私有代码补丁直接添加到私有测试仓库,以绕过某些限制,使部署到测试环境更简单。

将您的补丁放入 BASE_PATH . '/_vendor_patches',以便它们与它们所在的模块匹配,例如:

[project_root]/_vendor_patches/silverstripe/framework/0001-FIX-Multiple-files-changed.patch

要求

您部署到的Web服务器需要可用的 patch 工具。这通常适用于典型的debian/ubuntu Web服务器。

使用 wget 从 GitHub pull-requests 生成 .patch 文件(推荐方法)

只需在 pull-request url 后缀 .diff 以获取目标 url,例如

https://github.com/silverstripe/silverstripe-admin/pull/1259.diff

注意,仅后缀 .patch 仅获取多提交 pull-request 的最后一个提交

MYDIFF=https://github.com/silverstripe/silverstripe-admin/pull/1259.diff
MYDIR=_vendor_patches/silverstripe/admin
MYPATCH=0001-my.patch
mkdir -p $MYDIR
wget -O $MYDIR/$MYPATCH $MYDIFF

wget 将为您解决任何重定向

重要 - 使用 wget 下载 diff 而不是通过浏览器复制粘贴,以保留字符编码。这对于包含特殊空格字符(例如 nbsp)的压缩 bundle.js 类型的文件尤其重要。从浏览器复制粘贴通常会错误地将这些字符转换为常规空格,导致补丁无法应用。

从本地文件生成 .patch 文件

常规做法是在私有仓库中有一个 pull-request,用于将未发布的补丁压缩成一个单独的提交。

复制这个单独提交的 sha

cd vendor/silverstripe/framework
git remote add my-private-account git@github.com:my-private-account/silverstripe-framework.git
git fetch my-private-account
git format-patch -1 [sha]

应用补丁

补丁在第一次 ?flush=1 时自动应用 - 这应该是部署的一部分

然后,补丁文件将被移动到 [project_root]/_vendor_patches/_patched,这样它们就不会在后续的 flush 中运行

关于生成的 bundle.js 类型文件的说明

由于您本地的 git 在检出时存在细微差异,您可能无法将补丁应用于生成的 bundle.js 类型的文件。

如果您遇到问题,手动用从 GitHub 粘贴的原始版本替换您本地的 bundle.js 复制应该可以解决任何问题。

在本地项目中测试补丁

为了将补丁应用到本地项目以确保补丁文件有效

patch -p1 -l -r - -B /tmp/ -d vendor/silverstripe/framework < '_vendor_patches/silverstripe/framework/0001-my.patch'