Як я можу перевірити доступ для запису до віддаленого сховища Git (“чи можу я натиснути?”)


85

Я будую (дещо обмежений) клієнт Git. Щоб налаштувати сховище, ви вводите URL-адресу віддаленого репо. Я хочу перевірити, чи має користувач доступ для читання + запису до цього сховища. Якщо ні, я представляю діалогове вікно автентифікації.

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

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


2
Ну, технічно, щоб проштовхнути коміт у репо, вам не потрібно його клонувати спочатку. Але пам’ятайте, що натискання ланцюжка комітів та оновлення віддалених посилань - це дві різні операції, і ви можете мати дозвіл на перше, але не на друге. Також певні посилання можуть бути не модифікованими.
user3159253 02

'git push --dry-run' згадується в цій публікації як спосіб перевірки доступу до запису, коли ви клонували. однак для деяких моїх пультів це відкриває запит на введення пароля та зависає на невизначений час. здається, не існує неінтерактивного способу перевірити, чи маєте ви доступ до запису, навіть якщо у вас є клон репо. як я можу перевірити доступ на запис до сховища git, якщо у мене є його клон?
ректида

Дуже простий спосіб перевірити, чи не бачите ви значок редагування `` олівець '' у верхньому правому куті README.MD на головній кодовій сторінці репо (прокрутіть вниз до нього, якщо є довгий список файлів / папок верхнього рівня) . Зробіть це, очевидно, коли ви ввійшли в Github.
Спайк

Відповіді:


71

Якщо репозиторій git знаходиться у github, відкрийте будь-який файл у репозиторії, потім натисніть 'редагувати', github покаже щось подібне:

Ви редагуєте файл у проекті, до якого у вас немає доступу до запису. Ми створили форк цього проекту, щоб ви могли внести запропоновані вами зміни. Надіславши зміни до цього файлу, ви напишете їх у нову гілку у вашій вилці, так що ви можете надіслати запит на витяг. Тут введіть код


22
Ви не помиляєтесь - Github справді демонструє таку поведінку. Однак OP попросив щось аналогічне тому, git ls-remoteщо міг би використовувати їх новий інструмент, тому веб-інтерфейс Github, ймовірно, не підходив би їм.
RJHunter

12
Є більше сховищ git, ніж просто сховища github;)
Рене Рот,

5
Щодо графічного інтерфейсу, підказка також може вказати, чи можете ви "Редагувати" або "Форкувати, потім редагувати", якщо немає доступу. Це справедливо як для власного Github, так і для GH Enterprise.
Scott Prive

1
Форкінг репо копіює ціле репо, чи не так? Ретпо може бути дуже великим. Це здається досить вагомою операцією лише для перевірки рівня вашого доступу ...
Kyle Delaney

2
@KyleDelaney Вам не потрібно натискати кнопку редагування, просто наведіть на неї курсор. Відобразиться "Редагувати цей файл" або "Редагувати файл у форці цього проекту" залежно від того, чи маєте ви доступ до запису.
joulev

3

Ви можете виступати git push git+ssh://host.org/path/to/repo some_refбез клонування. Але див. Мій коментар вище


2
Цей метод буде працювати з робочого каталогу з посиланням. Чи є спосіб зробити це, не встановивши фіктивний репо і не створивши коміт спочатку?
Ян Мейєр,

15
Так, хто хоче всі ці випадкові фіктивні фіксації? Чи не існує чистішого способу?
Ден Болсер

Я ще не пробував цього, але, можливо, --dry-runпараметр можна використовувати для перевірки доступу під натисканням, не натискаючи на справжній коміт? git-scm.com/docs/git-push#Documentation/git-push.txt---dry-run
Натан Френд

--dry-runне може використовуватися для цієї мети. Перевірте цей відповідь для пояснення: stackoverflow.com/questions/25403573 / ...
Nahiyan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.