Chúng tôi cần phải tìm nạp một zipball của một kho lưu trữ riêng tư. Đối với những người dùng công cộng, việc này khá dễ dàng thông qua API GitHub hoặc theo cách thủ công (https://github.com/user/repo/zipball/master). Nhưng những gì về repos tư nhân? Không rõ ràng làm thế nào để làm điều đó ngay cả khi có mã thông báo oAuth.Có anyway để lập trình lấy một zipball của repo github tư nhân?
Trả lời
New Alternative
Bởi vì câu trả lời chấp nhận được không làm việc nữa, tôi nghĩ tôi sẽ giải thích làm thế nào tôi đã có thể làm điều đó với những thay đổi mới trong API github.
Các Tải Api mới liên kết
Trước tiên, tôi tìm thấy thông tin về tải các kho lưu trữ ở đây: https://developer.github.com/v3/repos/contents/#get-archive-link
Công Repo
Nếu đó là một repo nào thì nó là rất dễ dàng ... bạn có thể làm:
curl -L https://api.github.com/repos/pengwynn/octokit/tarball > octokit.tar.gz
Riêng Repo
Nếu đó là một repo riêng, bạn cần tạo mã thông báo oAuth bằng cách đi tới hồ sơ của bạn rồi chọn "Ứng dụng". (https://github.com/settings/applications) Tôi đã tạo một mã thông báo cá nhân.
Sau đó, sử dụng các hướng dẫn trên trang sau tôi phát hiện ra như thế nào để có được repo tin rằng bạn có quyền: https://developer.github.com/v3/#authentication
Full Mã
Như thế này
curl -H "Authorization: token ab499f3b..." \ -L https://api.github.com/repos/godzilla/my_priv_repo/tarball > wut.tar.gz
Be đảm bảo thay thế ab499f3b...
bằng mã thông báo thực của bạn.
Tôi dường như không gặp sự cố khi tải một tệp zipball từ các bản repos riêng tư để tải xuống. Tôi sử dụng cùng một định dạng mà bạn đã chỉ định và nó hoạt động hoàn hảo.
Tôi sử dụng OAuth2 để nhận các kho lưu trữ nhưng tôi tạo liên kết cho khối zip bằng định dạng bạn đã cung cấp. Here is the application Tôi làm điều này.
Nếu bạn đang tìm kiếm mã thông báo OAuth2, chỉ cần sử dụng định dạng GitHubt API v3, nó khá đơn giản. Mặc dù điều này không phù hợp với vấn đề của bạn một cách chính xác:
This là làm thế nào tôi nhận được một thẻ OAuth2 từ GitHub cho this chrome extension
CẬP NHẬT
@jayarjo I build the URL here on line 202. Tôi chỉ xây dựng URL giống như URL bạn đã chỉ định, mã thông báo OAuth2 thậm chí không được sử dụng cho nó. Tất cả mã thông báo của tôi cho phép tôi làm là tìm nạp tất cả dữ liệu cá nhân của người dùng trước khi tôi tạo đánh dấu. Nhưng nó hoạt động không có vấn đề gì ...
Tôi nghĩ lý do tôi thực sự có thể tải xuống zipball là vì URL thực sự là https://github.com/ * và vì tôi hiện đang đăng nhập vì OAuth2 tôi có quyền nhận đến URL đó - nơi có vẻ như bạn không nhận được lỗi 404.
Bạn có thể thử gửi yêu cầu tới trang và nếu bạn nhận được thông báo lỗi nhắc người dùng đăng nhập trước, khi bạn yêu cầu zipball, bạn sẽ không gặp vấn đề gì.
Thật lạ ... Tôi gặp lỗi "không tìm thấy" mỗi lần tôi thử. Ngoài ra khi sử dụng cùng một định dạng tôi đã chỉ định không chắc chắn nơi để đặt mã thông báo ở đó? .. Bạn có thể liên kết dòng mã cụ thể nơi bạn làm điều này không? – jayarjo
@jayarjo Cập nhật câu trả lời của tôi - về cơ bản người dùng phải đăng nhập để URL có sẵn cho họ. Sau đó, bạn sẽ không nhận được một 404 – jjNford
Nhưng tôi lấy mã thông báo (tôi có nghĩa là tôi có nó khi tôi thử url đó). Nhưng đây là tất cả những gì bạn làm và nó hoạt động? Có lẽ tôi bỏ qua một cái gì đó đơn giản ở đây ... – jayarjo
với CURL:
curl -L -F "login=$USER" -F "token=$TOKEN" https://github.com/$USER/$REPO/$PKGTYPE/$BRANCHorTAG
nơi $TOKEN
là mã thông báo API trong hồ sơ của github của bạn, không phải là một dấu hiệu OAuth2 sử dụng để giao tiếp với các APIv3.
$USER
là tài khoản người dùng mà mã thông báo được kết nối với, không nhất thiết là tổ chức/người dùng khác mà repo thuộc về. Trường hợp thứ hai của $USER
là tài khoản người dùng/tài khoản repo.
$REPO
là tên của kho tin
$PKGTYPE
là tarball hoặc zipball và $BRANCHorTAG
là một chi nhánh, giống như bậc thầy, hoặc một tên tag cho một cam kết.
Ví dụ đầu tiên của $USER
phải có quyền truy cập vào repo thuộc trường hợp thứ hai là $USER
.
Tôi không thể tìm thấy tài liệu này ở bất kỳ đâu, vì vậy tôi cũng có một chút viết về nó nếu bạn muốn bất cứ điều gì chi tiết hơn.
Không chắc chắn nếu điều này hoạt động nữa: http://stackoverflow.com/questions/10418596/cant-find-api-token-in-github –
Bạn có thể sử dụng Phương pháp xác thực cơ bản hoặc Mã thông báo. Xem https://help.github.com/articles/downloading-files-from-the-command-line để biết thêm chi tiết.
tôi đi qua cùng một vấn đề và điều này làm việc cho tôi (tính đến tháng 2 năm 2015):
curl -O -J -L -u $YOUROAUTHKEY:x-oauth-basic https://github.com/$USER/$REPO/archive/master.zip
Các ouath như một giải pháp tiêu đề không làm việc cho tôi nhưng những gì làm việc là nhồi nhét chìa khóa vào tên người dùng và loại chỉ định. Sau đó nó đưa ra 302 để chuyển hướng với liên kết thích hợp.
Lệnh Verbose thực sự đã giúp tôi gỡ rối xem thông tin đăng nhập tôi đang sử dụng có được chấp nhận hay không (404 vs 401)
- 1. Nhân bản một Github riêng tư repo
- 2. Nhân bản một phiên bản cũ hơn của github repo
- 3. Xác thực Github: cách sử dụng Github làm Maven repo khi repo là riêng tư
- 4. Github readme image nhúng trong repo riêng tư?
- 5. C# ví dụ về tải GitHub repo tin lập trình
- 6. Thiết lập Git trên EC2 để kéo từ GitHub repo
- 7. Xóa Wiki của GitHub repo
- 8. Yêu cầu kéo GitHub từ riêng tư đến repo công khai có thể?
- 9. Tự động phản chiếu một repo GitHub
- 10. Làm thế nào để thiết lập một repo gương trên GitHub
- 11. Có thể kéo từ một repo và đẩy đến một repo khác không?
- 12. Thêm dự án Xcode vào github repo?
- 13. Github: truy cập chỉ đọc vào một repo riêng
- 14. Làm thế nào để ngã ba một repo không GitHub trên GitHub?
- 15. NET Reflection thiết lập sở hữu tư nhân
- 16. Có an toàn để xóa một ngã ba của một repo GitHub, khi bản gốc đề cập đến tôi?
- 17. Có thể thiết lập github, codeplex hoặc code.google.com riêng tư không?
- 18. cách công khai là một repo công cộng github?
- 19. Lấy ClientId của một nút XPages lập trình
- 20. Làm thế nào để hỗ trợ nhiều gói npm riêng tư sống trong một repo git?
- 21. Làm cách nào tôi có thể thanh toán một số repo Github riêng bằng cách sử dụng Jenkins
- 22. chuyển tài khoản github riêng tư sang tài khoản mới
- 23. Thiết lập một Github Commit RSS feed
- 24. Làm cách nào để giả lập một trường riêng tư?
- 25. Làm thế nào để gửi yêu cầu kéo từ một repo nhân bản?
- 26. Làm thế nào để ẩn các thành viên tư nhân của một lớp học?
- 27. Cập nhật github repo của tôi được chia ra khỏi một dự án khác
- 28. Đặt giá trị của lĩnh vực tư nhân
- 29. Các trang Github có được tạo tự động ở ngã ba của một repo có chi nhánh gh-trang không?
- 30. Lập trình phát triển một nhân vật trong matplotlib
"Zipball" này là gì? –
Đó là tệp zip. – CMCDragonkai