Подтвердить что ты не робот

Способ ограничения доступа Git к ветки?

У меня есть четыре ветки в моем репозитории git, который управляется с помощью GitHub:

  • Продукция
  • Поэтапное
  • Мастер
  • [имя человека] -развитие

Есть ли способ ограничить доступ к записи только одной ветвью ([имя человека] -разработка)? Как мне это сделать?

Для справки, аналогичный вопрос: Как написать крюк git для ограничения записи в ветку?.

4b9b3361

Ответ 1

При использовании GitHub ваш лучший вариант будет для каждого разработчика иметь свою собственную вилку главного репозитория. Все подталкивают к собственному репозиторию, а кто-то с push-доступом к мастер-репозиторию обрабатывает вытягивание из каждого репозитория разработчиков. Так работают большинство проектов с открытым исходным кодом.

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

Ответ 3

Примечание: Защищенные ветки и требуемые проверки статуса (3 сентября 2015 г.) не будут точно разрешать одну ветку ( "[имя человека] -разработка" ), но он становится клоном.

Филиал будет защищен:

  • против принудительного нажатия
  • против удаления
  • против объединенных изменений до тех пор, пока не пройдут проверки статуса

https://cloud.githubusercontent.com/assets/25792/9596474/27db3ce6-502a-11e5-9b19-5b47a8addc65.png

Ответ 4

Возможно, вы захотите проверить GitLab и его функцию "защищенная ветвь". Я думаю, что это точно то, что вы ищете. См. Сохранение защищенного кода.

Ответ 5

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 name]-development репозиций.

VonC также предложил разветкить репо production и сделать запросы на тягу к нему - почему бы так не сделать? Во-первых, потому что вы не можете разблокировать частное репо, не оплатив счет GitHub. Во-вторых, чтобы позволить кому-то развить репозиторий private, вы даете ему полный доступ к нему, поэтому он может нажать на него напрямую. И разработчик может ошибаться, нажимать на production репо, запуская сервисные крючки GitHub и закручивая вещи. И если вы используете несколько аутсорсинговых разработчиков, это, скорее всего, произойдет.

Также я хотел бы предупредить вас об ошибке ошибка в официальном приложении GitHub для Windows. Ветвления с восходящим потоком, отличным от начала координат, попадут в исходное состояние. Поэтому используйте командную строку для нажатия.

Все эти вещи звучат немного сложнее. Но это всегда так, если вы не хотите платить за простоту.

Ответ 7

В версии Bitbucket (Bitbucket v4.9.1) Вы можете ограничить изменения:

  • Имя ветки
  • Структура имени ветки
  • Моделирование имен веток

Следующие действия могут быть ограничены:

  • Предотвратить все изменения
  • Предотвращение удаления
  • Предотвращение перезаписи истории
  • Предотвращение изменений без запроса на перенос

Введите пользователя, являющегося исключением;

введите описание изображения здесь введите описание изображения здесь

Ответ 8

Не совсем. Разделы Git на самом деле не отличаются друг от друга тем, что вы, вероятно, думаете, что они есть.

Что вы, вероятно, захотите сделать здесь, это использовать отдельный репозиторий для каждой ветки разработки.