Como comparar duas revisões no Bitbucket?

126

Minha equipe está usando o Bitbucket em nosso repositório git e recentemente começamos a usar a funcionalidade de solicitação de recepção para revisões de código. Ele funciona bem na primeira revisão, mas se passar por várias iterações (ou seja, alterações forem feitas e solicitação de recebimento atualizada), eu gostaria de ver um link com apenas as novas alterações feitas desde a última revisão de código.

Eu olhei para a funcionalidade "comparar", mas a interface do usuário parece que só pode comparar entre os ramos. Existe uma maneira simples de obter uma diferença entre dois commits?

brian.keng
fonte
Intro para trabalhar com solicitações de pull ou revisão comprometer-level um novo recurso no bitbuckt 4.8
surfmuggle

Respostas:

99

Esta é apenas uma pequena modificação nas respostas já dadas, mas adicionar #diff ao final em vez de #commits geralmente é o que estou procurando. Além disso, como outros já mencionaram, os melhores resultados para mim são geralmente obtidos colocando o commit mais recente em primeiro e o segundo mais antigo, mas isso depende de suas necessidades específicas.

https://bitbucket.org/<OWNER>/<REPO>/branches/compare/<commit-hash>..<commit-hash-older>#diff
Coruja noturna
fonte
2
Eu gostaria que eles pudessem acrescentar alguma interface gráfica intuitiva para acompanhar cometer revisão (semelhante ao gerrit)
DOLBI
1
Eu tentei esta resposta hoje sem sucesso. Alguém pode verificar se ainda é válido com a versão atual do Bitbucket?
Martin Stålberg
Eu apenas tentei isso com dois commits do projeto tortoisehg e ele ainda parece funcionar. Aqui está um exemplo de link: bitbucket.org/tortoisehg/thg/branches/compare/…
Night Owl
1
Trabalhou muito bem. Inserido owner/repo, copiado os hashes da lista de confirmação, pressione enter e bam. Vista agradável e fácil do diff. 👍 (Por que isso não é uma coisa óbvia em sua GUI no entanto ...)
Svish
1
@NightOwl - Você está usando o servidor Stash / bitbucket? Em caso afirmativo, isso só funciona no bitbucket.org - jira.atlassian.com/browse/BSERV-2550
Cinderhaze
25

Tente algo como:

https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<commit1>..<commit2>#commits

Retirado de: https://bitbucket.org/site/master/issue/4779/ability-to-diff-between-any-two-commits

Aguardientico
fonte
1
Não funciona na versão 4.14. Dá um erro de link inativo quando você adiciona algo depois de compare/incluir o acima.
Juha Untinen 06/08/19
O mesmo com a outra sintaxe mencionada em bitbucket.org/site/master/issues/11657/…, que fornece apenas um 404 genérico e o caminho sob ele.
Juha Untinen 6/08/19
25

O Bitbucket suporta a comparação de tags agora.

https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<tag1>%0D<tag2>
Tao
fonte
1
Isso me dá uma página, mas não fazer uma comparação entre as tags, que é o que eu estava procurando
tristanbailey
4
Para a posteridade, funciona, mas tag1deve começar com "v" e ser mais novo, tag2é mais antigo. Por exemplo, bitbucket.org/codsen/array-includes-with-glob/branches/compare/… - o contrário não funcionará e sem "v" não funcionará - ambos os casos levarão a 404.
revelt
Isso fez o truque. https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<TAG1>%0D<TAG2>?w=1#diffIsso mostra o diff e ignora as diferenças de espaço em branco.
Damodar Bashyal
25

Os campos de pesquisa nas listas suspensas de ramificações / tags na página Comparar no bitbucket.org agora suportam hashes de confirmação colados.

Então agora você pode simplesmente ir https://bitbucket.org/<owner>/<repo>/branches/compare/e colar os hashes nas listas suspensas, em vez de invadir a URL!

suspenso e cole no hash de confirmação

Alastair Wilkes
fonte
Isso funcionou para mim, mas eu precisava editar o URL para terminar em #diff em vez de #commits, conforme resposta anterior, caso contrário não mostrava alterações.
mikea
@ brian.keng você pode marcar isso como resposta correta, por favor?
Ahmed Hasn.
10

