gitk эквивалент git log - PullRequest
       20

gitk эквивалент git log

30 голосов
/ 23 июля 2011

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

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

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

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

1 Ответ

28 голосов
/ 23 июля 2011

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

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...