Использование Git в компании?
На моем рабочем месте у нас есть один большой репозиторий Subversion, который содержит около 100 проектов. Некоторые проекты используют друг друга через svn: externals. Обычно все люди имеют возможность читать + писать все, но иногда внешние люди и стажеры ограничивают доступ только для чтения и записи к некоторым пользовательским папкам, поэтому они не получают наши драгоценности с короной.
Как бы вы структурировали это в git? Каждый проект имеет собственный репозиторий? как вы можете повторно использовать код? Можете ли вы каким-то образом реализовать права доступа?
Ответы
Ответ 1
Структура: Да, 1 проект на репозиторий. Git предназначен для того, чтобы он работал таким образом, и он делает это довольно хорошо.
Повторное использование кода: Используйте git подмодули (очень похоже на svn: externals, только лучше)
Права доступа: Да, управление доступом часто строится вокруг ssh и открытых ключей. Если вы хотите разместить его самостоятельно, попробуйте gitosis, но я действительно рекомендую размещенное решение, например GitHub.
Ответ 2
Я бы использовал один репозиторий git , если, вам не нужно ограничивать доступ для чтения.
Структура: иерархия файловой системы
Повторное использование кода: через систему сборки
Права доступа: доступ на запись - это слияние патчей. Его можно контролировать с помощью script или лучше, с помощью разработанного человека. Если у вас есть 3 проекта, у каждого из них есть менеджер проектов, который отвечает за слияние кода в главном филиале. Помните, что именно так работает linux и git особенно подходит для этого сценария.
Зачем использовать одно репо?
Основная причина заключается в расхождении кода. Скажем, у вас есть 3 проекта и некоторые общие библиотеки. Команде A необходимо адаптировать интерфейс libXY и выполнить код с двумя сценариями:
-
Субмодули: команда B и C затем должны будут обновить свой подмодуль и сообщить команде A, если изменения нарушат их код. Они также могут обновить сам код, но тогда команда A также может иметь некоторый поломка кода.
-
One-big-repo: команда A изменяет код до тех пор, пока все тесты не пройдут. Изменения объединяются вверх по течению, и все довольны.
Запуск всех тестов в сценарии один также возможен, но тогда он будет таким же, как если бы у вас было одно репо, так как вам нужно было проверить весь код.
Это моя точка зрения. Возможно, у вас есть большие активы в репо, вы не хотите, чтобы все проверяли, потому что они занимают 2 ГБ. Возможно, ваша база кода настолько велика, что перегрев не имеет значения.
Но я считаю, что, если вы не являетесь Google, IBM,... накладные расходы, которые вы заплатите за управление несколькими репозиториями, будут слишком большими и заставят вас потерять время, которое вы могли бы потратить на более продуктивные вещи.
Cheers, zimbatm