Download a GitLab private repository

丶灬走出姿态 提交于 2019-12-17 22:40:36

问题


I want to use curl to download my private repo in GitLab. I know I can use the Gitlab API, but for some reason, It doesn't work.

Is this possible? When I try to do it this way, it always returns the login page.


回答1:


This is possible, just follow these steps:

  1. First, you have to create a "Personal Access Token":

    1. Go to Your Profile > Settings > Access Tokens.
    2. Enter a name for your "Personal Access Token".
    3. Check "api Access the authenticated user's API"

    4. Click "Create personal access token"

    5. The page will reload and save your new token.
    6. Make sure you save the token somewhere safe, you won't be able to view it again.

  2. Now that you have your "Personal Access Token", you need to get your project id to use the API:

    1. Go to https://gitlab.com/api/v3/projects?private_token=XXXXXXXXXXXXXXXXXXXX (replace the Xs with your new token)
    2. Get your project's id from the json.

  3. Now you can call:

    wget -O your_project.tar.gz https://gitlab.com/api/v3/projects/0000000/repository/archive?private_token=XXXXXXXXXXXXXXXXXXXX

And that'll download your project as a .tar.gz file.




回答2:


You can use the private token that is yours (found in "profile settings") to access any resource. Just browse to the repository file you want to download, copy the "raw" file link and append ?private_token=...

Example:

curl https://git.local/user1/myrepo/raw/master/myfile.txt?private_token=ahgiretherghaeoi



回答3:


You can, but you need to authenticate yourself (as in "Gitlab API: How to generate the private token")

curl http://gitlab.server/api/v3/session --data 'login=myUser&password=myPass'

Then with the private token:

curl --header "PRIVATE-TOKEN: QVy1PB7sTxfy4pqfZM1U" "http://example.com/api/v3/projects"

Or, in your case, get the repository files:

GET /projects/:id/repository/files

Or, download directly one file.




回答4:


If you need to do this in a CI run and your private repo is on the same server, you should be able to use git submodules to clone other repos at the same time. Using the ${CI_JOB_TOKEN} is another option since GitLab 8.12.



来源:https://stackoverflow.com/questions/24463229/download-a-gitlab-private-repository

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!