Bagaimana cara mengakses sumber komit lama penuh di BitBucket?

227

Saya tidak dapat menemukan atau menemukan dokumentasi tentang cara mengakses sumber komit lama dalam format Bit Bucket baru. Apakah ini mungkin lagi?

Ser Pounce
sumber
1
Apa format baru? Apakah Anda menggunakan Mercurial atau Git? Cukup gunakan klien Mercurial atau Git untuk memperbarui ke versi lama.
Erno

Jawaban:

369

Saya mengerti Anda ingin mengunduh versi yang lebih lama melalui antarmuka web BitBucket tanpa menggunakan klien Mercurial / Git.

Periksa pertanyaan terkait ini . Pada komentar, seseorang mengatakan bahwa tidak ada cara untuk melakukan itu. Untungnya, itu tidak sepenuhnya benar.

Dengan menavigasi pada halaman proyek BitBucket, saya tidak menemukan tautan untuk mengunduh versi sewenang-wenang. Ada tautan untuk mengunduh tag tertentu, dalam format:

https://bitbucket.org/owner/repository/get/v0.1.2.tar.gz

Tetapi dengan mengubah sedikit url di atas, mengubah nama tag dengan hash komit, seperti:

https://bitbucket.org/owner/repository/get/A0B1C2D.tar.gz

Anda sebenarnya dapat mengunduh versi tertentu.

Seperti yang disebutkan oleh Rakka Rage dalam komentar, menggantikan .tar.gzdengan .zipkarya juga.

Rudy Matela
sumber
Bisakah saya menggunakan tautan di atas di terminal Android Studio untuk mengkloning komit? Jika demikian, dapatkah Anda memberikan kode terminal dasar?
tccpg288
1
Saya berharap mereka akan menunjukkan ini di situs web mereka jadi itu jelas.
bergulung
1
Mengapa itu tidak relevan? Saya baru saja mengujinya lagi (2018-08-06) dan masih berfungsi. Mungkin ini masalah dengan server BitBucket "in-house"? Saya menguji ini di server bitbucket.org .
Rudy Matela
seharusnya api.bitbucket.orgsekarang
Alexander Mills
1
Dapat mengkonfirmasi itu masih berfungsi hanya denganbitbucket.org
Vely
202

Saya mencoba mencari tahu apakah mungkin untuk menelusuri kode komit sebelumnya seperti yang Anda bisa di GitHub dan itu membawa saya ke sini. Saya menggunakan informasi yang saya temukan di sini, dan setelah mengutak-atik url, saya benar-benar menemukan cara untuk menelusuri kode dari komitmen lama juga.

Saat Anda meramban kode, URL-nya seperti:

https://bitbucket.org/user/repo/src/

dan dengan menambahkan hash komit di akhir seperti ini:

https://bitbucket.org/user/repo/src/a0328cb

Anda dapat menelusuri kode pada titik komit itu. Saya tidak mengerti mengapa tidak ada kotak dropdown untuk memilih komit secara langsung, fitur sudah ada di sana. Aneh.

Hein Andre Grønnestad
sumber
2
Inilah yang saya butuhkan. Tautan langsung dari situs Bitbucket ke URL ini sangat tidak ada.
Johnny Oshika
Sayangnya, ini tidak berhasil. Atau lebih tepatnya bekerja, tetapi sebagian. Misalnya Anda dapat menjelajah https://bitbucket.org/lyro/evil/src/8cbfd51tetapi jika Anda masuk hg clone https://bitbucket.org/lyro/evil/src/8cbfd51, Anda akan mendapatkan beberapa revisi acak, mungkin yang terbaru.
Hi-Angel
Menemukan solusi, ituhg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
Hi-Angel
3
Bagi mereka yang tidak suka menyalin + menempel: browse ke komit tertentu, url akan menjadi seperti https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master. Sekarang, cukup ubah commitsurl ke srcdan Anda meramban sumber lengkap di komit ini!
Peter
176

Langkah 1

Langkah 1


Langkah 2

Langkah 2


Langkah 3

Langkah 3


Langkah 4

Langkah 4


Langkah terakhir

Langkah terakhir

