Основываясь исключительно на информации в клоне репо, нет, вы не можете. Однако есть способы, которыми вы можете запросить удаленный сервер, чтобы узнать, что он может поддерживать.
Например, вы можете попробовать конечную точку API REST для каждого типа сервера и посмотреть, какой ответ вы получите. Вы также можете запросить конечную точку SSH для каждого сервера;строка версии сервера будет содержать «babeld» для GitHub Enterprise, строку OpenSSH для GitLab и обычно что-то на основе Java для Bitbucket Server.
Для некоторых серверов также существуют отличительные заголовки HTTP. Вы можете добавить /info/refs?service=git-upload-pack
в конец URL (который является конечной точкой refs). GitHub предоставит вам заголовок сервера с GitHub Babel
, GitLab может предоставить вам специальные GitLab
заголовки, а Bitbucket также может предоставить идентифицируемые заголовки (такие как x-server
).
В целом, однако, выне может разобрать сообщения коммита на основе типа удаленного сервера, так как конкретный проект может быть перемещен из одного в другойЭто происходит постоянно в разных компаниях, а также в проектах с открытым исходным кодом.