No se puede recuperar el código del repository de git para un SHA específico en ansible

Quiero search código usando una SHA-id particular. Esto es lo que estoy intentando

- git: repo: http://<git-url>/Vara-Internal/mongo-db-dev.git dest: "{{ app_path }}/{{ app_dir }}" version: "{{ GIT_TAG }}" refspec: '+refs/heads/{{ GIT_TAG }}:refs/remotes/origin/{{ GIT_TAG }}' update: yes force: true register: cloned 

Me está arrojando este error

 FAILED! => {"changed": false, "cmd": ["/usr/bin/git", "fetch", "--tags", "origin", "+refs/heads/dbde451f203a112d0838fb09bc19ed28bd231e6e:refs/remotes/origin/dbde451f203a112d0838fb09bc19ed28bd231e6e"], "failed": true, "msg": "Failed to download remote objects and refs: fatal: Couldn't find remote ref refs/heads/dbde451f203a112d0838fb09bc19ed28bd231e6e\n"} 

(Nota: sé muy poco sobre ansible, siendo solo un usuario casual.)

La mayoría (pero no todos) de los serveres de Git no le permitirán recuperar objects mediante ID de hash. La mayoría de los serveres requieren que el object tenga un nombre, como refs/heads/master (branch master ) o refs/tags/v1.1 (la label denominada v1.1 ).

Si un server permite la recuperación mediante ID de hash (consulte la respuesta de VonC aquí ), no debe calificar la ID de hash: no es refs/heads/dbde451f203a112d0838fb09bc19ed28bd231e6e bit más bien simplemente dbde451f203a112d0838fb09bc19ed28bd231e6e . Eso se convertiría en la parte src de un src:dst refspec.

En general, debe usar un nombre de label aquí, no una ID de hash, pero si su server permite la recuperación mediante la identificación de hash, la línea de refspec lógicamente tendrá que leer:

 refspec: '+{{ GIT_TAG }}:refs/remotes/origin/some-particular-name' 

ya que no es una buena idea usar identificadores hash como nombres (por varias razones, la principal es que confundirás a los humanos).

Utilicé el método indirecto al mismo. Tengo ID de confirmación de guardado en un file y agregué el siguiente código

 - name: Reverting Changes command: "git reset --hard {{ GIT_TAG }}" args: chdir: "{{ app_path }}/{{ app_dir }}" when: build_type == "revert" 

es decir, tomé una variable adicional que es build_type y comprobé si esto es para revertir los cambios. Si es así, leo el id. de confirmación de mi file de información git y reinicio mi branch.