Eu tenho o Bitbucket Server, versão: v4.4.1

A resposta comigo foi essa.

http://<path-to-my-server>/projects/<project-name>/repos/<repo-name>/commits/<old>?to=<new>

Eu estava procurando por essa resposta, porque no meu projeto usamos sub-módulos git, e em solicitações pull só posso ver o commit sha antigo versus o novo commit sha de cada sub-módulo que foi alterado. Não há um link para clicar ou qualquer coisa (que eu saiba) para pular para essa visualização diferencial. Esse URL também permite ver o que mudou nos submódulos.

Btw, se alguém souber uma maneira melhor de comparar dois commits em submódulos durante uma solicitação pull, entre em contato.

santiago arizti
fonte
13
Tudo isso para mim, no Bitbucket Server v4.9.0, é mostrar o primeiro commit. Não compara as revisões.
Jeff
@ Jeff fez você tente alternar <antigo> para <new> eu poderia ter misturado-los, se assim for, então eu vou corrigir minha resposta
santiago Arizti
1
Sim, mesmo problema. De fato, em novembro de 2016 (este mês), a Atlassian está dizendo que esse recurso ainda não é suportado no Bitbucket Server: jira.atlassian.com/plugins/servlet/mobile#issue/BSERV-2550 . Tem certeza de que está fazendo o que acha que está no seu sistema?
Jeff
Encontrei este trabalho por um sudo para tags, tomando o hash para cada tag comprometer
tristanbailey
5

O formato de visualização de comparação do Bitbucket é o seguinte:

https://bitbucket.org/<owner>/<repo>/branches/compare/<new>%0D<old>

Dado um exemplo ged/ruby-pg(RubyGem, uma biblioteca de ruby):

Para comparar dois releases (da v0.18.1 para a v0.18.2)

https://bitbucket.org/ged/ruby-pg/branches/compare/v0.18.2%0Dv0.18.1

Para comparar duas revisões (de f97dd6c a 22a3612)

https://bitbucket.org/ged/ruby-pg/branches/compare/22a361201fd1d387d59a066b179124694a446f38%0Df97dd6cb4f34da6a62c4339887249115c7c25b9c

Juanito Fatas
fonte
4

Vá para o seu repositório de bitbucket> Ramos insira a descrição da imagem aqui

Clique no ícone do menu e compare

Harsh Phoujdar
fonte
0

Crie uma etiqueta leve para os commit (s) que você deseja comparar. git -a [tagname] [commit_sha]

Em seguida, no Bitbucket, no menu de comparação (o único a fazer solicitações de recebimento), basta comparar com as tags.

Cyrille Cormier
fonte
0

Você também pode fazer isso dentro de uma solicitação pull, digamos, depois que alguém faz um push para uma filial para corrigir as descobertas da revisão. Que eu saiba, ainda não existe uma interface do usuário para isso, mas você pode inserir o URL assim:

https://<bitbucket-server>/projects/<PROJECT>/repos/<REPO>/pull-requests/<PR-NUM>/<commit-hash>?since=<commit-hash-older>

Isaac Baker
fonte
0

No prompt de comando

git log -p -1

Isso mostra a comparação com a versão anterior.

git log -p -5

Isso mostra as últimas 5 revisões, comparando duas versões sucessivas (n & n-1, n-1 & n-2, etc).

Sei que isso não é ideal para mostrar diferença direta entre duas versões específicas.

Ref. https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History

Anirudha Singh
fonte
-4

Via terminal, execute o git no caminho do seu projeto:

git diff <new commit> <old commit>

Ex: git diff 26cf60f be5f978

Raul B Santos
fonte
2
Isto é como comparar as coisas com o git, na linha de comando; a questão era como fazê-lo em Bitbucket, no site :)
Mark VY
bitbucket não tem estas características .. linha daí cmd é a única maneira ..
Siddharth
Essa foi a resposta que achei mais útil. Concordou que a pergunta indica o bitbucket e esta resposta fornece uma solução que funciona bem com o bitbucket e outras soluções git.
ptsw