2017-06-28 19 views
1

組織内にgitlabホストレポがあり、管理者権限を持たない開発者です。プロジェクト内のすべてのブランチを取得するために、残りのgitlabリポジトリを残りのAPIを介して取得する

しかし、私はgitlabのこのリポジトリ(https://gitlab.gspt.net/payments/dss)の作成者です。残りのAPIを通じてこのリポジトリ内のすべてのブランチを取得することを試みています。

オンラインでいくつかの調査を行い、このドキュメント(https://docs.gitlab.com/ce/api/branches.html#protect-repository-branch)を調べたところ、このコマンドを使用してリポジトリのすべてのブランチを取得できることがわかりました。

GET /projects/:id/repository/branches 

curl --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v4/projects/5/repository/branches 

ここでヘッダー内のPRIVATE-TOKENは、私がすでにやっている私のプライベートトークンと交換する必要がある、と今私は私の社内gitlabにアクセスしようとしています私は郵便配達員で次のコマンドを使ってrepoし、私は404を得ています。ここ

https://gitlab.gspt.net/api/v4/projects/payments/dss/repository/branches 

2つの問題:

  1. なく、私の残りのURLが正しいかどうか確認します。私のプロジェクトのidが見つかりませんでした。 gitlab UI全体をスキャンし、どこでもidのトレースを見つけることができませんでした。したがって、http urlでNAMESPACE/PROJECT_NAMEを使用していますが、これはドキュメントのどこかで見つけられます。それが正しいかどうかわからない。
  2. 私の社内のgilab管理者がhttp rest api機能を完全に無効にしているかどうかはわかりません。今までgitリポジトリをインストールして管理したことはありませんでした。

これに関するガイダンスはありますか?

答えて

1

あなたはprojects APIsearchパラメータ

次のbashスクリプトマッチしたプロジェクト名のプロジェクトIDを取得し、プロジェクトの枝を取得するための呼び出しを行うと、あなたのレポ名を検索に使用できるプロジェクトIDを取得します。

#!/bin/bash 

gitlab_host="https://gitlab.gspt.net" 
private_token="9koXpg98eAheJpvBs5tK" 
project_name="dss" 

project_id=$(curl -s "$gitlab_host/api/v3/projects?search=$project_name&private_token=$private_token" | jq '.[0].id') 

if [ "$project_id" == "null" ]; then 
    echo "error could not find project id for project name $project_name" 
    exit 1 
fi 

curl -s "$gitlab_host/api/v3/projects/$project_id/repository/branches?private_token=$private_token" | jq '.[]' 
+0

私はあなたのシェルスクリプトを試してみましたが、私はこのエラーを取得しています:それは、JSONの結果を解析するjq JSONパーサーを使用しています。 './gitlab-id-finder.sh:行7:jq:コマンドが見つかりません。 '何かをインストールする必要がありますか?ちょうど私がWindows 7を使用しているFYI – user2325154

+0

はいそれはjson結果を解析するために[jq](https://stedolan.github.io/jq/)を使用しています。利用可能なWindowsリリースがあります –

+0

Postmanで動作しています。それは多くの助け:)おかげで – user2325154

関連する問題