Como acessar a fonte completa de confirmação antiga no BitBucket?


227

Não consigo descobrir ou encontrar a documentação sobre como acessar a fonte de um commit antigo no novo formato Bit Bucket. Isso ainda é possível?


1
Que novo formato? Você está usando Mercurial ou Git? Basta usar os clientes Mercurial ou Git para atualizar para uma versão antiga.
Erno

Respostas:


369

Entendo que você deseja fazer o download de uma versão mais antiga através da interface da Web BitBucket sem usar um cliente Mercurial / Git.

Verifique esta questão relacionada . Nos comentários, alguém diz que não há como fazer isso. Felizmente, isso não é totalmente verdade.

Navegando nas páginas do projeto BitBucket, não encontrei nenhum link para baixar uma versão arbitrária. Existem links para baixar tags específicas, no formato:

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

Mas, ajustando um pouco a URL acima, alterando o nome da tag pelo hash de confirmação, como:

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

Você pode realmente baixar uma versão específica.

Como mencionado por Rakka Rage em um comentário, substituindo .tar.gzpor .zipobras também.


Posso usar o link acima no terminal do Android Studio para clonar uma confirmação? Se sim, você poderia fornecer o código básico do terminal?
tccpg288

1
Eu gostaria que eles mostrassem isso em seu site, por isso era óbvio.
rola

1
Por que isso não é relevante? Acabei de o testar novamente (06/08/2018) e ainda funciona. Talvez seja um problema com os servidores BitBucket "internos"? Eu testei isso no servidor bitbucket.org .
Rudy Matela

deveria ser api.bitbucket.orgagora #
Alexander Mills

1
Pode confirmar que ele ainda funciona com apenasbitbucket.org
Vely

202

Eu estava tentando descobrir se é possível procurar o código de um commit anterior como você pode no GitHub e isso me trouxe aqui. Usei as informações que encontrei aqui e, depois de mexer nos URLs, também encontrei uma maneira de navegar pelo código de confirmações antigas.

Quando você está navegando no seu código, o URL é algo como:

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

e adicionando um hash de confirmação no final como este:

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

Você pode procurar o código no ponto desse commit. Não entendo por que não há uma caixa suspensa para escolher um commit diretamente, o recurso já está lá. Estranho.


2
Isso é exatamente o que eu precisava. Um link direto do site da Bitbucket para este URL está faltando.
Johnny Oshika

Infelizmente, isso não funciona. Ou melhor, trabalho, mas parcialmente. Por exemplo, você pode navegar, https://bitbucket.org/lyro/evil/src/8cbfd51mas se você entrar hg clone https://bitbucket.org/lyro/evil/src/8cbfd51, receberá uma revisão aleatória, talvez a mais recente.
Hi-Angel

Encontrado uma solução, éhg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
Hi-Angel

3
Para quem não gosta de copiar e colar: navegue até um determinado commit, o URL será algo parecido https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master. Agora, basta alterar commitso URL para srce você está navegando na fonte completa neste commit!
Peter

176

Passo 1

Passo 1


Passo 2

Passo 2


etapa 3

etapa 3


Passo 4

Passo 4


Passo final

Passo final


2
@ManojG Aqui está um de mim. Então, aparentemente, há uma maneira de chegar à árvore inteira em um determinado commit, embora de uma maneira bastante confusa.
Malcolm

2
AMO ESTA RESPOSTA. Nota: você também pode acessar o arquivo e usar a lista suspensa. OBRIGADO!
Mattdlockyer # 24/16

3
Mais surpreendente do que esta resposta é o fato de que não podemos fazê-lo com o clique de um botão ... algumas coisas são realmente incríveis ...
Nuno Gonçalves

esta etapa não resolveu para mim, o que deu resultados: a resposta de @mattdlockyer, selecione um arquivo, clique no menu suspenso, selecione um commit mais antigo e retorne ao link base do repo como a última imagem do post do oscar
user2582318

1
Tudo isso funciona, mas quando o download é sempre o último commit. Estou fazendo errado ou é assim?
Jay Mehta

29

Caso alguém esteja no meu barco, onde nenhuma dessas respostas funcionou exatamente, eis o que eu fiz.

Talvez o nosso servidor Bitbucket interno esteja configurado de maneira um pouco diferente da maioria, mas aqui está a URL que eu normalmente acessaria apenas para exibir os arquivos no ramo mestre:

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

Se eu selecionar uma ramificação diferente da master no menu suspenso, obtenho o seguinte:

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

Então, eu tentei fazer isso e funcionou:

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

Agora posso procurar o repositório inteiro como estava no momento da confirmação.


6
Essa resposta é a única que realmente funciona. Os mais populares parecem se referir a versões mais antigas do Bitbucket
Klas Mellbourn

9

Ótimas respostas de alguns anos atrás. Agora, o Bitbucket tornou mais fácil.

Marque o Commit que você deseja baixar (conforme mencionado na resposta de Rudy Matela).

Então vá para Downloads e clique na guia "Tags" e você terá várias opções para download.

Download de tags


1
Este foi facilmente o caminho mais simples a seguir. Para aqueles que não conseguiram obter problemas de tags, clique em um commit específico e, no canto superior direito, você verá a fonte, o ramo, o commit e as tags. Adicione sua tag e vá para o download.
PGMacDesign 7/11

8

Para o registro, você também pode brincar com URLs desta maneira:

Ao navegar na fonte mais recente, você tem algo como: https://bitbucket.org/my/repo/src/latestcommithash/my.file?at=master

Simplesmente altere o hash de confirmação e remova o parâmetro GET: https://bitbucket.org/my/repo/src/wantedcommithash/my.file

Cheguei a +1 em Hein A. Grønnestad acima: está tudo funcionando, realmente me perguntando por que não há nada na GUI para usá-lo.



1

Você pode visualizar a origem do arquivo até uma confirmação específica, acrescentando ?until=<sha-of-commit>a URL (após o nome do arquivo).


1

Eu sei que é tarde demais, mas com a API 2.0 você pode fazer

da linha de comando com:

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

ou em php com:

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

então você tem o histórico do seu arquivo (da confirmação mais recente à mais antiga):

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

onde values> links> selffornece o arquivo no momento na história que você pode recuperá-la com curl <link>ou file_get_contents(<link>).

Eventualmente, na linha de comando, você pode filtrar com:

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

em php, basta fazer um foreachloop na matriz $data.

Nota: se <path_file>tiver um, /você deve convertê-lo %2F.

Consulte o documento aqui: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/filehistory/%7Bnode%7D/%7Bpath%7D

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.