繁体   English   中英

无法从git存储库中获取ansible中特定SHA的代码

[英]Unable to fetch code from git repository for a specific SHA in ansible

我想使用特定的SHA-id来获取代码。这就是我正在尝试的

- 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 

它给我这个错误

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"}

(注意:我对ansible很少了解,只是一个临时用户。)

大多数(但不是全部)Git 服务器根本不允许您通过哈希ID检索对象。 大多数服务器要求对象具有名称,例如refs/heads/master (分支master )或refs/tags/v1.1 (标记为v1.1 )。

如果服务器允许通过哈希ID进行检索(请参阅此处的VonC答案 ),则不得限定哈希ID:它不是refs/heads/dbde451f203a112d0838fb09bc19ed28bd231e6e位而是简单地dbde451f203a112d0838fb09bc19ed28bd231e6e 这将成为src:dst refspec的src部分。

通常,您在此处使用标记名称,而不是哈希ID,但如果您的服务器允许通过哈希ID进行检索,则refspec行在逻辑上必须读取:

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

因为使用哈希ID作为名称不是一个好主意(出于几个原因,主要原因是你会混淆人类)。

我使用了间接方法。我在文件中保存了提交ID并添加了以下代码

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

即我采取了一个额外的变量,它是build_type并检查这是否是为了还原更改。如果是,那么我从我的git信息文件中读取提交ID并硬重置我的分支。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM