【问题标题】:Apply patch, exclude a specific folder应用补丁,排除特定文件夹
【发布时间】:2013-07-24 11:57:51
【问题描述】:

我有一些软件 (Magento) 的补丁文件,想将它应用到我当前的项目中。

补丁文件还包含对var/packages 文件夹中我不想要的文件的引用(我在安装中删除了此文件夹)。

应用此补丁文件 (patch -p1 < the.patch) 时,我收到很多警告,例如:

下一个补丁将删除文件 var/package/Foo_Bar.1.7.0.0.xml, 这不存在!假设-R? [n] ^C

有没有办法告诉 patch 命令忽略这个文件夹的补丁?

【问题讨论】:

  • 只是想知道...为什么要删除那个文件夹?
  • 其实我 .gitignore /var - 甚至 Magento 2 也这样做 (github.com/magento/magento2/blob/master/.gitignore) 所以它不可能是错误的。而且我不使用 Magento Connect,我认为这是这些文件的原因。

标签: shell magento updates patch


【解决方案1】:

您可以使用来自 http://packages.debian.org/patchutils 的“filterdiff”实用程序 - http://man.cx/filterdiff 来做到这一点。

否则,只需多次按 Enter 键也会有所帮助;-)

【讨论】:

  • 按回车很多可能会导致错误,因为我可能会检查实际上很重要的错误。
  • 对,但如果预过滤补丁对您有用……玩得开心! ;-)
  • 不按回车键:yes '' | patch -p1 -i the.patchpatch -p1 -f < the.patch
【解决方案2】:

您可以使用patchutils 包中的filterdiff

-x *PATTERN*, --exclude=*PATTERN*

排除匹配PATTERN的文件。显示输入中的所有其他行。

你的例子

filterdiff -p1 -x 'var/packages/*' < the.patch | patch -p1

或者,您可以手动编辑补丁以删除不需要的文件,但如果它非常大,这需要一些时间。

【讨论】:

    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 2015-12-11
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 2010-11-08
    • 1970-01-01
    相关资源
    最近更新 更多