Канонизация различий - PullRequest
       0

Канонизация различий

1 голос
/ 24 декабря 2011

Мой вопрос, короче говоря, следующий.(Я объясню обоснование позже, оно не очень относится к самому вопросу.) Иногда git-diff производит разные diff для одного и того же набора изменений.Это случается, например, когда есть большой кусок кода, который был заменен на совершенно другой большой кусок кода.Такое изменение может быть выражено в терминах diff как «добавить 2 строки, удалить 4 строки, добавить 5 строк и т. Д.» Или «удалить 4 строки, добавить 7 строк и т. Д.».Я хотел бы, чтобы это было как-то непротиворечивым.

Вопрос в том, как сделать разностный канонический, то есть, чтобы одно и то же изменение всегда приводило к одному и тому же различию?От макушки головы - сделай дифференциал "жадным" или что-то в этом роде.

Причина, по которой меня это так раздражает, заключается в следующем.Я очень часто использую технику, которую мы называем "diff-of-diffs".(Терпите меня, если я объясняю тривиальные вещи).После того, как я разрешаю конфликты git rebase, я создаю объединенную разность старого изменения (то есть, этого конкретного коммита в ветке перед перебазированием) и нового изменения (то есть текущий индекс против HEAD), а затем сравниваю эти различия между собой.Такая разница в качестве удивительна как проверка работоспособности при разрешении конфликтов - сразу видно, что конкретный конфликт произошел только из-за изменения контекста и т. Д.

...