Git не показывает, где код был удален

Таким образом, мне было поручено заменить некоторый фиктивный код, который требуется нашему проекту по историческим причинам совместимости, но он загадочным образом выпал со времени последнего выпуска. Поскольку исчезающий код заставляет меня нервничать из-за того, что еще могло пропасть, но незаметно, я копался в журналах, пытаясь найти, в каком коммите был убран этот набор строк. Я пробовал несколько вещей, включая "git log -S'add-visit-resource-pcf'", git blame и даже git bisect с помощью скрипта, который просто проверяет наличие строки, но не смог точно определить именно там, где были удалены эти строки. Я нахожу это очень озадачивающим, особенно потому, что последняя запись в журнале (полученная вышеупомянутой командой) перед моим повторным введением этого кода была кем-то еще, добавляющим код также.

commit 0b0556fa87ff80d0ffcc2b451cca1581289bbc3c
Author: Andrew 
Date:   Thu May 13 10:55:32 2010 -0400

    Re-introduced add-visit-resource-pcf, see PR-65034.

diff --git a/spike/hst/scheduler/defpackage.lisp b/spike/hst/scheduler/defpackage.lisp
index f8e692d..a6f8d38 100644
--- a/spike/hst/scheduler/defpackage.lisp
+++ b/spike/hst/scheduler/defpackage.lisp
@@ -115,6 +115,7 @@
     #:add-to-current-resource-pcf
     #:add-user-package-nickname
     #:add-value-criteria
+    #:add-visit-resource-pcf
     #:add-window-to-gs-params
     #:adjust-derived-resources
     #:adjust-links-candidate-criteria-types

commit 9fb10e25572c537076284a248be1fbf757c1a6e1
Author: Bob 
Date:   Sun Jan 17 18:35:16 2010 -0500

    update-defpackage for Spike 33.1 Delivery

diff --git a/spike/hst/scheduler/defpackage.lisp b/spike/hst/scheduler/defpackage.lisp
index 983666d..47f1a9a 100644
--- a/spike/hst/scheduler/defpackage.lisp
+++ b/spike/hst/scheduler/defpackage.lisp
@@ -118,6 +118,7 @@
     #:add-user-package-nickname
     #:add-value-criteria
     #:add-vars-from-proposal
+    #:add-visit-resource-pcf
     #:add-window-to-gs-params
     #:adjust-derived-resources
     #:adjust-links-candidate-criteria-types

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

1 ответ

Решение

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

git log -Sstring кажется, не справляется со злыми слияниями должным образом. (И к сожалению git log --cc -Sstring не убеждает это, чтобы смотреть на них должным образом; он просто выбирает все коммиты слияния.)

С этим гандикапом я могу придумать два варианта:

  • Вручную проверить слияния фиксирует

  • Kludge свой собственный log -S: поиск выходных данных git log --merges -p -cc для целевой линии. Должно выглядеть -- #:add-visit-resource-pcfХотя самый быстрый способ, вероятно, просто less и искать add-visit-resource-pcf,

Мораль этой истории, конечно, в том, что есть причина, по которой злые слияния называют злом.

Кстати, я удивлен, что вы не смогли найти его с помощью пополам. Я почти уверен, что bisect способен давать коммиты слияния как результаты.

Другие вопросы по тегам