Как ограничить доступ участнику
Практикант, подрядчик или новый сотрудник видит только нужные репозитории — как у GitHub, базовым правом «Нет» и командами. Задачи и код при исключении из организации не пропадают.
В этой статье
Как это устроено#
Доступ в организации собирается из трёх источников. Действует самый широкий из них:
- Базовое право — что видит любой участник во всех репозиториях организации: нет, чтение, запись или администратор.
- Команды — команде выдаётся доступ к отдельным репозиториям с ролью; человек получает его, пока он в команде.
- Лично — доступ к одному репозиторию конкретному человеку.
Владельцы организации — администраторы всех её репозиториев всегда.
Права на задачи — те же, что на репозиторий: кто видит репозиторий, видит все его задачи. Отдельно скрыть часть задач внутри одного репозитория нельзя — так же у GitHub. Что может каждая роль — в таблице на странице участников и ролей репозитория.
Пошагово: практикант видит только часть репозиториев#
- Закрыть всё по умолчанию. При заведении организации выбери «Участники видят только выданное» или потом: Настройки организации → Права участников → базовое право «Нет». Теперь участник без выдач видит только публичные репозитории.
- Завести команду. Вкладка Команды → Новая команда, например «Практиканты».
- Выдать команде нужные репозитории. В каждом нужном репозитории: Настройки → Доступ → внизу таблицы выбрать команду и роль.
- читать код и задачи, заводить и комментировать — Чтение;
- вести задачи (метки, исполнители, закрытие) без права менять код — Разбор;
- менять код — Запись.
- Пригласить человека в организацию с ролью «Участник» и сразу отметить команду «Практиканты» — при принятии он попадёт в неё.
- Проверить. Люди → строка человека → Доступ к репозиториям: нужные репозитории — с ролью команды, остальные приватные — «нет доступа».
Если часть задач должна быть закрыта#
Задачи, которые видят не все, вынеси в отдельный приватный репозиторий — например, компания/internal — и выдай его только нужной команде. Общие задачи останутся в основном репозитории. Это приём GitHub: права живут на уровне репозитория, и так их проще проверить.
Подрядчик, которому нужен один репозиторий#
Не приглашай его в организацию: выдай доступ лично в «Доступе» репозитория. Он станет внешним участником — увидит только этот репозиторий, а организацию и её состав не увидит. Внешние участники перечислены на вкладке Люди.
Когда человек уходит#
Люди → меню участника → Убрать. Сразу пропадает:
- членство в организации и роли организации;
- членство во всех её командах;
- личные выдачи в её репозиториях.
Не пропадает ничего из работы: репозитории принадлежат организации, и все коммиты, файлы, задачи и реплики человека остаются в них с его именем. Даже если позже кто-то удалит его файлы, они останутся в истории коммитов.
Его форки приватных репозиториев организации удаляются — как у GitHub: иначе он унёс бы код со всей историей. Удаление попадает в журнал организации. То же происходит, когда человек теряет доступ к приватному репозиторию иначе — выход из команды, снятие личной выдачи, снятие выдачи команде. Форки публичных репозиториев и его собственные репозитории остаются.
Проверить, что видит участник#
Люди → строка участника → Доступ к репозиториям. Там каждый репозиторий организации, роль человека и откуда она: базовое право, команда, личная выдача, владелец организации. Владелец организации видит эту страницу у любого участника, участник — свою.
Строка над формой приглашения подсказывает, что увидит новый участник при текущем базовом праве.
Сразу при заведении#
При заведении организации есть выбор «Кто что видит»: участники видят все репозитории (базовое право «Чтение») или только выданное (базовое право «Нет»). Если придут практиканты — выбирай второе.
Было полезно?