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?
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?
Odpowiedzi:
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.gz
go .zip
również dziełami.
api.bitbucket.org
teraz
bitbucket.org
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.
https://bitbucket.org/lyro/evil/src/8cbfd51
ale jeśli wejdziesz hg clone https://bitbucket.org/lyro/evil/src/8cbfd51
, otrzymasz losową wersję, być może najnowszą.
hg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master
. Teraz wystarczy zmienić commits
adres URL src
i przeglądasz pełne źródło tego zatwierdzenia!
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.
Ś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.
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ć.
Najprostszym sposobem jest kliknięcie tego zatwierdzenia i dodanie znacznika do tego zatwierdzenia. Do tego zatwierdzenia dołączyłem tag „last_commit”
Następnie przejdź do plików do pobrania w lewym rogu bocznej nawigacji w segmencie bitów. Kliknij opcję pobierania po lewej stronie
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
> self
zapewnia 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 foreach
pę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