Jak uzyskać dostęp do pełnego źródła starego zatwierdzenia w BitBucket?

226

Nie mogę znaleźć ani znaleźć dokumentacji na temat dostępu do źródła starego zatwierdzenia w nowym formacie Bit Bucket. Czy to w ogóle możliwe?

Ser Pounce
źródło
1
Jaki nowy format? Czy używasz Mercurial lub Git? Wystarczy użyć klientów Mercurial lub Git, aby zaktualizować do starej wersji.
Erno,

Odpowiedzi:

369

Rozumiem, że chcesz pobrać starszą wersję za pośrednictwem interfejsu internetowego BitBucket bez użycia klienta Mercurial / Git.

Sprawdź to powiązane pytanie . W komentarzach ktoś mówi, że nie ma na to sposobu. Na szczęście nie jest to do końca prawda.

Nawigując na stronach projektu BitBucket, nie znalazłem linku do pobrania dowolnej wersji. Istnieją linki do pobrania określonych tagów w formacie:

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

Ale poprawiając nieco powyższy adres URL, zmieniając nazwę znacznika za pomocą skrótu zatwierdzenia, na przykład:

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

Możesz pobrać konkretną wersję.

Jak wspomniano w komentarzu Rakka Rage , zastępując .tar.gzgo .ziprównież dziełami.

Rudy Matela
źródło
Czy mogę użyć powyższego linku w terminalu Android Studio, aby sklonować zatwierdzenie? Jeśli tak, czy możesz podać podstawowy kod terminala?
tccpg288,
1
Chciałbym, żeby pokazali to na swojej stronie internetowej, więc było to oczywiste.
rzuca
1
Dlaczego to nie ma znaczenia? Właśnie przetestowałem to ponownie (2018-08-06) i nadal działa. Może to problem z „wewnętrznymi” serwerami BitBucket? Przetestowałem to na serwerze bitbucket.org .
Rudy Matela,
powinno być api.bitbucket.orgteraz
Alexander Mills
1
Potwierdzam, że nadal działa tylkobitbucket.org
Vely
202

Próbowałem dowiedzieć się, czy możliwe jest przeglądanie kodu wcześniejszego zatwierdzenia, tak jak to możliwe w GitHub, i to mnie tu przywiodło. Wykorzystałem informacje, które tu znalazłem, a po tym, jak zacząłem bawić się z adresami URL, faktycznie znalazłem sposób na przeglądanie kodu starych zatwierdzeń.

Podczas przeglądania kodu adres URL przypomina:

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

i dodając hash zatwierdzenia na końcu w ten sposób:

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

Możesz przeglądać kod w punkcie tego zatwierdzenia. Nie rozumiem, dlaczego nie ma rozwijanego pola do bezpośredniego wyboru zatwierdzenia, funkcja jest już dostępna. Dziwne.

Hein Andre Grønnestad
źródło
2
Właśnie tego potrzebowałem. Bardzo brakuje bezpośredniego linku ze strony Bitbucket do tego adresu URL.
Johnny Oshika
Niestety, to nie działa. A raczej praca, ale częściowo. Na przykład możesz przeglądać, https://bitbucket.org/lyro/evil/src/8cbfd51ale jeśli wejdziesz hg clone https://bitbucket.org/lyro/evil/src/8cbfd51, otrzymasz losową wersję, być może najnowszą.
Cześć Anioł,
Znaleziono obejście, tohg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
Hi-Angel,
3
Dla tych, którzy nie lubią kopiować i wklejać: przejdź do określonego zatwierdzenia, adres URL będzie podobny https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master. Teraz wystarczy zmienić commitsadres URL srci przeglądasz pełne źródło tego zatwierdzenia!
Peter,
176

Krok 1

Krok 1


Krok 2

Krok 2


Krok 3

Krok 3


Krok 4

Krok 4


Ostatni krok

Ostatni krok

