XML-Merge?
XML-Merge?
Может кто видел/делал/знает?
Задачка такая:
Есть некоторый источник ХМЛ файлов. Формат файла с источника - не фиксированный. Это - принципиально - формат будет меняться даже после окончания разработки.
Файл с источника можно получать многократно. Получаемый файл всегда будет отличатся от полученного ранее. В простейшем случае - будет содержать поле со временем генерации, в сложном - будет существенно поменяно содержимое. Ожидается, что структура файла будет той же, что и на момент первой генерации или может быть приведена к ней. Сама структура и метод приведения - не определена (ну кроме того что там ХМЛ).
Полученный файл может редактироваться. Точнее - будет редактироваться. Т.е. будут добавлятся новые элементы и новые атрибуты.
Задача состоит в том, чтобы привести в соответствие новополученную и отредактированную версии файла - что удалено в новополученной - удалить и текущей, что добавлено - добавить. Что не понимаю - будет ли применим термин "изменено" к отношению между новым и имеющимся.
Еще - информация не должна теряться. Даже та, которая была "удалена". Где-то должен хранится дифф соответствующей версии и должна быть возможность накатить и откатить несколько действий.
Очень близко к ХМЛДИФФ, который можно взять за основу.
Если есть желающие потренироваться летом в программинге - можем обсуждать условия.
Выглядит несложно. Понятно, что НУЖНО БУДЕТ ПОКОВЫРЯТЬСЯ, но просто так "аус шпас" никто не станет.
Сама структура и метод приведения - не определена
Что то мне сильно напоминает предыдущую задачу, в которой оказалось, что на самом деле всё гораздо по другому.
чтобы привести в соответствие новополученную и отредактированную версии файла
File.Copy
но просто так "аус шпас" никто не станет
-----
А на немцев и не рассчитано.
Реально - для средней руки прогера где-нибудь в хохлостане, казахстане, молдовостане в качестве небольшого приработка.
А на немцев и не рассчитано.
ну тогда на другом форуме об этом писать нужно
на самом деле всё гораздо по другому.
-----
Так надо дискутировать.
Я сделал набросок того что мне примерно надо по функциональности и четно сказал об чем не думал.
Делается следующее:
- читается структура базы, пишется в ХМЛ,
- делается ДИФФ между текущей и предыдущей версиями,
- ДИФФ пересылается в другую систему, где лежит УЖЕ измененный (вручную) файл,
- на удаленной системе выполняется МЕРГЕ.
НО! Пересылки сейчас делать не надо - интересует только ДИФФ, МЕРГЕ и автоматом и возможность влезть в процесс.
File.Copy
-----
Хочется File.CopyDiff
Бо, в одном пакете может оказаться 600-700 файлов по 300-400К.
Плюс обратка 10-ти кратная... ее тоже потом надо как-то редуцировать.
А то nадоест ждать на медленной сетке.
делается ДИФФ между текущей и предыдущей версиями,
C = A-B
ДИФФ пересылается в другую систему, где лежит УЖЕ измененный (вручную) файл,
D merged with C
Опять чего то промолчали.
Плюс обратка 10-ти кратная
А это еще чего?
Синхронизация двух систем нужна что ли?
Опять чего то промолчали.
-----
Не, промолчал - честно сказал, что мердже будет с отредактированным вручную файлом. Там думать надо...
Синхронизация двух систем нужна что ли?
-----
На сервер уходит дифф структуры базы и дифф конфига, обратно приходит код соответствующий конфигу и структуре.
Такая синхронизация.
Здесь таки случаются и не немцы. И есть немцы у которых есть друзья не-немцы.
То, что тебя такое не интересует не означает что не интересует никого.
Там думать надо...
на подумай
Дифф- "уя, ля, ка"
Отредактированный вручную файл: "Жила-была в одной деревне маленькая девочка, такая хорошенькая, что лучше ее и на свете не было. Мать любила ее без памяти, а бабушка еще больше."
Хочу увидеть мерже
На сервер уходит дифф структуры базы и дифф конфига, обратно приходит код соответствующий конфигу и структуре.
Зачем тогда вторая система нужна?
-----
Вот твой мерге - "".
Бо, сказано изначально - ХМЛ.
Зачем тогда вторая система нужна?
-----
Чтобы создавать код.
Бо, сказано изначально - ХМЛ
Да неважно что именно.
Если две системы не связаны между собой и не имеют одинаковых начальных состояний, то задача нерешаемая - именно это и пытаюсь уж какой час показать. А ты делаешь вид что не понимаешь.
Чтобы создавать код.
А какого она тогда редактирует что то?
то задача нерешаемая
-----
Эта - решаемая.
А какого она тогда редактирует что то?
-----
Хммм...
Прикинь в применении к базам у меня на работе: 350 + 400 таблиц, 3 завода.
Изменения - затрагивают две-три таблицы.
Зачем лепить и качать весь объем?
Но это - не сейчас. Сейчас дифф и мерге. управляемые.
Эта - решаемая.
Ну тогда зависимости "скрываешь"
Зачем лепить и качать весь объем?
Какого руками в ручном режиме несинхронно редактируют? Что нельзя систему управления версиями пользовать?