Невозможно воспроизвести git bisect: "ошибка: не удалось получить oid of rev" - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь воспроизвести git bisect из отредактированного журнала до отменить ошибку Я сделал.

Я ошибочно отметил один из коммитов как хороший, когда он должен был быть плохим (или наоборот). Я запустил:

git bisect log > C:\temp\bisect.log
# Alternatively
git bisect log | Set-Content -Encoding ASCII C:\temp\bisect.log

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

Затем я запустил:

git bisect reset
git bisect replay c:\temp\bisect.log

I сейчас получаю сообщение об ошибке:

We are not bisecting.
Bisecting: 5211 revisions left to test after this (roughly 12 steps)
[9bc79b2f25a3724376d7af19617c33749a30ea3a] Merge branch 'release/2.1' into release/2.2
error: couldn't get the oid of the rev '9bc79b2f25a3724376d7af19617c33749a30ea3a?'

Что происходит? Как мне это исправить? (Почему в конце ревизии есть «?»?)

Я использую git версию 2.26.2. windows .1 на Windows 10. Я использую PowerShell 7 в качестве моя раковина.

1 Ответ

0 голосов
/ 02 мая 2020

git bisect replay не может обрабатывать файлы с разделителями CRLF. Странствующий '?' CR из пары CRLF. Массовое преобразование PowerShell git bisect log преобразовало исходный вывод только для LF git bisect log в CRLF.

Исправления:

  • Преобразование файла из CRLF обратно в LF.
    • Если вы используете PowerShell 5+, ((Get-Content C:\temp\bisect.log ) -join "`n") + "`n" | Set-Content -NoNewline \temp\bisect-lf.log
  • В текстовом редакторе сохраните файл с LF во время редактирования.
  • Используйте CMD вместо PowerShell. Тогда git bisect log > c:\temp\bisect.log не изменит переводы строк.

Подсказка для шляпы: mklement0 , ответ для однострочного преобразования PowerShell. Смотрите подробности.

Есть предложение , чтобы добавить -Delimiter аргумент к Set-Content. Если это будет реализовано, такое преобразование будет проще.

...