#merge #data-driven
#слияние #управляемый данными
Вопрос:
При создании приложений, управляемых данными, в больших группах сотрудников, состоящих из разных дисциплин (например. при создании игр нам часто приходится решать, в каком формате мы будем хранить эти данные.
XML известен своей неспособностью к слиянию, что делает практические рабочие процессы, включающие ветви, намного более болезненными. Люди даже пишут диссертации по CS на эту тему для своих степеней: https://curve.carleton.ca/system/files/etd/c6fe573c-50e5-4439-9963-be75ed60547b/etd_pdf/27e1a5dbb0c326bedf15ff286310222a/wei-mergingofxmldocuments.pdf
JSON сливается лучше, но по-прежнему не очень удобен для слияния.
Кто-нибудь знает, есть ли какие-либо форматы, которые хорошо объединяются, или при разработке пользовательского формата данных, как это может выглядеть для улучшения возможности слияния?
Меня интересует только то, как это влияет на возможность слияния.
Размер данных и время выполнения не вызывают беспокойства, поскольку формат, в котором создатели контента сохраняют свои файлы, не обязательно должен совпадать с форматом, используемым приложением во время выполнения — его можно преобразовать в представление, удобное для выполнения.
Меня также не волнует возможность редактирования / чтения человеком, потому что можно создать удобный для пользователя, эффективный редактор, позволяющий людям работать с данными.
Комментарии:
1. Каково ваше определение «дружественного к слиянию»? Рассматривали ли вы Google protobuf? Это не «редактируемый пользователем, но я думаю, что есть инструменты, которые делают его «редактируемым пользователем» для всех практических целей. (помимо этого, у него есть множество других преимуществ, таких как производительность, размер и т. Д.).
2. Под слиянием я подразумеваю в контексте управления версиями. Один из способов, которым это происходит, — это если я нахожусь в ветке функций, работаю над чем-то, а затем хочу объединить это обратно в trunk / head / что угодно, но в этой ветке также есть изменения в файле, тогда возникает потенциальный конфликт слияния. Я не думал об использовании protobuf для этого. Как вы думаете, это было бы применимо?
3. Ответ, я думаю, нет, не применимо :). Формат данных protobuf является двоичным, поэтому данные не очень легко объединяются, что вам и нужно. Но язык определения протокола protobuf основан на тексте и, скорее всего, будет очень способным к слиянию в этом смысле.