Esko предложил отличное решение, подходящее для проектов с открытым исходным кодом.Однако для этого требуется, чтобы у каждого члена команды соавторов была платная учетная запись на GitHub, что не всегда верно.
VonC указало, что существует другое решение, которое включает только одну платную учетную запись GitHub.И я собираюсь предоставить некоторый учебник по реализации решения VonC.
Давайте предположим, что у нас есть два частных хранилища: test-test
и test-production
.Первый репо предназначен для разработки, и каждый член команды имеет к нему доступ.Второй репозиторий предназначен для автоматического развертывания кода, поэтому к нему применяются жесткие ограничения доступа.
Настройка для разработчиков довольно проста и проста: git clone https://github.com/<username>/test-test
, сделайте свою работу и отодвиньте ее.
Настройка для соавторов немного сложнее:
Извлечение веток из репозитория разработки git clone https://github.com/<username>/test-test
Добавление удаленного репозитория git remote add production-repo https://github.com/<username>/test-production.git
Извлечение данных из нового репо git fetch production-repo
Создание новой локальной ветки для производственного кода и переключение на нее git checkout -b local-production
Скажите git связать локальные и удаленные филиалы git branch -u production-repo/production
Загрузить содержимое удаленной производственной ветви в локальную git pull
Разберитесь с возможными конфликтами и все!
Теперь все, что выталкивается из ветви local-production
, попадет в репо test-production
и другие ветви.будет подтолкнут к репо test-test
.
Хорошо, это круто, бно как насчет более детального доступа ([имя человека])? - спросите вы.Ответ таков: вы можете создавать репозитории, подобные test-test
, для каждого разработчика и использовать один и тот же шаблон для их настройки.Недостатком этого подхода является то, что коллаборационистам придется клонировать каждое из test-test-[person's name]-development
репозиториев.
VonC также предложил форкать репо production
и делать к нему запросы извлечения - почему бы не сделатькак это? Во-первых, потому что вы не можете раскошелиться на частное репо, не заплатив аккаунт GitHub.Во-вторых, чтобы разрешить кому-то форкать приватное репо, вы предоставляете ему полный доступ к нему, чтобы он мог напрямую перейти к нему.И разработчик может ошибиться, подтолкнув к репо production
, запускающему сервисные хуки GitHub и испорченному.И если вы используете несколько сторонних разработчиков, это, скорее всего, произойдет.
Также я хотел бы предупредить вас о функции bug в официальном приложении GitHub для Windows.Ветви с восходящим потоком, отличным от источника, попадут в источникТак что используйте командную строку для нажатия.
Все эти вещи кажутся немного сложными.Но это всегда так, если вы не хотите платить за простоту.