Этот вопрос появился в этом предложении в начале 2018 года .
Филипп Вуд попытался выделить концепцию «измененных линий» .
(упрощенная версияего патч сделал это здесь )
Когда модифицируется набор строк, блок содержит удаления, за которыми следуют вставки.
Для правильной постановки подмножества измененных строк нам нужночтобы сопоставить выбранные удаления с выбранными вставками, в противном случае мы получим удаления и строки контекста, за которыми следуют вставки, а это не то, что мы хотим.
Это закончилось до хитрости :
Для реализации подготовки измененных строк код должен спарить каждую удаленную строку с ее заменой.
Он делает это, группируя последовательно выбранные строки вместе, чтобы у него был список групп удаленныхстрок и другой список вставленных строк, он затем объединяет удаления и вставки по их индексу в списке.
У Филиппа возникли сомнения:
Я начинаю понимать, почему все другие программы, которые я пытался написать при этом (tig
, gitg
и mercurial
версии add -i
) не делают никаких попыток правильно поставить измененные строки,хотя я думаю, что у Git должен быть какой-то способ сделать это.
Qnd главный сопровождающий Git Junio C. Hamano подтвердил эти сомнения, этот ответ :
Да, это особенность, которая позволяет предлагать и реализовывать что-то, что хорошо работает для некоторых ограниченных случаев, которые используются, но не в других случаях.
И это становится оченьТрудно объяснить, как обойти ограничения реализации - вот почему я остановился на "разбить этот кусок?"и не стал выходить за рамки этого, когда я разработал оригинальную функцию «добавочного добавления».
Я думаю, реальная причина, почему это трудно, состоит в том, что нет хорошего определения «модифицированного» в «модифицированной стадии»линии ".
И, что еще хуже, не существует хорошего способа механически выяснить это, потому что патч дает вам только" они были удалены "и" они добавлены ", не давая вам" эту строку в удаленномблок соответствует этим двум строкам в добавляемом блоке "(то есть" эта оригинальная одна строка была изменена в эту вещь в результате ").