¿Hay alguna forma de get programáticamente un zipball de repo de github privado?

Tenemos la necesidad de search un zipball de un repository 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.

Nueva alternativa

Debido a que la respuesta aceptada no funciona más, pensé que podría explicar cómo pude hacerlo con los nuevos cambios en la API de Github.

El nuevo Download Api Link

Primero, encontré información sobre cómo download el file aquí: https://developer.github.com/v3/repos/contents/#get-archive-link

Repo público

Si es un repository público, entonces es muy fácil … puedes hacer:

 curl -L https://api.github.com/repos/pengwynn/octokit/tarball> octokit.tar.gz

Repo privado

Si se trata de un repository privado, debes crear un token oAuth yendo a tu perfil y luego seleccionando "Aplicación". ( https://github.com/settings/applications ) Creé un token personal.

Luego, al usar las instrucciones en la página siguiente, descubrí cómo get un repository privado al que tenga permiso: https://developer.github.com/v3/#authentication.

Código completo

Me gusta esto

 curl -H "Autorización: token ab499f3b ..." \
 -L https://api.github.com/repos/godzilla/my_priv_repo/tarball> wut.tar.gz

Asegúrese de replace ab499f3b... con su token actual.


con CURL:

 curl -L -F "login=$USER" -F "token=$TOKEN" https://github.com/$USER/$REPO/$PKGTYPE/$BRANCHorTAG 

donde $TOKEN es el token API en su perfil github, no un token oAuth2 utilizado para comunicarse con el APIv3.

$USER es la count de usuario con la que está conectado el token, no necesariamente la organización / otro usuario al que pertenece el repository. La segunda instancia de $USER es el usuario / count del repository.

$REPO es el nombre del repository privado

$PKGTYPE es tarball o zipball y $BRANCHorTAG es una twig, como maestro, o un nombre de label para una confirmación.

La primera instancia de $USER debe tener acceso al repository perteneciente a la segunda instancia de $USER .

No pude encontrar esto documentado en CUALQUIER LUGAR, así que también tengo un pequeño escrito sobre esto si quieres algo más detallado.

Me encontré con el mismo problema y esto funcionó para mí (a partir de febrero de 2015):

 curl -O -J -L -u $YOUROAUTHKEY:x-oauth-basic https://github.com/$USER/$REPO/archive/master.zip 

El ouath como soluciones de encabezado no funcionó para mí, pero lo que funcionó fue rellenar la key en el nombre de usuario y especificar el tipo. Luego dio un 302 para networkingirigir con el enlace adecuado.

El command detallado realmente me ayudó a solucionar si las cnetworkingenciales que estaba usando estaban siendo aceptadas o no (404 vs 401)

No parece tener problemas para download un zipball de los repos privados. Utilizo el mismo formatting que ha especificado y funciona perfectamente.

Uso OAuth2 para get los repositorys, pero construyo el enlace para la bola zip usando el formatting que me has dado. Aquí está la aplicación en la que hago esto.

Si está buscando get un token OAuth2, solo use el formatting GitHubt API v3 , es bastante simple. Aunque esto no se ajusta exactamente a su problema:

Así es como obtengo un token de OAuth2 de GitHub para esta extensión de Chrome

ACTUALIZAR

@jayarjo Construyo la URL aquí en la línea 198 . Acabo de build la URL como la que especificó, el token OAuth2 ni siquiera se usa para eso. Todo lo que mi token me permite hacer es search todos los datos privados de los usuarios antes de crear el marcado. Pero funciona sin problema …

Creo que la razón por la que puedo download el zipball se debe a que la URL es en realidad a https://github.com/ * y dado que actualmente estoy registrado debido al OAuth2, tengo permiso para acceder a esa URL, donde parece que no lo haces, así que obtienes un error 404.

Puede intentar enviar una request a la página y, si obtiene una respuesta de error, solicite al usuario que inicie session primero, y luego cuando solicite el zipball no debería tener ningún problema.

Puede usar la authentication básica o el método basado en tokens. Consulte https://help.github.com/articles/downloading-files-from-the-command-line para get más detalles.