patch默认给哪个文件打补丁?

diff -uN foo bar > patch 创建了一个补丁文件
执行 patch -p0 < patch 时发现patch行为不一致

下面的patch文件默认给 core/restservices.class.inc.php打补丁

--- core/restservices.class.inc.php    2017-05-24 19:10:31.156456256 +0800
+++ /tmp/restservices.class.inc.php    2017-05-24 19:10:46.933503094 +0800
@@ -102,6 +102,10 @@
                     $value[] = $aLnkValues;
                 }
             }
+            elseif($oAttDef instanceof AttributeCustomFields)
+            {
+                $value = $oObject->Get($sAttCode)->GetValues();
+            }
             else
             {
                 $value = $oAttDef->GetForJSON($oObject->Get($sAttCode));

下面是同样方法生成的补丁文件,却默认给 /tmp/applicationextension.inc.php打补丁

--- application/applicationextension.inc.php    2017-06-01 19:24:54.292262420 +0800
+++ /tmp/applicationextension.inc.php    2017-06-01 19:36:55.882773607 +0800
@@ -944,6 +944,10 @@
                 }
                 $value = DBObjectSet::FromArray($sLnkClass, $aLinks);
             }
+            elseif($oAttDef instanceof AttributeCustomFields)
+            {
+                $value = json_decode(json_encode($value), true);
+            }
             else
             {
                 $value = $oAttDef->FromJSONToValue($value);

当明确的指定了 patch application/applicationextension.inc.php时,第二个patch才能正确工作,这是什么情况?

阅读 2.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进