Хранение сгенерированных файлов в Git

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

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

И здесь я мог бы воспользоваться некоторыми советами. Библиотеки не должны быть на 100% обновлены (поскольку они обычно поддерживают двоичную совместимость и всегда могут быть перестроены отдельным разработчиком при необходимости), поэтому я я ищу способы избежать загромождения нашего репозитория исходного кода бесчисленными незначительно разными версиями двоичных файлов, которые можно регенерировать из источника в любом случае , при этом делая библиотеки легкодоступными для разработчиков, чтобы они не придется перестраивать все с нуля.

Так что я бы хотел каким-то способом добиться чего-то вроде следующего.

  • библиотеки генерируются нашим сервером сборки на регулярной основе, который затем может зафиксировать их в репозитории Git. Затем разработчики должны рассматривать эти файлы как доступные только для чтения (вытащить последнюю версию и, при необходимости, перестроить на место, но не фиксировать новые версии), и в идеале Git должен обеспечить это. (В частности, разработчик, выполняющий быстрый git commit -a , не должен ' t в конечном итоге случайно загрязняют репозиторий новой ревизией всех этих сгенерированных файлов)
  • храните эти файлы в отдельном репозитории, чтобы исходному коду не приходилось постоянно переносить все эти сгенерированные двоичные файлы (поскольку они удобство для сокращения времени компиляции, но на самом деле они не необходимы ).

Конечно, в то же время процесс их использования должен быть как можно более плавным. При проверке исходного кода библиотеки, построенные на его основе, должны следовать (или, по крайней мере, быть легко доступными). И при фиксации не должно быть возможности случайно зафиксировать новые версии этих библиотек только потому, что они были перекомпилированы и теперь имеют другую встроенную метку времени.

Я рассматривал вариант использования подмодулей git , создавая " как можно проще (и трудно испортить) для наших разработчиков?

Или есть совершенно другое решение, которое мы не рассматривали?

Я должен упомянуть, что я использовал Git только пару дней, так что я сам новичок.

11
задан jalf 13 April 2011 в 07:46
поделиться