gitk эквивалент git log --follow <полный путь к файлу>

Итак, у меня есть файл one.txt, который я годами модифицировал в основной ветке. gitk one.txt покажет всю историю этого конкретного файла. Однако после того, как я изменил one.txt => two.txt, gitk two.txt не показывает никаких изменений до переименования.

Я попробовал gitk --follow two.txt, но дал только комментарий для каждого коммита, но не фактическую информацию об изменении файла.

Я знаю, что могу сделать git log --follow two.txt, но вы должны gitk каждое значение SHA1 для каждого изменяемого.

Так какие-нибудь советы?

1 ответ

Решение

Проблема в gitk --follow будет пока отличаться отgit log --follow, учитывая, согласно Linux Torvalds, --follow это в основном хак

Я почти уверен, что упомянул об этой проблеме, когда выложил оригинальные следящие патчи, и это сводится к следующему: "--followmsgstr "это полный взлом, и он не использует обычную функцию фильтрации коммитов, и, как следствие, такие причудливые вещи, как"--parent"не очень хорошо с этим работают.

Я не уверен, что это поправимо. "--follow это очень нехитрая вещь, и это полный хак. Это довольно маленький хак - если вы не знаете лучше и посмотрите на исходный код, вы можете подумать, что он очень естественно вписывается в git. Но нет.

Теперь, возможно, мы могли бы взломать --parent работать с --follow тоже, но, честно говоря, я не знаю как. Поскольку --follow хак действительно в основном сводится к:

  • вообще не сокращать коммиты (это то, что обычно упрощает родительские права и удаляет неинтересные коммиты)
    • для всего списка нормальных коммитов в "git logmsgstr ", сделайте генерацию патча волшебным специальным хаком, который ищет переименования.
  • если это было переименование, измените путь, который мы волшебным образом отслеживаем, так что при следующем коммите, который мы смотрим, мы будем следовать новому (более старому) пути.
  • если патч пуст, мы принудительно скрываем коммит (внутренне этоrev->always_show_header = 0;" вещь)

и ключ здесь в том, что мы делаем всю магию в конце очереди, еще долго после того, как мы сделали сокращение коммитов, которое обычно переименовывает родительские права.

Сожалею. я использовал --follow иногда, но это хак, чтобы увидеть "хорошо, там его переименовали". Было бы неплохо, если быgitk --follow <pathname>"работал должным образом, но это не то, что меня очень волнует.

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