2013-10-14 21 views
5

Tôi đang cố gắng tải xuống tập lệnh cài đặt của một dự án nằm trong repo được bảo vệ Github.Làm thế nào để chỉ nhận được một tập tin dạng kho lưu trữ Github PROTECTED

userrepo bên dưới được thay thế bằng thông tin chính xác. curl

Tôi đã thử:

curl -u gabipetrovay -L -o install.sh "https://raw.github.com/user/repo/master/admin/scripts/install.sh" 

Curl nhắc cho mật khẩu nhưng ngay sau khi tôi gõ ký tự đầu tiên nó đi xa hơn và tải một cái gì đó (rất nhiều JS lẽ từ Github)

tôi wget cũng đã cố gắng:

wget --user=gabipetrovay --ask-password "https://raw.github.com/user/repo/master/admin/scripts/install.sh" 

Với wget tôi có thể nhập mật khẩu hoàn chỉnh của tôi nhưng sau đó tôi nhận được một lỗi 503:

012.
Resolving raw.github.com (raw.github.com)... 199.27.73.133 
Connecting to raw.github.com (raw.github.com)|199.27.73.133|:443... connected. 
HTTP request sent, awaiting response... 503 Connection timed out 
2013-10-14 10:18:45 ERROR 503: Connection timed out. 

Làm cách nào để tải tệp install.sh? (Tôi đang chạy này từ một máy chủ Ubuntu 13.04)

+1

thể trùng lặp của [Làm thế nào tôi có thể tải về một tập tin thô duy nhất từ ​​một repo github tin bằng cách sử dụng dòng lệnh?] (Http: // stackoverflow .com/questions/18126559/how-can-i-download-a-single-nguyên-file-từ-a-riêng-github-repo-sử dụng-the-comman) –

Trả lời

0

Bạn cần phải tạo một thẻ oauth như đã giải thích ở đó: Github basic authentication

sau đó bạn có thể sử dụng lệnh sau, curl có được một url tạm thời, do đó bạn cần phải sử dụng ' -L' trong curl để làm theo các chuyển hướng:

curl -L -u <your token>:x-oauth-basic https://raw.github.com/user/repo/master/admin/scripts/install.sh 

Bạn cũng có thể sử dụng -o 'filename' để lưu nó vào đĩa

+0

Tôi đã thử điều này và điều này không hoạt động. Bạn gặp lỗi 503 (ngay cả khi có chuyển hướng) –

5

Và câu trả lời chính thức từ những kẻ Github là:

Thanks for getting in touch! For this case, you'll want to use our API to download individual files:

http://developer.github.com/v3/repos/contents/#get-contents

With this endpoint, you can get a specific file like this:

curl -u gabipetrovay -H "Accept: application/vnd.github.raw" "https://api.github.com/repos/user/repo/contents/filename" 

You'll just be prompted for your GitHub account password in this case, or you can also use an OAuth token as well. For reference, our API Getting Started Guide has a nice section on authentication:

http://developer.github.com/guides/getting-started/#authentication

Và điều này hoạt động như một sự quyến rũ!

Cảm ơn Robert @ Github

2

Bạn có thể sử dụng API V3 để có được một tập tin thô như thế này (bạn sẽ cần một mã thông báo OAuth):

curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/owner/repo/contents/path

Tất cả điều này có đi trên một dòng. Tùy chọn -O lưu tệp trong thư mục hiện tại. Bạn có thể sử dụng -o filename để chỉ định tên tệp khác.

Để có được mã thông báo OAuth làm theo hướng dẫn ở đây: https://help.github.com/articles/creating-an-access-token-for-command-line-use

này cho phép tự động hóa tốt hơn nếu bạn, nói rằng, cần phải làm điều này từ một kịch bản shell.

Tôi đã viết này lên như là một ý chính cũng như: https://gist.github.com/madrobby/9476733

Các vấn đề liên quan