Git отслеживание файлов с большой базой результатов - PullRequest
0 голосов
/ 12 октября 2019

Объяснение проблемы

У меня есть структурная модель конечных элементов, которую я хотел бы отслеживать с помощью Git. Модель в основном состоит из двух файлов:

  • model.dwg (для моделирования геометрии и нагрузок)

  • model.sofistik (для выполнения расчетов)

Файл .dwg обычно меньше 40 МБ, а файл .softistik меньше 1 МБ. Таким образом, стандартное отслеживание Git должно быть возможным.

После выполнения вычислений создается выходная база данных в виде файла model.cdb. Этот файл для естественных моделей может быть довольно красивым. большой, т.е. порядка> 2 ГБ. Таким образом, я не могу / не буду контролировать версию с помощью Git (или Git LFS).

Я знаю, как отслеживать файлы .dwg и .sofistik с помощью Git / GitHub с историей коммитов, выпусками и т. Д.

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

Мой вопрос

Как можно надежно синхронизировать большой файл .cdb с файлами .dwg и .sofistik, которыеУ меня есть версия? Каждый раз, когда создается новый файл .cdb, я хочу знать, из какой версии файлов .dwg и .sofistik он был создан. Мне не нужно следить за базой данных как таковой, но вместо этого нужно указатель некоторой формы из файлов модели на правильную версию базы данных.

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

То, что я подумал сделать

Я решил сохранить только самый последний файл базы данных и позволить ему перезаписатьсяс каждым новым пробегом. Если мне нужно просмотреть результаты устаревшего прогона, я мог бы вернуться и использовать git-tracked .dwg и .sofistik для пересчета базы данных. Это нежелательно, поскольку запуск занимает много времени и стоит денег.

Я также подумал о создании скрипта Python для определения того, когда была рассчитана новая база данных, и затем ее помещения. в подпапку вместе с соответствующими файлами .dwg и .sofistik. Это создаст папку для каждой версии, чего на самом деле я не хочу. Но по крайней мере у меня есть правильный контроль версий для наиболее важных файлов (например, .dwg и .sofistik).

Есть ли лучший способ сделать это?

Я знаю, что Git лучше всего подходит для управления версиями текстовых файлов небольшого размера. Но я хочу исследовать, можно ли его использовать и для этого типа сценария, мой текущий способ копирования / вставки и переименования файлов для отслеживания версий - очень плохая практика.

...