Использование 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