Я почти уверен, что упомянул об этой проблеме, когда выложил оригинальные следящие патчи, и она сводится к следующему: "--follow
" - это полный взлом, и не использует функция регулярной фиксации и, как следствие, такие причудливые вещи, как "--parent
", не очень хорошо работают с ней.
Итак, я совсем не уверен, что это поправимо. «--follow
- это совершенно нехитрая вещь, и на самом деле это полный хак. Это довольно небольшой хак - если вы не знаете лучше и посмотрите на исходный код, вы можете думаю, что это очень естественно вписывается в мерзавца. Но нет.
Теперь, возможно, мы могли бы взломать --parent
и работать с --follow
, но, честно говоря, я не знаю, как. Потому что взлом --follow
действительно сводится к:
- do not prune commits вообще (это то, что обычно упрощает родительские права и удаляет неинтересные коммиты)
- для всего списка нормальных коммитов в "
git log
", сделайте генерацию патча волшебным специальным хаком, который ищет переименования.
- если это было переименование, измените путь, который мы волшебным образом отслеживаем, так что при следующем коммите, на который мы смотрим, мы пойдем по новому (более старому) пути.
- если патч пуст, мы принудительно скрываем коммит (внутренне это вещь "
rev->always_show_header = 0;
")
и ключ здесь в том, что мы делаем всю магию в конце очереди, долгое время после того, как мы сделали сокращение коммитов, которые обычно делают переименование родительских прав.
Извините. Я иногда использовал --follow
, но это хак, чтобы увидеть "хорошо, там его переименовали". Было бы хорошо, если бы "gitk --follow <pathname>
" работал должным образом, но это не то, что меня очень волнует.