Как устранить ошибку "Ошибка № 2 в 456. Ошибка 1 из 2 блоков" - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь выполнить следующую команду в терминале 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 в 1. Что это значит? . Однако ничего не помогло.

Вот моя версия детали

VIM - Vi IMproved 8.0 (2016 сентябрь 12, скомпилировано 06 июня 2019 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~

1 Ответ

1 голос
/ 16 марта 2020

Patching берет некоторые изменения, сделанные в файле X, и применяет их к другому экземпляру файла X. То есть, предположим, вы начинаете с генерации 1 файла X; вы вносите изменения, чтобы получить поколение 2-a, а кто-то еще начинает с поколения 1, чтобы сделать поколение 2-b. Теперь вы хотите взять его правки, которые создали его поколение 2-b, и применить их к своему поколению 2-a.

Если «его» меняет пункт sh на «ваши», они не могут быть автоматически исправлены.

Вам нужно будет посмотреть на изменения, сделанные в блоке 2.

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

и выяснить, как вы хотите, чтобы результат выглядел. Кто-то должен знать, каким должен быть результат. Вы не можете разрешать конфликты без знания намерений.

...