2013-11-26 13 views
18

Tôi đang sử dụng API này để cập nhật một tập tin trên repo của tôi, nó đòi hỏi tôi phải có một blob SHA hợp lệ cho một tập tin mà tôi muốn cập nhật:Làm thế nào để tìm thấy một tập tin Github 's SHA blob

http://developer.github.com/v3/repos/contents/

Làm cách nào để tìm đốm màu SHA cho tệp cụ thể? Giả sử trong testrepo của tôi trong tài khoản thử nghiệm ở đây, blob SHA cho tệp test.txt là gì?

https://github.com/testacc01/testrepo01

Cảm ơn bạn rất nhiều!

Trả lời

10

Tài liệu để cập nhật tệp chỉ định rằng bạn sẽ cần phải cung cấp SHA cho tệp bạn sẽ thay thế. Cách dễ nhất là truy vấn github cho điều đó. Ví dụ:

> curl https://api.github.com/repos/testacc01/testrepo01/contents/test.txt 
{ 
    "name": "test.txt", 
    "path": "test.txt", 
    "sha": "4f8a0fd8ab3537b85a64dcffa1487f4196164d78", 
    "size": 13, 
… 

Vì vậy, bạn có thể xem SHA nằm trong trường "sha" của phản hồi JSON. Sử dụng điều đó khi bạn xây dựng yêu cầu cập nhật tệp bằng phiên bản mới. Sau khi bạn đã cập nhật thành công tệp, tệp sẽ có một SHA mới mà bạn sẽ cần phải yêu cầu trước khi có thể cập nhật lại. (Trừ khi, tôi đoán, cập nhật tiếp theo của bạn đi vào một chi nhánh khác nhau.)

+0

cảm ơn rằng công trình cho tôi, tôi quên rằng SHA sẽ được tự động cập nhật sau khi tập tin được cập nhật. – Kiddo

+0

Tôi không thể tìm thấy trong tài liệu API v3 của GitHub có chức năng băm SHA cụ thể mà họ đang sử dụng để tạo các SHA1, SHA256, v.v. (để tôi có thể tự xác minh nội dung tệp). Tôi tin rằng git sử dụng SHA-1 cho băm cam kết nhưng nó không rõ ràng với tôi mà hàm băm GitHub đang sử dụng cho nội dung tập tin băm. Tôi đã mở một vé với họ yêu cầu thông tin này. –

0

Nếu bạn sử dụng GraphQL API v4, bạn có thể sử dụng sau đây để tìm ra sha của một tập tin cụ thể:

{ 
    repository(owner: "testacc01", name: "testrepo01") { 
    object(expression: "master:test.txt") { 
     ... on Blob { 
     oid 
     } 
    } 
    } 
} 

Try it in the explorer

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