Как объединить ветку Git, используя другую личность? - PullRequest
0 голосов
/ 09 мая 2019

Мы используем Git для проекта веб-сайта, где ветвь develop будет источником тестового сервера, а ветвь master будет служить источником для действующего рабочего сайта.Причина в том, чтобы свести к минимуму количество шагов, связанных с git (переключение веток, нажатие и вытягивание) для предполагаемой группы пользователей.Эти (не очень технические) пользователи должны иметь возможность запустить сценарий, который объединит develop в master после предупреждения о том, что он будет запущен.master не может быть изменено обычными пользователями, только один специальный пользователь может выполнить слияние.

Здесь я не уверен, как интегрировать это изменение идентичности в мой код ниже:

https://gist.github.com/jfix/9fb7d9e2510d112e83ee49af0fb9e27f

Я использую библиотеку simple-git npm.Но в целом, я не уверен, возможно ли то, что я хочу сделать, потому что я не могу найти информацию об этом где-либо.пароля.

1 Ответ

1 голос
/ 09 мая 2019

Сам Git ничего не делает с управлением пользователями или правами. Итак, короткий ответ: не пытайтесь делать что-то подлое. Вместо этого используйте учетные записи пользователей Github так, как они были предназначены.

Я предлагаю предоставить этому специальному пользователю собственную учетную запись Github с собственной копией репо. Допустим, основной репо находится на https://github.com/yourteam/repo, а специальный репо на https://github.com/special/repo.

Сценарий извлечет изменения из ветки development командного репозитория, объединит ее с собственной веткой master и переведет на https://github.com/special/repo.

Затем он отправит свои изменения в ветку master команды. Этот шаг может быть принудительным, так как никто больше не должен связываться с мастером. (В случае, если кто-то это делает, использование принудительного толчка здесь означает, что он должен будет исправить свое локальное репо, чтобы позднее соответствовать командному репо, вместо того, чтобы сценарий не выполнялся, пока кто-то не исправит командное репо.)

В то же время, ваше программное обеспечение CI заметит, что master изменился на https://github.com/special/repo, и опубликует, как вы это обычно делаете. Это основа: CI не обращает внимания на групповое репо, поэтому, несмотря на то, что ваша команда имеет разрешение на его изменение, эти изменения не превращают его в производство.

Этому специальному пользователю потребуется коммитный доступ к командному репо, в дополнение к его собственному репозиторию GitHub. Возможно, самый простой способ - использовать ключ SSH и запустить команду git push из сценария, а не пытаться использовать GitHub API.

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