首页 > 解决方案 > 如何解决错误“Hunk #2 FAILED at 456. 1 out of 2 hunks FAILED”

问题描述

我正在尝试在 ubuntu 终端中运行以下命令

patch -p0 -i adjustmentFile.patch

这是给出以下错误

patching file ./src/helpStructures/CastaliaModule.cc
patching file ./src/node/communication/mac/tunableMac/TunableMAC.cc
Hunk #2 FAILED at 456.
1 out of 2 hunks FAILED -- saving rejects to file ./src/node/communication/mac/tunableMac/TunableMAC.cc.rej

我尝试了链接Hunk #1 FAILED at 1 中建议的几乎所有方法。这是什么意思?. 但是,没有任何效果。

这是我的版本详细信息

VIM - Vi IMproved 8.0(2016 年 9 月 12 日,2019 年 6 月 6 日 17:31:41 编译)包含的补丁:1-1453

补丁文件:

diff -r -u ./src/helpStructures/CastaliaModule.cc ./src/helpStructures/CastaliaModule.cc
--- ./src/helpStructures/CastaliaModule.cc  2010-12-09 09:56:47.000000000 -0300
+++ ./src/helpStructures/CastaliaModule.cc  2011-12-20 00:16:39.944320051 -0300
@@ -180,6 +180,8 @@
            classPointers.resourceManager = getParentModule()->getParentModule()->getSubmodule("ResourceManager");
        else if (name.compare("SensorManager") == 0)
            classPointers.resourceManager = getParentModule()->getSubmodule("ResourceManager");
+       else if (name.compare("Routing") == 0)
+                   classPointers.resourceManager = getParentModule()->getParentModule()->getSubmodule("ResourceManager");
        else
            opp_error("%s module has no rights to call drawPower() function", getFullPath().c_str());
         if (!classPointers.resourceManager) 
Only in ./src/helpStructures: CastaliaModule.cc~
diff -r -u ./src/node/communication/mac/tunableMac/TunableMAC.cc ./src/node/communication/mac/tunableMac/TunableMAC.cc
--- ./src/node/communication/mac/tunableMac/TunableMAC.cc   2011-03-30 02:14:34.000000000 -0300
+++ ./src/node/communication/mac/tunableMac/TunableMAC.cc   2011-12-19 23:57:43.894686687 -0300
@@ -405,6 +405,8 @@
 void TunableMAC::fromRadioLayer(cPacket * pkt, double rssi, double lqi)
 {
    TunableMacPacket *macFrame = dynamic_cast <TunableMacPacket*>(pkt);
+   macFrame->getMacRadioInfoExchange().RSSI = rssi;
+   macFrame->getMacRadioInfoExchange().LQI = lqi;
    if (macFrame == NULL){
        collectOutput("TunableMAC packet breakdown", "filtered, other MAC");
        return;
@@ -454,7 +456,8 @@
        }

        case DATA_FRAME:{
-           toNetworkLayer(macFrame->decapsulate());
+           cPacket *netPkt = decapsulatePacket(macFrame);
+           toNetworkLayer(netPkt);
            collectOutput("TunableMAC packet breakdown", "received data pkts");
            if (macState == MAC_STATE_RX) {
                cancelTimer(ATTEMPT_TX);
Only in ./src/node/communication/mac/tunableMac: TunableMAC.cc~

标签: patch

解决方案


修补程序对文件 X 进行了一些更改,并将它们应用于文件 X 的不同实例。也就是说,假设您从文件 X 的第 1 代开始;您进行更改以获得第 2-a 代,而其他人从第 1 代开始制作第 2-b 代。现在您想要获取创建他的第 2-b 代的编辑,并将它们应用到您的第 2-a 代。

如果“他的”更改与“您的”更改发生冲突,则无法自动修补它们。

您需要查看在 hunk 2 中所做的更改。

-           toNetworkLayer(macFrame->decapsulate());
+           cPacket *netPkt = decapsulatePacket(macFrame);
+           toNetworkLayer(netPkt);

并弄清楚你想要的结果是什么样的。有人需要知道结果应该是什么。如果不了解意图,就无法解决冲突。


推荐阅读