Как я могу проверить доступ для записи в удаленный репозиторий Git («могу ли я нажать?»)

85

Я создаю (несколько ограниченный) клиент Git. Чтобы настроить репозиторий, вы вводите URL-адрес удаленного репозитория. Я хочу проверить, есть ли у пользователя доступ на чтение и запись к этому репозиторию. Если нет, я представляю диалог аутентификации.

Я проверяю доступ для чтения с помощью git ls-remote <url>.

Есть ли аналогичный способ проверить доступ на запись без предварительного клонирования репо? (Я знаю, что мог бы git clone <url>и тогда git push --dry-run)

Ян Мейер
источник
2
Что ж, технически, чтобы отправить коммит в репо, вам не нужно сначала его клонировать. Но помните, что отправка цепочки коммитов и обновление удаленных ссылок - это две разные операции, и у вас может быть разрешение на первое, но не разрешение на второе. Также некоторые ссылки могут быть неизменяемыми.
user3159253 02
'git push --dry-run' упоминается в этом посте как способ проверить доступ на запись после клонирования. однако для некоторых из моих пультов это открывает запрос пароля и зависает на неопределенный срок. похоже, не существует неинтерактивного способа проверить, есть ли у вас доступ на запись, даже если у вас есть клон репозитория. как я могу проверить доступ на запись в репозиторий git, если у меня есть его клон?
rektide
Очень простой способ проверить, видите ли вы значок «карандаш» в правом верхнем углу README.MD на главной странице кода репозитория (прокрутите вниз, если есть длинный список файлов / папок верхнего уровня) . Очевидно, сделайте это, когда вы вошли в Github.
Spike

Ответы:

71

Если репозиторий git находится в github, откройте любой файл в репо, затем нажмите «изменить», github покажет что-то вроде этого:

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

ребята
источник
22
Вы не ошиблись - Github действительно показывает такое поведение. Однако OP запросил что-то аналогичное тому, git ls-remoteчто мог бы использовать их новый инструмент, поэтому веб-интерфейс Github, вероятно, им не подошел.
RJHunter
12
Репозиториев git больше, чем просто репозиториев github;)
Рене Рот
5
Что касается графического интерфейса пользователя, во всплывающей подсказке также можно указать, можете ли вы «Редактировать» или «Разветвлять, а затем редактировать», если нет доступа. Это верно как для Github, так и для GH Enterprise.
Скотт Прайв
1
Форк репо копирует все репо, верно? Репо может быть очень большим. Это кажется довольно сложной операцией, чтобы просто проверить, какой у вас уровень доступа ...
Кайл Делани
2
@KyleDelaney Вам не нужно нажимать кнопку редактирования, просто наведите на нее курсор. Он покажет «Редактировать этот файл» или «Редактировать файл в вашей вилке этого проекта» в зависимости от того, есть ли у вас доступ на запись или нет.
joulev
3

Вы можете работать git push git+ssh://host.org/path/to/repo some_refбез клонирования. Но см. Мой комментарий выше

user3159253
источник
2
Этот метод будет работать из рабочего каталога с исх. Есть ли способ сделать это, не создавая фиктивное репо и не создавая сначала фиксацию?
Ян Мейер
15
Да, кому нужны все эти случайные фиктивные коммиты? Нет более чистого способа?
Дэн Болсер
Сам не пробовал, но, возможно, этот --dry-runпараметр можно было бы использовать для проверки push-доступа без принудительной фиксации? git-scm.com/docs/git-push#Documentation/git-push.txt---dry-run
Натан Френд
--dry-runнельзя использовать для этой цели. Посмотрите этот ответ для объяснения: stackoverflow.com/questions/25403573/…
Нахиян