私がしたいことは、GitHubからプライベートリポジトリアーカイブをダウンロードし、それを抽出し、アーカイブファイルを削除して、ダウンロードしたプロジェクト内にあるいくつかのディレクトリをコピーすることです。
私はwget
を使用しようとしましたが、自分自身を認証することはできません:
wget --header='Authorization: token MY_TOKEN_CREATED_ON_GITHUB' https://github.com/MY_USER/MY_REPO/archive/master.tar.gz -O - | tar xz
私もcURL
で試しました:
curl -i -H 'Authorization: token MY_TOKEN_CREATED_ON_GITHUB' https://github.com/MY_USER/MY_REPO/archive/master.tar.gz > file.tar.gz | tar xz
ここで承認は通過しますが、ファイルを抽出できません。
どうやってするか?
wget
を使用した解決策は次のようになります。
wget --header="Authorization: token <OAUTH-TOKEN>" -O - \
https://api.github.com/repos/<owner>/<repo>/tarball/<version> | \
tar xz --strip-components=1 && \
cp -r <dir1> <dir2> ... <dirn> <destination-dir>/
ノート:
--strip-components=1
は、GitHubで作成されたアーカイブに含まれている最上位ディレクトリを削除します。cp
(/
、<dir1>
、...、<dir2>
)を使用してコピーするディレクトリの末尾に末尾の<dirn>
を配置しないでください。また、末尾の/
が宛先の最後にあることを確認してくださいディレクトリ(<destination-dir>
)。独自の「パーソナルアクセストークン」がある場合、curlコマンドを使用して、リポジトリのブランチのアーカイブをダウンロードできます。
curl -k --header "PRIVATE-TOKEN: xxxx" https://gitlab.xxxxx/api/v4/projects/<projectID>/repository/archive?sha=630bc911c1c20283d3980dcb95fd5cb75479bb9c -o myFilename.tar.gz
ProjectIDは、リポジトリのメインページに表示されます。
SHAの値は、プルダウンから目的のブランチを選択し、SHAの右側の値をコピーした後、webUIから取得できます。以下のスクリーンショットを参照してください。
これを行うもう1つの方法は、次のようなwgetを使用することです。
wget --no-check-certificate -O myFilename.Zip --header=PRIVATE-TOKEN:xxxx "https://gitlab.xxxx/api/v4/projects/<projectID>/repository/archive.zip?sha=630bc911c1c20283d3980dcb95fd5cb75479bb9c"
お役に立てば幸いです。