Назад | Перейти на главную страницу

как запретить git использовать зарегистрированное имя пользователя

Я хотел бы, чтобы любой пользователь мог клонировать репозиторий без необходимости указывать имя пользователя в команде clone.

Например, мое имя пользователя git - Джон Доу (например, требование клиента), но локальная учетная запись, в которую я вошел на моем ПК, j.doe (например, требование компании), git попытается использовать j.doe клонировать репозиторий.

Это довольно тонкое, но существенное отличие, поэтому для иллюстрации я использовал следующие 2 примера:

1. Клонирование с анонимным синтаксисом:

Если я сделаю следующее:

j.doe~
$ git clone https://mygit.repo.url/somerepository.git

... git предполагает без вопросов что удаленное имя пользователя совпадает с именем пользователя локальной учетной записи (т.е. j.doe) и пытается клонировать следующим образом:

Cloning into somerepository
j.doe@mygit.repo.url's password:

но в этом случае j.doe не является учетной записью в удаленном репозитории.

2. Клонирование с явным именем пользователя:

Обычный обходной путь - указать удаленное имя пользователя следующим образом:

j.doe~
$ git clone https://john.doe@mygit.repo.url/somerepository.git

Это успешно, но требует, чтобы каждый пользователь использовал другую команду клонирования.

Почему меня это волнует?

Есть несколько случаев, когда анонимный синтаксис будет более подходящим, например:

  1. Его легче автоматизировать - не нужно писать операторы ввода для конкретной ОС или языка, чтобы получить имя пользователя.
  2. Это более согласованно для пользователя. Запрос пользователя / пароля всегда будет выглядеть одинаково.
  3. Это упрощает написание четких и последовательных инструкций по установке. Пользователь может копировать и вставлять.
  4. Предотвращает необходимость писать разные оболочки для каждого языка сценариев и ОС, которые пытаются автоматизировать процедуру.
  5. При проверке репозитория, который полагается на подмодули git, файлы .gitmodules необходимо сначала отредактировать, чтобы включить имя пользователя, если зарегистрированный пользователь не совпадает с пользователем git. Это очень неудобно в случае нескольких пользователей.

Дело в точке.

Я знаю, что эта функция возможна, потому что github ее использует. Например, если вы клонируете репозиторий на github с помощью анонимный синтаксис вы увидите что-то вроде следующего:

j.doe~
$ git clone https://github.com/dbostock/d3.git
Cloning into 'd3'...
Username for 'https://github.com':

Довольно приятно! Используя любую оболочку, любую ОС, любой язык сценариев, я могу идентифицировать, аутентифицировать и клонировать свой репозиторий.

Итак, в конце концов, мой вопрос сводится к следующему: Как это сделать на github?

Root можно использовать sudo как и любой другой пользователь. Либо так, либо просто смените владельца файлов после операции клонирования.

Есть ли способ с клиента или сервера настроить репозиторий git так, чтобы он всегда запрашивал имя пользователя?

Git будет использовать имя пользователя, указанное в ~ / .git / config или указанное в URL-адресе вашего репозитория. Однако имейте в виду, что это удаленная система имя пользователя, а не локальное имя пользователя, поэтому оно вообще не повлияет на владение.

Решение здесь - использовать sudo для вашей операции клонирования git.

Из того, что я прочитал, похоже, что это протокол, используемый для клонирования репозитория. В соответствии с эта мерзкая книга, в разделе под названием Протокол SSH он говорит:

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

Альтернативные протоколы включают:

  • https - используется github и позволяет указать пользователя,
  • местный - не требует аутентификации,
  • мерзавец - не упоминает о проблеме ssh, но я еще не проверял.