Я не могу выяснить или найти документацию о том, как получить доступ к источнику старого коммита в новом формате Bit Bucket. Это вообще возможно?
Я не могу выяснить или найти документацию о том, как получить доступ к источнику старого коммита в новом формате Bit Bucket. Это вообще возможно?
Ответы:
Я понимаю, что вы хотите загрузить старую версию через веб-интерфейс BitBucket без использования клиента Mercurial / Git.
Проверьте этот связанный вопрос . В комментариях кто-то говорит, что сделать это невозможно. К счастью, это не совсем так.
Навигация по страницам проекта BitBucket, я не нашел ссылки для загрузки произвольной версии. Есть ссылки для скачивания определенных тегов в формате:
https://bitbucket.org/owner/repository/get/v0.1.2.tar.gz
Но, немного изменив URL выше, изменив имя тега на хеш коммита, например:
https://bitbucket.org/owner/repository/get/A0B1C2D.tar.gz
Вы можете скачать конкретную версию.
Как отметил Rakka Rage в комментарии, замена .tar.gz
также .zip
работает.
api.bitbucket.org
сейчас
bitbucket.org
Я пытался выяснить, возможно ли просмотреть код предыдущего коммита, как вы можете на GitHub, и это привело меня сюда. Я использовал информацию, которую нашел здесь, и, поигравшись с URL, я действительно нашел способ просмотреть код старых коммитов.
Когда вы просматриваете свой код, URL выглядит примерно так:
https://bitbucket.org/user/repo/src/
и добавив в конце хеш коммита, вот так:
https://bitbucket.org/user/repo/src/a0328cb
Вы можете просмотреть код в точке этого коммита. Я не понимаю, почему нет выпадающего списка для прямого выбора коммита, функция уже есть. Странный.
https://bitbucket.org/lyro/evil/src/8cbfd51
но если вы введете hg clone https://bitbucket.org/lyro/evil/src/8cbfd51
, вы получите случайную ревизию, возможно, самую последнюю.
hg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master
. Теперь просто измените commits
URL-адрес на src
и вы просматриваете полный исходный код этого коммита!
На всякий случай, если кто-нибудь в моей лодке, где ни один из этих ответов не работал точно, вот что я сделал
Возможно, наш собственный сервер Bitbucket настроен немного иначе, чем большинство, но вот URL-адрес, на который я бы обычно шел, чтобы просмотреть файлы в основной ветке:
https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse
Если я выберу ветвь, отличную от основной, из выпадающего меню, я получу следующее:
https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse?at=refs%2Fheads%2F<BRANCH_NAME>
Я попытался сделать это, и это сработало:
https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse?at=<COMMIT_ID>
Теперь я могу просмотреть весь репо, как это было во время этого коммита.
Отличные ответы пару лет назад. Теперь Bitbucket сделал это проще.
Отметьте коммит, который вы хотите загрузить (как упомянуто в ответе Руди Мателы).
Затем перейдите в раздел «Загрузки» и перейдите на вкладку «Теги», и вы получите несколько вариантов загрузки.
Для записи, вы также можете разыграть URL-адреса следующим образом:
При просмотре последнего источника, у вас есть что-то вроде:
https://bitbucket.org/my/repo/src/latestcommithash/my.file?at=master
Просто измените хеш коммита и удалите параметр GET:
https://bitbucket.org/my/repo/src/wantedcommithash/my.file
Добрался до +1 @ Hein A. Grønnestad выше: все работает, очень интересно, почему в GUI нет ничего, чтобы использовать его.
Самый простой способ - нажать на этот коммит и добавить к нему тег. Я включил тег 'last_commit' с этим коммитом
Затем перейдите к загрузкам в левом углу боковой панели в ведре. Нажмите на загрузку в левой части
Я знаю, что уже слишком поздно, но с API 2.0 вы можете сделать
из командной строки с помощью:
curl https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>
или в php с:
$data = json_decode(file_get_contents("https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>", true));
тогда у вас есть история вашего файла (от самого последнего коммита до самого старого):
{
"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
}
где values
> links
> self
предоставляет файл в данный момент в истории , которую вы можете получить его с помощью curl <link>
или file_get_contents(<link>)
.
В конце концов, из командной строки вы можете отфильтровать с помощью:
curl https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>?fields=values.links.self
в php просто сделайте foreach
цикл в массиве $data
.
Примечание: если <path_file>
есть, /
вы должны конвертировать в %2F
.
Смотрите документ здесь: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/filehistory/%7Bnode%7D/%7Bpath%7D