¿Cómo uso GitHub-API para agregar una carpeta?

Context: tengo una aplicación de nodo con un mongo db conectado. El db incluye 2 estructuras, que representan un sistema de file / carpeta. Básicamente, tenga la estructura de tree que representa las carpetas y una estructura de contenido que represente los files.

La idea es poner esto en GitHub usando una API js wrapper para GitHub api (con suerte).

Pregunta: Realmente no entiendo cómo la API de GitHub aceptaría esta información.

  • (a) Cuando uso Git cli, comienzo con git init , que configura el git para comenzar.
    ¿Dónde está este paso?
  • (b) Mirando aquí , se puede crear un repository programáticamente. Increíble.
    Entonces, ¿la idea de que los files y las carpetas (metafóricamente) sean empujados hacia arriba en este repository ahora, sin la necesidad del paso de git init ?
  • (c) Entiendo que lo que se empuja hacia arriba no son files y carpetas, sino que se compromete. Y que lo que está subiendo son los pares de keys direccionables por contenido.

¿Alguien puede explicar cómo se correlaciona esto con un flujo de trabajo que se ve así?

  1. Nuevo proyecto => crear repository
  2. Configura algunos files y carpetas => cambios push up
  3. Realice algunas actualizaciones => cambios push-up …

El poco sobre cómo funcionan las carpetas es lo que me confunde.
Cualquier puntero sería muy apreciado.

La idea detrás de un DVCS (VCS descentralizado) es que necesita publicar confirmaciones locales en un repository remoto.

Por lo tanto, si bien necesitaría la API de GitHub para crear un repository remoto, necesitaría solo Git (no la API de GitHub) para agregar y confirmar localmente, y luego presionar para el control remoto .

Crear un repository usando GitHub API Notes

  • La respuesta simple es que no hay carpetas, por así decirlo, en GitHub, por lo que no se pueden crear.
  • La respuesta elegante es que github es un sistema de valor de key direccionable por contenido, por lo tanto no hay carpetas por decir.
  • No hay files, debe tenerse en count, básicamente, todo es un blob comprometible.

Cómo usar la información anterior: (1) Crear un nuevo repository, de Meteor (mi caso de uso).

     export const insertRepo = new ValidatedMethod ({
       nombre: 'repos.insert',
       validar: RepoSchema.validator (),
       correr({
         RepoGeneralSettings,
       }) {
         if (Meteor.isServer) {
           const method = 'POST';
           const url = 'https://api.github.com/user/repos';
           const token = Meteor.settings.private.github.token;

           const headers = {
             'User-Agent': 'Meteor / 1.0',
             'Autorización': token,
           };

           const data = repoGeneralSettings;

           return HTTP.call (método, url, {encabezados, datos});
         }
       },
     });

(2) Esto se ve así:

     POST / usuario / repos HTTP / 1.1
     Anfitrión: api.github.com
     Autorización: 
     Cache-Control: no-caching
     Cartero-Token: 39be029f-817e-62fb-c07b-3fedf69200d4

     {
       "nombre": "TestRepo1",
       "descripción": "Este es un repository de testing",
       "página de inicio": "https://www.example.com",
       "privado": falso,
       "has_issues": falso,
       "has_wiki": falso,
       "has_downloads": cierto,
       "auto_init": verdadero
     }

(3) Y devolverá un 201 así: https://developer.github.com/v3/repos/#response-2

(4) Eliminar también es bastante simple . Tenga en count que las autorizaciones son (bastante obvio realmente) en la API relacionada con el token, según este comentario . Esto me causó algunos problemas ya que seguí intentando cambiar los permissions del propietario, cuando lo que tenía que suceder era cambiar los permissions del token de autorización. Ignore las configuraciones a continuación, y no intente configurarlas en la llamada a createRepo.