Как вы храните бинарные зависимости в системе контроля версий? - PullRequest
12 голосов
/ 08 декабря 2011

Мне интересно, как лучше сохранить бинарные зависимости «дружеским для команды» способом.

У нас много зависимостей для кроссплатформенного приложения.Это включает в себя коммерческую библиотеку в 32/64 * версиях linux / windows / mac и несколько библиотек с открытым исходным кодом, скомпилированных в нестандартных, не очень простых для воспроизведения средах.Более того, у нас есть графические ресурсы, которые иногда бывают большими (250Мб довольно распространено).

Библиотеки необходимо обновлять, иногда перекомпилировать и т. Д. Активы тоже обновляются, и нам нужно, чтобы они были синхронизированы с кодом.

Я хочу добиться чего-то близкого к обновлению и сборке системы одним щелчком мыши.

Я пытался сохранить все в SVN, но это приводит к очень длинным обновлениям, даже если данные не были изменены,

Теперь я думаю о некоторой скриптовой системе, которая загружала бы и распаковывала сжатые файлы с библиотеками и ресурсами, только когда это было необходимо, как событие сборки.Скрипты будут версионными, дата не указана.

Но, может быть, есть готовое решение?Есть ли у вас опыт с этим?

Ответы [ 2 ]

4 голосов
/ 09 декабря 2011

В Mercurial 2.0 вы можете использовать расширение largefiles для управления такими файлами.Они будут храниться вне обычной истории и загружаться по требованию.Расширение все еще имеет некоторые острые края, поэтому убедитесь, что вы используете по крайней мере версию 2.0.1.

При этом я предпочитаю использовать для этого специальный инструмент - поскольку управление зависимостями действительно лучше выполнять внеСистема контроля источника.

3 голосов
/ 08 декабря 2011

Подмодули прекрасно работают для этого. В одном проекте у меня был код для приложения, размещенного в частном порядке на unfuddle.com, и все библиотеки DLL и т. Д. (Большие файлы), которые в любом случае находились в общем доступе, хранились в github. В итоге мы использовали очень мало нашего личного хранилища.

...