Tenemos la necesidad de buscar un zipball de un repositorio privado. Para los públicos, es bastante fácil, ya sea a través de GitHub API o manualmente (https://github.com/user/repo/zipball/master). ¿Pero qué hay de los repos privados? No es exactamente obvio cómo hacerlo incluso con token oAuth.¿Hay alguna forma de obtener programáticamente un zipball de repo de github privado?
Respuesta
Nueva Alternativa
Debido a que la respuesta aceptada dado no funciona más, pensé que iba a explicar lo que era capaz de hacerlo con los nuevos cambios en la API de GitHub.
La nueva API de descarga Enlace
En primer lugar, he encontrado información sobre cómo descargar el archivo aquí: https://developer.github.com/v3/repos/contents/#get-archive-link
Pública Repo
Si se trata de un acuerdo de recompra pública, entonces es muy fácil ... puede hacer:
curl -L https://api.github.com/repos/pengwynn/octokit/tarball > octokit.tar.gz
Repo privada
Si se trata de un acuerdo de recompra es privada, es necesario crear un token de OAuth yendo a su perfil y luego seleccionar "Aplicación". (https://github.com/settings/applications) Creé un token personal.
Luego, utilizando las instrucciones en la página siguiente descubrí cómo llegar repo privada que tiene permiso para: https://developer.github.com/v3/#authentication
Código completo
gusta esta
curl -H "Authorization: token ab499f3b..." \ -L https://api.github.com/repos/godzilla/my_priv_repo/tarball > wut.tar.gz
Sea Asegúrese de reemplazar ab499f3b...
con su token actual.
No parece que tenga problemas para descargar un zipball de los repositorios privados. Utilizo el mismo formato que ha especificado y funciona perfectamente.
Uso OAuth2 para obtener los repositorios, pero construyo el enlace para la bola zip usando el formato que ha proporcionado. Here is the application Hago esto en.
Si está buscando obtener un token OAuth2, simplemente use el formato GitHubt API v3, es bastante simple. Aunque esto no se ajusta exactamente su problema:
This es cómo consigo un token OAuth2 de GitHub para this chrome extension
ACTUALIZACIÓN
@jayarjo I build the URL here on line 202. Acabo de construir la URL como la que especificó, el token OAuth2 ni siquiera se usa para eso. Todo lo que mi token me permite hacer es buscar todos los datos privados de los usuarios antes de crear el marcado. Pero funciona sin ningún problema ...
Creo que la razón por la que realmente puedo descargar el zipball es porque el URL es realmente https://github.com/ * y porque estoy actualmente conectado por el OAuth2, tengo permiso para obtener a esa URL, donde como suena como que no lo hace, aparece un error 404.
Puede intentar enviar una solicitud a la página y si recibe una respuesta de error, solicite al usuario que inicie sesión primero, y luego cuando solicite la bola de descarga rápida no debería tener ningún problema.
Extraño ... Me sale un error "no encontrado" cada vez que lo intento. Además, cuando utilizo el mismo formato que he especificado, ¿no estoy seguro de dónde colocar el token allí? ¿Se puede vincular una línea de código específica donde se hace esto? – jayarjo
@jayarjo Actualicé mi respuesta: básicamente, el usuario debe haber iniciado sesión para que la URL esté disponible para ellos. Entonces no obtendrás un 404 – jjNford
Pero busco el token (quiero decir, lo tengo en el momento en que pruebo esa url). ¿Pero es esto todo lo que haces y funciona? Tal vez pase por alto algo simple aquí ... – jayarjo
con curl:
curl -L -F "login=$USER" -F "token=$TOKEN" https://github.com/$USER/$REPO/$PKGTYPE/$BRANCHorTAG
donde $TOKEN
es el token de API en su perfil github, no un token OAuth2 utilizado para comunicarse con el APIv3.
$USER
es la cuenta de usuario con la que se conecta el token, no necesariamente la organización/otro usuario al que pertenece el repositorio. La segunda instancia de $USER
es el usuario/cuenta del repositorio.
$REPO
es el nombre del depósito privado
$PKGTYPE
es tar o zipball y $BRANCHorTAG
es una rama, como maestro, o un nombre de etiqueta para una confirmación.
La primera instancia de $USER
debe tener acceso al repositorio perteneciente a la segunda instancia de $USER
.
No pude encontrar esta documentada en CUALQUIER LUGAR, así que también tengo un pequeño escrito sobre esto si quieres algo más detallado.
No estoy seguro si esto funciona más: http://stackoverflow.com/questions/10418596/cant-find-api-token-in-github –
Puede utilizar la autenticación básica o el método basado en token. Vea https://help.github.com/articles/downloading-files-from-the-command-line para más detalles.
me encontré con el mismo problema y esto funcionó para mí (a partir de Feb 2015):
curl -O -J -L -u $YOUROAUTHKEY:x-oauth-basic https://github.com/$USER/$REPO/archive/master.zip
El ouath como soluciones de cabecera no funcionó para mí, pero lo que funcionó fue el relleno de la llave en la nombre de usuario y tipo de especificación. Luego dio un 302 para redirigir con el enlace adecuado.
comando detallado realmente ayudó a localizar averías si las credenciales que estaba usando eran aceptadas o no (404 vs 401)
- 1. ¿Hay alguna forma de seleccionar un ancla segue programáticamente?
- 2. ¿Hay alguna forma de generar programáticamente bytecode de Python?
- 3. Clonación de un repositorio privado de Github
- 4. ¿Hay alguna forma de obtener la dirección de un registro?
- 5. ¿Hay alguna manera fácil de obtener programáticamente el alfabeto?
- 6. ¿Es posible la solicitud de extracción de GitHub del repo privado al público?
- 7. ¿Hay alguna forma de multirreproducir un SqlDataReader?
- 8. ¿Hay alguna forma de leer programáticamente un archivo de un disco TrueCrypt en la memoria?
- 9. ¿Hay alguna forma de mostrar todas las entradas de GitHub sin un destinatario?
- 10. ¿Hay alguna forma de obtener XML de elemento por atributo?
- 11. ¿hay alguna forma de obtener componentes individuales de heroku toolbelt?
- 12. Transferir el repositorio de git "autorizado" de Github a un github privado
- 13. ¿Hay alguna forma de obtener una dirección de referencia?
- 14. ¿Hay alguna manera de obtener programáticamente la ID de clave de firma de un RPM instalado?
- 15. Configuración de Git en EC2 para extraer de GitHub Repo
- 16. ¿Hay alguna manera de generar métricas para un proyecto github?
- 17. Github: acceso de solo lectura a un repositorio privado
- 18. ¿Hay alguna forma de que pueda acceder a la variable de miembro privado de una clase?
- 19. tema de la clonación GitHub repo privada en servidor remoto
- 20. ¿Hay alguna forma en Grails de obtener todo el registro?
- 21. ¿Alguna manera de invocar un método privado?
- 22. ¿Hay alguna forma de obtener un tiempo de época usando un comando de Windows?
- 23. ¿Hay alguna forma de obtener un valor de propiedad de un objeto utilizando la clase PropertyPath?
- 24. ¿Hay alguna forma de detectar un software de registro clave?
- 25. ¿Hay alguna forma de vincular Keyboard.FocusedElement?
- 26. Forzar compositor para descargar git repo en lugar de zip
- 27. ¿Hay alguna forma de obtener el nombre de la unidad actual de un archivo de inclusión?
- 28. ¿Cómo puedo dar acceso a un repositorio privado de GitHub?
- 29. ¿Hay alguna forma de obtener la dirección IP de origen de un mensaje JMS?
- 30. ¿Hay alguna forma de obtener el recuento actual de ref de un objeto en Python?
¿qué es esto "Zipball" ¿Me podría dar poco más descripción. –
Es un archivo zip. – CMCDragonkai