2012-04-06 28 views
14

Tôi cần khả năng tải xuống ứng dụng của mình tại các thẻ cụ thể, nhưng tôi không thể tìm thấy giải pháp làm việc cho việc này. Tải xuống tarballs dựa trên thẻ git có vẻ hứa hẹn nhưng tôi không thể làm cho nó hoạt động bằng cách sử dụng Curl. Tôi đã thử những điều sau đây nhưng tất cả tôi nhận được trở lại là nguồn cho trang github 404.Gặp sự cố khi tải xuống kho lưu trữ Git từ Private Repo

curl -sL https://github.com/$ACCOUNT/$PRIVATE_REPO/tarball/0.2.0.257m?login=$MY_USER_NAME&token=$MY_TOKEN > 0.2.0.257m.tar 
+0

Bạn đã thử cùng một lược đồ URL trên repo công khai chưa? – CharlesB

+0

Bạn đã thử dùng wget chưa? Hoặc chỉ cần sử dụng git để sao chép mã từ một thẻ cụ thể? –

Trả lời

26

Đối với repo công cộng, bạn có this gist niêm yết một số ví dụ:

wget --no-check-certificate https://github.com/sebastianbergmann/phpunit/tarball/3.5.5 -O ~/tmp/cake_phpunit/phpunit.tgz 

Đối với một repo tin, hãy thử đi qua thông tin quan trọng của bạn trong một bài đăng chỉ thị:

wget --quiet --post-data="login=${login}&token=${token}" --no-check-certificate https://github.com/$ACCOUNT/$PRIVATE_REPO/tarball/0.2.0.257m 

Hoặc sử dụng một lệnh curl như trong câu hỏi SO "git equivalent to svn export or github workaround", cũng được giải thích chi tiết tuyệt vời trong:
"A curl tutorial using GitHub's API" .


Các OP Steven Jp báo cáo đã làm công việc curl lệnh:

Lệnh curl thức kết thúc tìm kiếm một cái gì đó như thế này:

curl -sL --user "${username}:${password}" https://github.com/$account/$repo/tarball/$tag_name > tarball.tar 

(trong nhiều dòng cho dễ đọc)

curl -sL --user "${username}:${password}" 
    https://github.com/$account/$repo/tarball/$tag_name 
    > tarball.tar 
+3

Liên kết thứ hai của bạn đã giúp tôi làm việc. lệnh curl cuối cùng đã kết thúc tìm kiếm một cái gì đó như thế này 'curl -sL --user" $ {username}: $ {password} "https://github.com/$account/$repo/tarball/$tag_name> tarball.tar ' –

+0

@Steven_JP Tuyệt vời. Tôi đã bao gồm lệnh của bạn trong câu trả lời cho khả năng hiển thị nhiều hơn. – VonC

+0

Cảm ơn sự giúp đỡ của bạn –

11

Sau khi tạo một access token,

bạn có thể sử dụng wget:

wget --output-document=<version>.tar.gz \ 
    https://api.github.com/repos/<owner>/<repo>/tarball/<version>?access_token=<OAUTH-TOKEN> 

hoặc curl:

curl -L https://api.github.com/repos/<owner>/<repo>/tarball/<version>?access_token=<OAUTH-TOKEN> \ 
    > <version>.tar.gz 

Thông tin thêm có thể được tìm thấy trong GitHub's API reference for archive links.

0

Đăng nhập vào Org cá nhân của bạn trên Github.com, sau đó đi vào đây để tạo thẻ của bạn: https://github.com/settings/applications#personal-access-tokens

Khi cố gắng Curl vào Org cá nhân của bạn, sử dụng như sau:

curl --header 'Authorization: token ADDACCESSTOKENHERE' \ 
--header 'Accept: application/vnd.github.v3.raw' \ 
--remote-name \ 
--location https://api.github.com/repos/ORG/PROJECT/contents/FILE 

Thay thế những gì trong CAPS với thông tin của bạn ...

+0

Đối với một số lý do, tôi đã có vấn đề với việc gửi nhiều tiêu đề với curl để Github API để tải về một tài sản nhị phân, khi một tiêu đề là cho auth.Nó trả về phản hồi XML của "Chỉ một cơ chế xác thực được cho phép; chỉ có tham số truy vấn Thuật toán X-Amz, tham số chuỗi truy vấn Chữ ký hoặc tiêu đề Cấp phép phải được chỉ định". Nhưng nếu tôi thay đổi auth từ một tiêu đề để tham số chuỗi truy vấn, thì nó hoạt động. Vì vậy, chỉ đề cập đến điều này quirk. – David

+0

Không hoạt động cho tôi, in 'Không tìm thấy' – zaitsman

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