Ноутбуки Mathematica являются, конечно, файлами простого текста - кажется разумным ожидать, что они должны играть по правилам с системой управления версиями (мерзавец в моем случае, хотя я сомневаюсь относительно определенных системных вопросов). Но факт - то, что любой .nb файл полон информации о кэше, меток времени и других различных метаданных. Ставриды его.
Что означает, что ограниченное управление версиями возможно - фиксации и откаты хорошо работают. Слияние, тем не менее, является аварией. Mathematica не откроет файл с маркерами слияния в нем, и текстовый редактор не является никаким способом пройти .nb файл.
У кого-либо была удача при подвергании ноутбука управлению версиями? Как?
Рекомендуется отключить кэш структуры файла, который представляет собой метаданные, на которые вы ссылаетесь, когда просматриваете записную книжку с помощью текстового редактора. Как вы обнаружили, это может вызвать конфликты слияния, если несколько сторон редактируют одну и ту же записную книжку.
Это легко отключить с помощью инспектора параметров. В меню Mathematica перейдите в Формат → Инспектор параметров ... , в верхнем левом углу установите раскрывающийся список scope на Выбранный блокнот ] и найдите FileOutlineCache
в поле поиска. Установите значение False и сохраните записную книжку, и все будет готово.
Обратите внимание, что это может немного замедлить открытие записных книжек, но если ноутбук не достаточно большой, вы, вероятно, не заметите разницы.
Не совсем решение вашей проблемы слияния, но именно так мы обрабатываем записные книжки и систему управления версиями в моей команде. По сути, мы относимся к записным книжкам Mathematica так же, как и к двоичным файлам. Они зарегистрированы, но:
Мы в основном используем Mathematica для небольших доказательств, исследований и побочных действий, поэтому описанная выше процедура нам подходит (наша основная документация находится в LaTeX, который обеспечивает более удобную документацию для нематематиков / непрограммистов)
{{1 }}Вы должны получать маркеры слияния только в том случае, если система управления версиями обнаруживает изменения одной строки несколькими пользователями.
Система управления версиями добавляет маркеры, чтобы очень четко указать, где находятся конфликты, и вынудить вас вручную удалить их (при разрешении каждого конфликта). Система управления версиями не знает, как сделать это автоматически.
Если файл является текстовым, но предназначен для чтения только программой, он может вообще не содержать символов конца строки (или очень длинных строк). Поэтому, если над таким файлом работают несколько человек, вы получите много конфликтов слияния.
Я не знаком с форматом файлов nb, но в целом решение этой проблемы состоит в том, чтобы гарантировать, что только один человек работает с файлом за раз (т. Е. Используйте эксклюзивный режим извлечения для файлов nb).