2016-07-08 25 views
2

您好我想創建一個標籤來使用gitlab API的一個項目,但它口口聲聲說標籤名無效。我甚至嘗試在gitlab API文檔中使用該示例。gitlab API標籤創建錯誤

這裏是我的嘗試:

➜ /tmp curl -X POST -d @body.json https://mygitlabserver.com/api/v3/projects/9733/repository/tags --header "Content-Type:application/json" -H "PRIVATE-TOKEN:sNW8AGtLMdSGAJiGQ-gV" 
{"message":"Tag name invalid"}% 

➜ /tmp cat body.json 
{ 
    "commit": { 
     "author_email": "[email protected]", 
     "author_name": "John Smith", 
     "authored_date": "2012-05-28T04:42:42-07:00", 
     "committed_date": "2012-05-28T04:42:42-07:00", 
     "committer_email": "[email protected]", 
     "committer_name": "Jack Smith", 
     "id": "2695effb5807a22ff3d138d593fd856244e155e7", 
     "message": "Initial commit", 
     "parents_ids": [ 
      "2a4b78934375d7f53875269ffd4f45fd83a84ebe" 
     ] 
    }, 
    "message": null, 
    "name": "v1.0.0", 
    "release": { 
     "description": "Amazing release. Wow", 
     "tag_name": "1.0.0" 
    } 
} 

回答

1

GiLab API for creating a new taglib/api/tags.rb

# Create tag 
    # 
    # Parameters: 
    # id (required) - The ID of a project 
    # tag_name (required) - The name of the tag 
    # ref (required) - Create tag from commit sha or branch 
    # message (optional) - Specifying a message creates an annotated tag. 
    # Example Request: 
    # POST /projects/:id/repository/tags 
    post ':id/repository/tags' do 
    authorize_push_project 
    message = params[:message] || nil 
    result = CreateTagService.new(user_project, current_user). 
    execute(params[:tag_name], params[:ref], message, params[:release_description]) 

它調用app/services/create_tag_service.rb

valid_tag = Gitlab::GitRefValidator.validate(tag_name) 

也就是說,在lib/gitlab/git_ref_validator.rb實際上W¯¯說唱調用git check-ref-format

def validate(ref_name) 
     Gitlab::Utils.system_silent(
     %W(#{Gitlab.config.git.bin_path} check-ref-format refs/#{ref_name})) 
end 

由於規則之一是:

他們必須至少包含一個/。這加強了一類像heads/存在,tags/等,但實際名稱不限制。

試試,僅用於使用以tags/xxx開頭的標記名稱進行測試。

如果這項工作,這將是在tag_name是如何驗證的錯誤。

+0

謝謝你,但它仍然是相同的 ➜/ tmp目錄捲曲-X POST -d @ body.json https://mygitlabserver.com/api/ V3 /項目/ 9733 /庫/標籤--header 「內容類型:應用程序/ JSON」 -H 「PRIVATE-TOKEN:sNW8AGtLMdSGAJiGQ-GV」 { 「消息」: 「標籤名稱無效」}%➜/ tmp目錄貓體.json { 「message」:null, 「name」:「tags/v1.0.0」 } 我想這就是你叫我來試試呢?如果不是可以請詳細說明嗎?\ –

+0

@PramodSetlur嘗試並修改https://github.com/gitlabhq/gitlabhq/blob/91fa250038e9182988319f088fb84741b6e2efc9/lib/gitlab/git_ref_validator.rb以添加更多跟蹤,以查看確切的git命令運行。 – VonC

+0

無法訪問託管API的盒子。 :/ –

4

我得到了它以這種方式工作。

這是一個POST請求:

curl -X POST -k -H 'PRIVATE-TOKEN: XXXXXXX' \ 
'https://mygitlabserver.com/api/v3/projects/9733/repository/tags?tag_name=0.0.9&ref=develop' 
+1

在我的答案中看到的參數參數很好。 +1 – VonC