¿Cómo puedo verificar el acceso de escritura a un repositorio Git remoto ("puedo presionar?")

83

Estoy construyendo un cliente Git (algo limitado). Para configurar un repositorio, ingrese la URL del repositorio remoto. Quiero comprobar si el usuario tiene acceso de lectura + escritura a ese repositorio. Si no, presento un diálogo de autenticación.

Compruebo 'leer' el acceso a git ls-remote <url>.

¿Existe una forma análoga de verificar el acceso de 'escritura' , sin clonar primero el repositorio? (Sé que podría git clone <url>y luego git push --dry-run)

Yang Meyer
fuente
2
Bueno, técnicamente para enviar una confirmación a un repositorio, no es necesario clonarlo primero. Pero recuerde que empujar una cadena de confirmaciones y actualizar referencias remotas son dos operaciones diferentes y es posible que tenga permiso para la primera, pero no permiso para la segunda. Además, algunas referencias podrían no ser modificables.
user3159253
'git push --dry-run' se menciona en esta publicación como una forma de verificar el acceso de escritura, cuando ha clonado. sin embargo, para algunos de mis controles remotos, esto abre una solicitud de contraseña y se cuelga indefinidamente. No parece haber una forma no interactiva de verificar si tiene acceso de escritura, incluso si tiene un clon del repositorio. ¿Cómo puedo verificar el acceso de escritura a un repositorio de git, si tengo un clon?
rektide
Una forma muy fácil de verificar es si ve un ícono de 'lápiz' de edición en la parte superior derecha del archivo README.MD en la página de código principal del repositorio (desplácese hacia abajo si hay una lista larga de archivos / carpetas de nivel superior) . Haga esto cuando haya iniciado sesión en Github, obviamente.
Spike

Respuestas:

63

Si el repositorio de git está en github, abra cualquier archivo en el repositorio, luego haga clic en 'editar', github mostrará algo como esto:

Estás editando un archivo en un proyecto al que no tienes acceso de escritura. Hemos creado una bifurcación de este proyecto para que confirme los cambios propuestos. Enviar un cambio a este archivo lo escribirá en una nueva rama en su bifurcación, por lo que puede enviar una solicitud de extracción. Ingrese el código aquí

chicoskk
fuente
22
No te equivocas, Github sí muestra este comportamiento. Sin embargo, el OP pidió algo análogo a lo git ls-remoteque su nueva herramienta podría usar, por lo que la interfaz de usuario web de Github probablemente no les conviene.
RJHunter
11
Hay más repositorios de git que solo repositorios de github;)
René Roth
4
Con respecto a la GUI, la información sobre herramientas también puede indicar si puede "Editar" o "Bifurcar y luego editar" si no tiene acceso. Esto es cierto tanto con Github propiamente dicho como con GH Enterprise.
Scott Prive
1
Bifurcar un repositorio copia todo el repositorio, ¿verdad? El repositorio podría ser muy grande. Parece una operación bastante considerable solo para verificar cuál es su nivel de acceso ...
Kyle Delaney
2
@KyleDelaney No es necesario que hagas clic en el botón editar, simplemente coloca el cursor sobre él. Mostrará "Editar este archivo" o "Edita el archivo en tu bifurcación de este proyecto" dependiendo de si tienes acceso de escritura o no.
julio
3

Puede actuar git push git+ssh://host.org/path/to/repo some_refsin clonar. Pero mira mi comentario arriba

usuario3159253
fuente
2
Este método funcionaría desde un directorio de trabajo con una ref. ¿Hay alguna manera de hacer esto sin configurar un repositorio ficticio y crear una confirmación primero?
Yang Meyer
15
Sí, ¿quién quiere todas estas confirmaciones ficticias al azar? ¿No hay una forma más limpia?
Dan Bolser