Askar
sumber
2
@ MojjG Ini satu dari saya. Jadi rupanya ada cara untuk sampai ke seluruh pohon di komit tertentu, meskipun dengan cara yang agak membingungkan.
Malcolm
2
CINTA JAWABAN INI. Catatan: Anda juga dapat membuka file dan menggunakan drop down. TERIMA KASIH!
mattdlockyer
3
Lebih menakjubkan dari jawaban ini adalah kenyataan bahwa kita tidak dapat melakukannya dengan satu klik tombol ... beberapa hal benar-benar menakjubkan ....
Nuno Gonçalves
langkah ini tidak terpecahkan bagi saya, apa yang memberi hasil: jawaban dari @mattdlockyer, pilih file, klik pada drop down, pilih komit yang lebih lama dan kemudian kembali ke link basis repo seperti gambar terakhir dari oscar post
user2582318
1
Semua ini berfungsi tetapi ketika mengunduhnya, selalu merupakan komitmen terbaru. Apakah saya salah atau memang seperti itu?
Jay Mehta
29

Kalau-kalau ada orang di perahu saya di mana tidak ada jawaban yang bekerja dengan tepat, inilah yang saya lakukan.

Mungkin server Bitbucket internal kami dibuat sedikit berbeda dari kebanyakan, tapi inilah URL yang biasanya saya buka hanya untuk melihat file di cabang utama:

https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse

Jika saya memilih cabang yang berbeda dari master dari menu drop down, saya mendapatkan ini:

https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse?at=refs%2Fheads%2F<BRANCH_NAME>

Jadi saya mencoba melakukan ini dan berhasil:

https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse?at=<COMMIT_ID>

Sekarang saya dapat menelusuri seluruh repo seperti pada saat komit itu.

Brent212
sumber
6
Jawaban ini adalah satu-satunya yang benar-benar berfungsi. Yang lebih populer tampaknya merujuk ke versi Bitbucket yang lebih lama
Klas Mellbourn
9

Jawaban yang bagus dari beberapa tahun yang lalu. Sekarang Bitbucket membuatnya lebih mudah.

Tandai Komit yang ingin Anda unduh (sebagaimana disebutkan dalam jawaban oleh Rudy Matela).

Lalu buka Unduhan dan klik tab "Tag" dan Anda akan mendapatkan beberapa opsi untuk unduhan.

Tandai Unduhan

LMSingh
sumber
1
Ini adalah cara termudah untuk pergi. Bagi mereka yang tidak bisa mendapatkan masalah tag, klik komit tertentu dan di kanan atas Anda akan melihat sumber tampilan, cabang, komit, dan tag. Tambahkan tag Anda di sana, lalu buka untuk mengunduhnya.
PGMacDesign
8

Sebagai catatan, Anda juga dapat mempermainkan URL dengan cara ini:

Saat menjelajahi sumber terbaru, Anda memiliki sesuatu seperti: https://bitbucket.org/my/repo/src/latestcommithash/my.file?at=master

Cukup ganti hash komit dan hapus parameter GET: https://bitbucket.org/my/repo/src/wantedcommithash/my.file

Harus +1 @Hein A. Grønnestad di atas: semuanya berfungsi, benar-benar bertanya-tanya mengapa tidak ada dalam GUI untuk menggunakannya.

neemzy
sumber
1

Anda dapat melihat sumber file hingga komit tertentu dengan menambahkan ?until=<sha-of-commit>URL (setelah nama file).

Eugen
sumber
1

Saya tahu ini sudah terlambat, tetapi dengan API 2.0 Anda dapat melakukannya

dari baris perintah dengan:

curl https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>

atau dalam php dengan:

$data = json_decode(file_get_contents("https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>", true));

maka Anda memiliki riwayat file Anda (dari komit terbaru hingga komit tertua):

{
"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
}

di mana values> links> selfmenyediakan file pada saat dalam sejarah yang dapat Anda mengambilnya dengan curl <link>atau file_get_contents(<link>).

Akhirnya, dari baris perintah Anda dapat memfilter dengan:

 curl https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>?fields=values.links.self

di php, buat foreachloop pada array $data.

Catatan: jika <path_file>memiliki /Anda harus mengubahnya dalam %2F.

Lihat dokumen di sini: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/filehistory/%7Bnode%7D/%7Bpath%7D

tormec
sumber