簡體   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