Làm cách nào để truy cập đầy đủ nguồn cam kết cũ trong BitBucket?


226

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?


1
Định dạng mới là gì? Bạn đang sử dụng Mercurial hay Git? Chỉ cần sử dụng máy khách Mercurial hoặc Git để cập nhật lên phiên bản cũ.
Erno

Câu trả lời:


369

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.gzbằng .zipcác tác phẩm quá.


Tôi có thể sử dụng liên kết ở trên trong thiết bị đầu cuối Android Studio để sao chép một cam kết không? Nếu vậy, bạn có thể cung cấp mã thiết bị đầu cuối cơ bản?
tccpg288

1
Tôi ước họ sẽ hiển thị điều này trên trang web của họ để nó là hiển nhiên.
cuộn

1
Tại sao nó không liên quan? Tôi vừa thử nghiệm lại (2018-08-06) và nó vẫn hoạt động. Có lẽ đó là một vấn đề với các máy chủ BitBucket "trong nhà"? Tôi đã thử nghiệm điều này trên máy chủ bitbucket.org .
Rudy Matela

nên là api.bitbucket.orgbây giờ
Alexander Mills

1
Có thể xác nhận nó vẫn hoạt động chỉ vớibitbucket.org
Vely

202

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.


2
Đây chính xác là những gì tôi cần. Một liên kết trực tiếp từ trang web của Bitbucket đến URL này vô cùng thiếu.
Johnny Oshika

Than ôi, điều này không làm việc. Hay đúng hơn là làm việc, nhưng một phần. Ví dụ: bạn có thể duyệt https://bitbucket.org/lyro/evil/src/8cbfd51như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.
Hi-Angel

Tìm thấy một cách giải quyết, đó làhg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
Hi-Angel

3
Đối với những người không thích sao chép + dán: duyệt đến một cam kết nhất định, url sẽ giống như thế https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master. Bây giờ, chỉ cần thay đổi commitsurl srcvà bạn đang duyệt toàn bộ nguồn tại cam kết này!
Peter

176

Bước 1

Bước 1


Bước 2

Bước 2


Bước 3

Bước 3


Bước 4

Bước 4


Bước cuối cùng

Bước cuối cùng


2
@ManojG Đây là một từ tôi. Vì vậy, rõ ràng có một cách để đi đến toàn bộ cây theo một cam kết nhất định, mặc dù theo một cách khá khó hiểu.
Malcolm

2
YÊU TRẢ LỜI NÀY. Lưu ý: bạn cũng có thể vào tập tin và sử dụng trình đơn thả xuống. CẢM ƠN BẠN!
mattdlockyer

3
Điều tuyệt vời hơn câu trả lời này là thực tế là chúng ta không thể làm điều đó chỉ bằng một nút bấm ... một số điều thực sự tuyệt vời ....
Nuno Gonçalves

Bước này không giải quyết được cho tôi, điều gì đã cho kết quả: câu trả lời từ @mattdlockyer, chọn một tệp, nhấp vào thả xuống, chọn một cam kết cũ hơn và sau đó quay lại liên kết cơ sở repo như hình ảnh cuối cùng từ bài đăng oscar
user2582318

1
Tất cả điều này hoạt động nhưng khi tải về nó, nó luôn luôn là cam kết mới nhất. Tôi đang làm sai hay đó là cách đó?
Jay Mehta

29

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 đó.


6
Câu trả lời này là duy nhất thực sự hoạt động. Những cái phổ biến hơn dường như đề cập đến các phiên bản cũ hơn của Bitbucket
Klas Mellbourn

9

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.

Tải xuống thẻ


1
Đây là cách dễ dàng nhất để đi. Đối với những người không thể nhận được các vấn đề về thẻ, hãy nhấp vào một cam kết cụ thể và ở trên cùng bên phải, bạn sẽ thấy nguồn xem, chi nhánh, cam kết và thẻ. Thêm thẻ của bạn ở đó, sau đó đi để tải về nó.
PGMacDesign

8

Đố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ó.



1

Bạn có thể xem nguồn của tệp lên đến một cam kết cụ thể bằng cách nối thêm ?until=<sha-of-commit>vào URL (sau tên tệp).


1

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> selfcung 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 foreachvòng lặp trên mảng $data.

Lưu ý: nếu <path_file>/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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.