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

Ненавижу, что нужно просить об этом в потоке, но для жизни меня не могу найти или найти документацию о том, как получить доступ к источнику старого фиксации в новом битовом формате. Это возможно? Так расстроен!

Ответ 1

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

Ответ 2

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

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

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

и добавив хеш фиксации в конце, как это:

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

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

Ответ 3

Шаг 1

Шаг 1


Шаг 2

Шаг 2


Шаг 3

Шаг 3


Шаг 4

Шаг 4


Заключительный шаг

Окончательный шаг

Ответ 4

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

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

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

Ответ 5

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

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

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

Загрузка тегов

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

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

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

Ответ 10

Bitbucket не предоставляет эту функцию, но вы все равно можете сделать это, используя raw git.

Если ваш терминал делает "git log". Это отобразит коды фиксации и сообщение фиксации. Скопируйте код для фиксации, которую вы хотите. Затем выполните "git checkout CODE", где код - это код фиксации, который вы только что скопировали.

Вы должны получить сообщение "Head is not at commit x". В вашем локальном каталоге должна быть запущена версия, которую вы только что проверили.