как объединить 2 файла с содержимым diff как json объекты - PullRequest
0 голосов
/ 10 апреля 2020

enter image description here

Я пытаюсь объединить эти два содержимого файла в новый файл. У меня уже есть содержимое left и right как JSON объекты с номерами строк и содержимым строк.

Например, я хочу выбрать левую часть и оставить правую часть в новом файле после слияния. Так как номера строк разные. Как мы собираемся добавить левый контент из 214-й строки?

Все, что мне нужно, это окончательный JSON объект, фиксирующий решения о слиянии с номерами строк. Как только я получаю слияние JSON. Я буду использовать любой язык программирования для создания нового файла и этих изменений.

ПРИМЕЧАНИЕ. При объединении я выбираю нужный файл в качестве основного справочника. Я возьму копию правого файла и добавлю левое содержимое по мере необходимости.

1 Ответ

1 голос
/ 11 апреля 2020

Как заметил Алексей Цалолихин , вы показываете XML, а не JSON (как закодировано в тексте). Это не такая уж большая проблема: оба обеспечивают средства кодирования древовидных данных.

Git не понимает ничего из этого. Код слияния Git обрабатывает файлы как строк (текста). Это нормально, так как вы планируете выполнить слияние самостоятельно (с помощью кода, вручную или как угодно).

Обратите внимание, что распространение или объединение данных с древовидной структурой, независимо от их кодирования, по своей сути сложны. Он не должен использовать номера строк. Вероятно, должен посмотреть, совпадают ли поддеревья, и если да, считать их перемещенными, даже если они изменили глубину.

Если вы сделали слияние самостоятельно, и результат должен быть закодирован в тексте закодируйте его в текст и вставьте туда, куда он идет, и передайте Git результат в виде текстового файла. Все, что нужно git merge - это окончательный текстовый файл. входные данные слияния представляли собой три текстовых файла - один из базового коммита слияния, второй из текущего коммита и третий из другого коммитируемого слияния - и для Git нужен новый text file.

Итак, возьмите свой результат слияния, закодируйте его как текст, и все готово: запишите его в соответствующий файл (или соответствующую часть соответствующего файла) и скажите Git это правильный результат слияния . Другими словами, запишите результат и запустите git add <em>path/to/file</em>.

ПРИМЕЧАНИЕ. При слиянии я выбираю нужный файл в качестве основной ссылки. Я возьму копию правого файла и добавлю левое содержимое, как и когда выбрано.

В объединении есть три входа. Здесь нет «левого и правого»: есть базы слияния , наших и их . Дельта от базы к нашей представляет то, что мы изменили. Дельта от базы к их представляет то, что они изменили. Ваша задача состоит в том, чтобы объединить эти изменения .

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