es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sobrescribir un archivo de GitLab utilizando curl

Necesito sobrescribir un archivo de GitLab con un nuevo contenido utilizando curl. La solicitud GET funciona como se espera, pero tengo problemas con la solicitud PUT para reemplazar el contenido del archivo.

El siguiente enlace devuelve exitosamente el contenido del archivo en el navegador:

https://<gitlab-url>/api/v4/projects/<project-id>/repository/files/<filename>/raw/?ref=master

Esta es la solicitud curl que no logra copiar el contenido de FILE-CONTENT.txt en TARGET-FILE.txt. Retorna un mensaje de error HTTP/1.1 400 Bad Request.

curl -v --request PUT --header "PRIVATE-TOKEN:<read-write-api-token>" -F "branch=master" -F "author_email=email" -F "author_name=me" -F "content=" -F "commit_message=TEST" "<https:></https:><gitlab-url>/api/v4/projects/<project-id>/repository/files/<target-file.txt>/raw/?ref=master>"

Por favor, indique cuál es el método y la sintaxis correctos.</target-file.txt>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para sobrescribir un archivo de GitLab con un nuevo contenido usando curl, puedes usar la siguiente sintaxis:

    curl --request PUT --header "PRIVATE-TOKEN:<token-de-lectura-escritura-api>" --data "<ruta a/contenido-de-archivo.txt="">" "https://URL-DE-GITLAB/api/v4/projects/ID-DE-PROYECTO/repository/files/NOMBRE-DE-ARCHIVO-DESTINO.txt?branch=master&commit_message=MENSAJE-DE-COMMIT"
    

    Asegúrate de reemplazar los marcadores de posición con los valores reales. En este caso, deberás reemplazar:
    <token-de-lectura-escritura-api> con tu token de lectura-escritura de la API de GitLab
    <ruta a/contenido-de-archivo.txt=""> con la ruta al archivo que deseas utilizar como nuevo contenido
    URL-DE-GITLAB con la URL de tu instancia de GitLab
    ID-DE-PROYECTO con el ID del repositorio de GitLab donde se encuentra el archivo
    NOMBRE-DE-ARCHIVO-DESTINO.txt con el nombre del archivo que deseas sobrescribir
    MENSAJE-DE-COMMIT con el mensaje de commit que deseas utilizar para el cambio

    Ten en cuenta que no necesitas incluir /raw/ en la URL y debes pasar el nuevo contenido utilizando la opción --data.

Comments are closed.