Askar
źródło
2
@ManojG Oto jeden ode mnie. Najwyraźniej istnieje sposób, aby dostać się do całego drzewa przy pewnym zatwierdzeniu, choć w dość mylący sposób.
Malcolm
2
UWIELBIAM ODPOWIEDŹ. Uwaga: możesz także przejść do pliku i skorzystać z menu rozwijanego. DZIĘKUJĘ CI!
mattdlockyer
3
Bardziej zdumiewające niż ta odpowiedź jest fakt, że nie możemy tego zrobić jednym kliknięciem ... niektóre rzeczy są naprawdę niesamowite ....
Nuno Gonçalves
ten krok nie został dla mnie rozwiązany, co dało wyniki: odpowiedź od @mattdlockyer, wybierz plik, kliknij listę rozwijaną, wybierz starsze zatwierdzenie, a następnie wróć do podstawowego łącza repo, jak ostatnie zdjęcie z postu
Oscara
1
Wszystko to działa, ale po pobraniu jest to zawsze najnowsze zatwierdzenie. Czy robię to źle, czy właśnie tak?
Jay Mehta,
29

Na wypadek, gdyby ktoś był na mojej łodzi, gdzie żadna z tych odpowiedzi nie zadziałała dokładnie, oto co zrobiłem.

Być może nasz wewnętrzny serwer Bitbucket jest skonfigurowany nieco inaczej niż większość, ale oto adres URL, do którego normalnie chodziłbym, aby wyświetlić pliki w gałęzi master:

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

Jeśli z rozwijanego menu wybiorę inną gałąź niż master, otrzymam:

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

Próbowałem to zrobić i zadziałało:

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

Teraz mogę przeglądać całe repo w momencie zatwierdzenia.

Brent212
źródło
6
Ta odpowiedź jest jedyną, która faktycznie działa. Bardziej popularne wydają się odnosić do starszych wersji Bitbucket
Klas Mellbourn
9

Świetne odpowiedzi sprzed kilku lat. Teraz Bitbucket to ułatwił.

Oznacz zobowiązanie, które chcesz pobrać (jak wspomniano w odpowiedzi Rudy Matela).

Następnie przejdź do Pobranych i kliknij kartę „Tagi”, a otrzymasz wiele opcji pobierania.

Pobieraj tagi

LMSingh
źródło
1
To był najprostszy sposób. Dla tych, którzy nie byli w stanie uzyskać problemów z tagami, kliknij konkretne zatwierdzenie, aw prawym górnym rogu zobaczysz źródło, gałąź, zatwierdzenie i tagi. Dodaj tam swój tag, a następnie przejdź do pobrania.
PGMacDesign,
8

Dla przypomnienia, możesz także bawić się wokół adresów URL w ten sposób:

Przeglądając najnowsze źródło, masz coś takiego: https://bitbucket.org/my/repo/src/latestcommithash/my.file?at=master

Wystarczy zmienić skrót zatwierdzenia i usunąć parametr GET: https://bitbucket.org/my/repo/src/wantedcommithash/my.file

Muszę dać +1 @ Hein A. Grønnestad powyżej: wszystko działa, naprawdę zastanawiam się, dlaczego nie ma nic w GUI, by z niego skorzystać.

neemzy
źródło
1

Możesz wyświetlić źródło pliku aż do określonego zatwierdzenia, dołączając go ?until=<sha-of-commit>do adresu URL (po nazwie pliku).

Eugen
źródło
1

Wiem, że jest za późno, ale z API 2.0 możesz to zrobić

z wiersza poleceń za pomocą:

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

lub w php z:

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

następnie masz historię swojego pliku (od ostatniego zatwierdzenia do najstarszego):

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

gdzie values> links> selfzapewnia plik w tym momencie w historii, które można pobrać go z curl <link>lub file_get_contents(<link>).

Ostatecznie z wiersza poleceń możesz filtrować za pomocą:

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

w php, po prostu wykonaj foreachpętlę na tablicy $data.

Uwaga: jeśli <path_file>ma /, musisz go przekonwertować %2F.

Zobacz dokument tutaj: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/filehistory/%7Bnode%7D/%7Bpath%7D

Tormec
źródło