Подтвердить что ты не робот

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 для каждого изменяемого.

Итак, какие-нибудь подсказки?

4b9b3361

Ответ 1

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

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

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

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

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

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

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