Tôi không thể tìm ra hoặc tìm tài liệu về cách truy cập vào nguồn của một cam kết cũ theo định dạng Bit Xô mới. Điều này thậm chí còn có thể nữa?
Tôi không thể tìm ra hoặc tìm tài liệu về cách truy cập vào nguồn của một cam kết cũ theo định dạng Bit Xô mới. Điều này thậm chí còn có thể nữa?
Câu trả lời:
Tôi hiểu rằng bạn muốn tải xuống phiên bản cũ hơn thông qua giao diện web BitBucket mà không cần sử dụng ứng dụng khách Mercurial / Git.
Kiểm tra câu hỏi liên quan này . Trên các bình luận, có người nói rằng không có cách nào để làm điều đó. May mắn thay, điều đó không hoàn toàn đúng.
Bằng cách điều hướng trên các trang dự án BitBucket, tôi không tìm thấy liên kết nào để tải xuống một phiên bản tùy ý. Có các liên kết để tải về các thẻ cụ thể, theo định dạng:
https://bitbucket.org/owner/repository/get/v0.1.2.tar.gz
Nhưng bằng cách điều chỉnh một chút url ở trên, thay đổi tên thẻ bằng hàm băm cam kết, như:
https://bitbucket.org/owner/repository/get/A0B1C2D.tar.gz
Bạn thực sự có thể tải về một phiên bản cụ thể.
Như Rakka Rage đã đề cập trong một bình luận, thay thế .tar.gz
bằng .zip
các tác phẩm quá.
api.bitbucket.org
bây giờ
bitbucket.org
Tôi đã cố gắng tìm hiểu xem có thể duyệt mã của một cam kết trước đó như bạn có thể trên GitHub hay không và nó đã đưa tôi đến đây. Tôi đã sử dụng thông tin tôi tìm thấy ở đây và sau khi loay hoay với các url, tôi thực sự đã tìm thấy một cách để duyệt mã của các cam kết cũ.
Khi bạn duyệt mã của mình, URL sẽ giống như:
https://bitbucket.org/user/repo/src/
và bằng cách thêm một băm xác nhận vào cuối như thế này:
https://bitbucket.org/user/repo/src/a0328cb
Bạn có thể duyệt mã tại điểm cam kết đó. Tôi không hiểu tại sao không có hộp thả xuống để chọn một cam kết trực tiếp, tính năng đã có sẵn. Lạ thật.
https://bitbucket.org/lyro/evil/src/8cbfd51
nhưng nếu bạn nhập hg clone https://bitbucket.org/lyro/evil/src/8cbfd51
, bạn sẽ nhận được một số sửa đổi ngẫu nhiên, có lẽ là mới nhất.
hg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master
. Bây giờ, chỉ cần thay đổi commits
url src
và bạn đang duyệt toàn bộ nguồn tại cam kết này!
Chỉ trong trường hợp có ai ở trên thuyền của tôi, nơi không có câu trả lời nào trong số này hoạt động chính xác, đây là những gì tôi đã làm.
Có lẽ máy chủ Bitbucket trong nhà của chúng tôi được thiết lập hơi khác so với hầu hết, nhưng đây là URL mà tôi thường truy cập chỉ để xem các tệp trong nhánh chính:
https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse
Nếu tôi chọn một nhánh khác với chủ từ menu thả xuống, tôi sẽ nhận được điều này:
https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse?at=refs%2Fheads%2F<BRANCH_NAME>
Vì vậy, tôi đã thử làm điều này và nó đã làm việc:
https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse?at=<COMMIT_ID>
Bây giờ tôi có thể duyệt toàn bộ repo như tại thời điểm cam kết đó.
Câu trả lời tuyệt vời từ một vài năm trước. Bây giờ Bitbucket đã làm cho nó dễ dàng hơn.
Gắn thẻ Cam kết bạn muốn tải xuống (như được đề cập trong câu trả lời của Rudy Matela).
Sau đó đi đến Tải xuống và nhấp vào tab "Thẻ" và bạn sẽ nhận được nhiều tùy chọn để tải xuống.
Đối với bản ghi, bạn cũng có thể đồ chơi xung quanh các URL theo cách này:
Khi duyệt nguồn mới nhất, bạn có một cái gì đó như:
https://bitbucket.org/my/repo/src/latestcommithash/my.file?at=master
Chỉ cần thay đổi hàm băm cam kết và xóa tham số GET:
https://bitbucket.org/my/repo/src/wantedcommithash/my.file
Đã lên +1 @Hein A. Grønnestad ở trên: tất cả đều hoạt động, thực sự tự hỏi tại sao không có gì trong GUI để sử dụng nó.
Cách dễ nhất là nhấp vào cam kết đó và thêm thẻ vào cam kết đó. Tôi đã bao gồm thẻ 'last_commit' với cam kết này
Hơn đi đến tải xuống ở góc bên trái của điều hướng bên trong xô bit. Bấm vào tải về ở bên trái
Tôi biết đã quá muộn, nhưng với API 2.0, bạn có thể làm được
từ dòng lệnh với:
curl https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>
hoặc trong php với:
$data = json_decode(file_get_contents("https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>", true));
sau đó bạn có lịch sử của tệp của mình (từ cam kết gần đây nhất đến tệp cũ nhất):
{
"pagelen": 50,
"values": [
{
"links": {
"self": {
"href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/src/<hash>/<path_file>"
},
"meta": {
"href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/src/<HEAD>/<path_file>?format=meta"
},
"history": {
"href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<HEAD>/<path_file>"
}
},
"commit": {
"hash": "<HEAD>",
"type": "commit",
"links": {
"self": {
"href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/commit/<HEAD>"
},
"html": {
"href": "https://bitbucket.org/<user>/<repo>/commits/<HEAD>"
}
}
},
"attributes": [],
"path": "<path_file>",
"type": "commit_file",
"size": 31
},
{
"links": {
"self": {
"href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/src/<HEAD~1>/<path_file>"
},
"meta": {
"href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/src/<HEAD~1>/<path_file>?format=meta"
},
"history": {
"href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<HEAD~1>/<path_file>"
}
},
"commit": {
"hash": "<HEAD~1>",
"type": "commit",
"links": {
"self": {
"href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/commit/<HEAD~1>"
},
"html": {
"href": "https://bitbucket.org/<user>/<repo>/commits/<HEAD~1>"
}
}
},
"attributes": [],
"path": "<path_file>",
"type": "commit_file",
"size": 20
}
],
"page": 1
}
nơi values
> links
> self
cung cấp các tập tin tại thời điểm trong lịch sử mà bạn có thể lấy nó với curl <link>
hoặc file_get_contents(<link>)
.
Cuối cùng, từ dòng lệnh bạn có thể lọc với:
curl https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>?fields=values.links.self
trong php, chỉ cần tạo một foreach
vòng lặp trên mảng $data
.
Lưu ý: nếu <path_file>
có /
bạn phải chuyển đổi nó trong %2F
.
Xem tài liệu tại đây: https://developer.atlassian.com/bitbucket/api/2/reference/resource/reposearies/%7Busername%7D/%7Brepo_slug%7D/filehistory/%7Bnode%7D/%7Bpath