Я хотел бы, чтобы любой пользователь мог клонировать репозиторий без необходимости указывать имя пользователя в команде clone.
Например, мое имя пользователя git - Джон Доу (например, требование клиента), но локальная учетная запись, в которую я вошел на моем ПК, j.doe (например, требование компании), git попытается использовать j.doe клонировать репозиторий.
Это довольно тонкое, но существенное отличие, поэтому для иллюстрации я использовал следующие 2 примера:
Если я сделаю следующее:
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 не является учетной записью в удаленном репозитории.
Обычный обходной путь - указать удаленное имя пользователя следующим образом:
j.doe~
$ git clone https://john.doe@mygit.repo.url/somerepository.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 предполагает, что это пользователь, под которым вы вошли в систему.
Альтернативные протоколы включают: