Страницы

Поиск по вопросам

четверг, 9 апреля 2020 г.

Как определить, является ли удалённый репозиторий «голым» или с рабочей копией?

#git #git_remote

                    
Нередко для того, чтобы локализовать проблему с использованием и настройкой удалённых
репозиториев в Git требуется узнать, является ли удалённый репозиторий «голым» ("bare")
или обычным, имеющим рабочую копию файлов.

Разумеется, если репозиторий на GitHub, Bitbucket, Gitlab или чём-то подобном, то
мы знаем точно. Также возможны решения вроде «залогиниться на сервер и посмотреть»
— но далеко не всегда это возможно. Ещё можно пробовать пушить какие-либо изменения
и смотреть на реакцию — но это меняет текущее состояние и тем самым усложняет проблему.

Мне нужен простой способ, который можно будет предлагать тем, от кого нужны уточнения
по вопросу (например, такому).


Обязательно не меняющий состояние удалённого и локального репозиториев
Желательно только средствами git и ОС (без установки дополнительного ПО)
Обходные решения не годятся («зайти и посмотреть», «спросить админа» и т.п.). Предположим,
что доступа по SSH нет или пользователь не умеет это делать.

    


Ответы

Ответ 1



Пока что лучшее, что я могу придумать — смотреть на имена удалённых репозиториев в их локальной фс и делать следующие предположения .git – с рабочей копией name.git – голый, bare. Дальше смотрим на вывод remote -v show и вырезаем из него путь — участок между именем репозитория (под которым он настроен локально) и именем папки. Нам этот путь не интересен, а раскрывать его может быть нежелательно. git remote -v show | sed s/'[[:space:]].*\/'/': '/g В моих экспериментах это возвращает следующее: С рабочей копией (склонировал из соседней папки) origin: .git (fetch) origin: .git (push) Голый (склонировал из Gitlab) origin: test-name.git (fetch) origin: test-name.git (push) Если репозиториев подключено несколько, то будет информация про каждый: origin: .git (fetch) origin: .git (push) backup: .git (fetch) backup: .git (push)

Ответ 2



git rev-parse --is-bare-repository When the repository is bare print "true", otherwise "false". https://stackoverflow.com/questions/1830701/how-do-i-check-if-a-repository-is-bare

Комментариев нет:

Отправить комментарий