Как получить доступ к полному источнику старого коммита в BitBucket?


227

Я не могу выяснить или найти документацию о том, как получить доступ к источнику старого коммита в новом формате Bit Bucket. Это вообще возможно?


1
Какой новый формат? Вы используете Mercurial или Git? Просто используйте клиенты Mercurial или Git для обновления до старой версии.
Эрно

Ответы:


369

Я понимаю, что вы хотите загрузить старую версию через веб-интерфейс 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работает.


Могу ли я использовать ссылку выше в терминале Android Studio для клонирования коммита? Если да, не могли бы вы предоставить основной код терминала?
tccpg288

1
Я хотел бы, чтобы они показали это на своем сайте, чтобы это было очевидно.
катится

1
Почему это не актуально? Я только что проверил его снова (2018-08-06), и он все еще работает. Может быть, проблема с «внутренними» серверами BitBucket? Я проверил это на сервере bitbucket.org .
Руди Матела

должно быть api.bitbucket.orgсейчас
Александр Миллс

1
Могу подтвердить, что это все еще работает только сbitbucket.org
Вели

202

Я пытался выяснить, возможно ли просмотреть код предыдущего коммита, как вы можете на GitHub, и это привело меня сюда. Я использовал информацию, которую нашел здесь, и, поигравшись с URL, я действительно нашел способ просмотреть код старых коммитов.

Когда вы просматриваете свой код, URL выглядит примерно так:

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

и добавив в конце хеш коммита, вот так:

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

Вы можете просмотреть код в точке этого коммита. Я не понимаю, почему нет выпадающего списка для прямого выбора коммита, функция уже есть. Странный.


2
Это именно то, что мне было нужно. Прямая ссылка с сайта Bitbucket на этот URL крайне отсутствует.
Джонни Ошика

Увы, это не работает. Вернее работать, но частично. Например, вы можете просматривать, 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/
Привет-Ангел

3
Для тех, кто не любит копировать + вставлять: перейдите к определенному коммиту, URL будет примерно таким https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master. Теперь просто измените commitsURL-адрес на srcи вы просматриваете полный исходный код этого коммита!
Питер

176

Шаг 1

Шаг 1


Шаг 2

Шаг 2


Шаг 3

Шаг 3


Шаг 4

Шаг 4


Заключительный этап

Заключительный этап


2
@ManojG Вот один из меня. Таким образом, очевидно, есть способ добраться до целого дерева при определенном коммите, хотя и довольно запутанным способом.
Малкольм

2
ЛЮБЛЮ ЭТОТ ОТВЕТ. Примечание: вы также можете перейти к файлу и использовать раскрывающийся список. СПАСИБО!
mattdlockyer

3
Более удивительным, чем этот ответ, является тот факт, что мы не можем сделать это одним нажатием кнопки ... некоторые вещи действительно удивительны ...
Нуно Гонсалвеш

этот шаг не решил для меня, что дало результаты: ответ от @mattdlockyer, выберите файл, нажмите на выпадающий список, выберите более старый коммит, а затем вернитесь к базовой ссылке репо, как последнее изображение из сообщения Оскара
user2582318

1
Все это работает, но при загрузке это всегда последний коммит. Я делаю это неправильно или это так?
Джей Мехта

29

На всякий случай, если кто-нибудь в моей лодке, где ни один из этих ответов не работал точно, вот что я сделал

Возможно, наш собственный сервер 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>

Теперь я могу просмотреть весь репо, как это было во время этого коммита.


6
Этот ответ единственный, который действительно работает. Более популярные из них, похоже, относятся к более старым версиям Bitbucket
Клас Меллборн

9

Отличные ответы пару лет назад. Теперь Bitbucket сделал это проще.

Отметьте коммит, который вы хотите загрузить (как упомянуто в ответе Руди Мателы).

Затем перейдите в раздел «Загрузки» и перейдите на вкладку «Теги», и вы получите несколько вариантов загрузки.

Тег Загрузки


1
Это был самый простой путь. Для тех, кто не смог получить проблемы с тегами, нажмите на конкретную фиксацию, и в верхнем правом углу вы увидите источник просмотра, ветвь, фиксацию и теги. Добавьте туда свой тег, затем перейдите к его загрузке.
PGMacDesign

8

Для записи, вы также можете разыграть 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 нет ничего, чтобы использовать его.


3
  1. Самый простой способ - нажать на этот коммит и добавить к нему тег. Я включил тег 'last_commit' с этим коммитом

  2. Затем перейдите к загрузкам в левом углу боковой панели в ведре. Нажмите на загрузку в левой части

  3. Теперь нажмите на теги в навигационной панели и загрузите zip из пользовательского интерфейса. Найдите свой тег и скачайте zip

1

Вы можете просмотреть исходный файл до определенного коммита, добавив его ?until=<sha-of-commit>в URL (после имени файла).


1

Я знаю, что уже слишком поздно, но с 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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.