¿Cómo comparar dos revisiones en Bitbucket?

126

Mi equipo está utilizando Bitbucket para nuestro repositorio git y recientemente comenzamos a usar la funcionalidad de solicitud de extracción para las revisiones de código. Funciona bien en la primera revisión, pero si pasa por varias iteraciones (es decir, se realizan cambios y se actualiza la solicitud de extracción), me gustaría ver un enlace con solo los nuevos cambios que se realizaron desde la última revisión del código.

Investigué la funcionalidad de "comparar", pero parece que la interfaz de usuario solo puede comparar entre ramas. ¿Hay una manera simple de obtener una diferencia entre dos confirmaciones?

brian.keng
fuente
Introducción al trabajo con solicitudes de extracción o revisión de nivel de compromiso de una nueva función en bitbuckt 4.8
surfmuggle

Respuestas:

99

Esto es solo una ligera modificación a las respuestas ya dadas, pero agregar #diff al final en lugar de #commits es lo que estoy buscando. Además, como otros pueden haber mencionado, los mejores resultados para mí generalmente se obtienen colocando el commit más nuevo primero y el más viejo un segundo, pero eso dependerá de sus necesidades particulares.

https://bitbucket.org/<OWNER>/<REPO>/branches/compare/<commit-hash>..<commit-hash-older>#diff
Noctámbulo
fuente
2
Desearía que agregaran una interfaz
gráfica de usuario
1
Intenté esta respuesta hoy sin éxito. ¿Alguien puede verificar que sigue siendo válido con la versión actual de Bitbucket?
Martin Stålberg
Acabo de probar esto con dos commits del proyecto tortoisehg y todavía parece funcionar. Aquí hay un enlace de ejemplo: bitbucket.org/tortoisehg/thg/branches/compare/…
Night Owl
1
Funcionó muy bien. Insertó el owner/repo, copió los hash de la lista de confirmación, presione enter y bam. Bonita y fácil vista de diferencia. 👍 (Sin embargo, por qué esto no es algo obvio en su GUI ...)
Svish
1
@NightOwl - ¿Estás utilizando el servidor Stash / bitbucket? Si es así, esto solo funciona en bitbucket.org - jira.atlassian.com/browse/BSERV-2550
Cinderhaze
25

Intenta algo como:

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

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

Aguardientico
fuente
1
No funciona en la versión 4.14. Da un error de enlace muerto cuando agrega algo después de compare/incluir lo anterior.
Juha Untinen
Lo mismo con la otra sintaxis mencionada en bitbucket.org/site/master/issues/11657/… que proporciona solo un 404 genérico y la ruta debajo de él.
Juha Untinen
25

Bitbucket admite la comparación de etiquetas ahora.

https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<tag1>%0D<tag2>
Tao
fuente
1
Esto me da una página, pero no hace una diferencia entre TAGS, que es lo que estaba buscando
tristanbailey
44
Para la posteridad, funciona, pero tag1debe comenzar con "v" y ser más nuevo, tag2es más antiguo. Por ejemplo, bitbucket.org/codsen/array-includes-with-glob/branches/compare/… - al revés no funcionará y sin "v" no funcionará - ambos casos conducirán a 404.
revelt
Eso hizo el truco. https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<TAG1>%0D<TAG2>?w=1#diffEsto muestra la diferencia e ignora las diferencias de espacios en blanco.
Damodar Bashyal
25

Los campos de búsqueda en los menús desplegables de rama / etiqueta en la página Comparar en bitbucket.org ahora admiten hashes de confirmación pegados.

¡Así que ahora puedes ir https://bitbucket.org/<owner>/<repo>/branches/compare/y pegar los hash en los menús desplegables en lugar de piratear URL!

desplegable, luego pegue en hash de confirmación

Alastair Wilkes
fuente
Esto funcionó para mí, pero necesitaba editar la url para terminar en #diff en lugar de #commits, según la respuesta anterior, de lo contrario, no mostró cambios.
MikeA
@ brian.keng ¿puede marcar esto como respuesta correcta, por favor?
Ahmed Hasn.
10

Tengo Bitbucket Server, versión: v4.4.1

La respuesta conmigo fue esta.

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

Estaba buscando esta respuesta porque en mi proyecto usamos submódulos git, y en las solicitudes de extracción solo puedo ver el antiguo commit sha frente al nuevo commit sha de cada submódulo que cambió. No hay ningún enlace para hacer clic ni nada (que yo sepa) para saltar a esta vista de diferencias. Esta URL también me permite ver lo que cambió en los submódulos.

Por cierto, si alguien conoce una mejor manera de comparar dos confirmaciones en submódulos durante una solicitud de extracción, hágamelo saber.

santiago arizti
fuente
13
Todo lo que esto hace por mí, en Bitbucket Server v4.9.0, es mostrar el primer commit. No compara las revisiones.
Jeff
@Jeff, ¿intentaste cambiar <old> por <new>? Podría haberlos mezclado, si es así, corregiré mi respuesta
santiago arizti
1
Sí, el mismo problema. De hecho, a partir de noviembre de 2016 (este mes), Atlassian dice que esta característica aún no es compatible con Bitbucket Server: jira.atlassian.com/plugins/servlet/mobile#issue/BSERV-2550 . ¿Estás seguro de que está haciendo lo que crees que está haciendo en tu sistema?
Jeff
Encontré que esto funciona para un sudo para etiquetas, al tomar el hash de confirmación para cada etiqueta
tristanbailey
5

El formato de vista de comparación de Bitbucket es el siguiente:

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

Dado un ejemplo ged/ruby-pg(RubyGem, una biblioteca de rubíes):

Para comparar dos versiones (de v0.18.1 a v0.18.2)

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

Para comparar dos revisiones (de f97dd6c a 22a3612)

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

Juanito Fatas
fuente
4

VAYA a su repositorio de bitbucket> Ramas ingrese la descripción de la imagen aquí

Haga clic en el icono del menú y en comparar

Phoujdar duro
fuente
0

Cree una etiqueta ligera para las confirmaciones que desea comparar. git -a [nombre de etiqueta] [commit_sha]

Luego, en Bitbucket, en el menú de comparación (el que hace solicitudes de extracción) simplemente compare con las etiquetas.

Cyrille Cormier
fuente
0

También puede hacer esto dentro de una solicitud de extracción, digamos después de que alguien empuje a una rama para corregir los resultados de la revisión. Que yo sepa, todavía no hay una interfaz de usuario para esto, pero puede ingresar la URL de esta manera:

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

Isaac Baker
fuente
0

En el símbolo del sistema

git log -p -1

Esto muestra la comparación con la versión anterior.

git log -p -5

Esto muestra las últimas 5 revisiones, comparando dos versiones sucesivas (n & n-1, n-1 & n-2, etc.).

Me doy cuenta de que esto no es ideal para mostrar la diferencia directa entre dos versiones específicas.

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

Anirudha Singh
fuente
-4

A través de la terminal, ejecute git en la ruta de su proyecto:

git diff <new commit> <old commit>

Ex: git diff 26cf60f be5f978

Raul B Santos
fuente
2
Así es como comparar cosas con git, en la línea de comando; la pregunta era cómo hacerlo en Bitbucket, en el sitio web :)
Mark VY
bitbucket no tiene estas características .. por lo tanto, la línea cmd es la única manera ..
Siddharth
Esta fue la respuesta que encontré más útil. Convino en que la pregunta dice bitbucket y esta respuesta proporciona una solución que funciona bien con bitbucket, así como otras soluciones git.
ptsw