Jak porównać dwie wersje w Bitbucket?

126

Mój zespół używa Bitbucket do naszego repozytorium git, a ostatnio zaczęliśmy używać funkcji pull request do recenzji kodu. Działa dobrze przy pierwszej recenzji, ale jeśli przejdzie przez wiele iteracji (to znaczy, zostaną wprowadzone zmiany i zaktualizowane żądanie ściągnięcia), chciałbym zobaczyć łącze z nowymi zmianami, które zostały wprowadzone od ostatniego przeglądu kodu.

Przyjrzałem się funkcji „porównania”, ale wygląda na to, że interfejs użytkownika może porównywać tylko gałęzie. Czy istnieje prosty sposób na uzyskanie różnicy między dwoma zatwierdzeniami?

brian.keng
źródło
Wprowadzenie do pracy z żądaniami ściągnięcia lub przeglądu na poziomie zatwierdzenia nowej funkcji w bitbuckt 4.8
surfmuggle

Odpowiedzi:

99

To tylko niewielka modyfikacja już udzielonych odpowiedzi, ale dodanie #diff na końcu zamiast #commits jest zwykle tym, czego szukam. Również, jak inni mogli wspominać, najlepsze wyniki dla mnie zwykle uzyskuje się, umieszczając nowszy commit jako pierwszy, a starszy jedną sekundę, ale to zależy od twoich szczególnych potrzeb.

https://bitbucket.org/<OWNER>/<REPO>/branches/compare/<commit-hash>..<commit-hash-older>#diff
Nocna sowa
źródło
2
Szkoda, że nie byłoby dodać trochę intuicyjny graficzny interfejs użytkownika do śledzenia popełnić wersję (podobną do Gerrit)
Dolbi
1
Próbowałem dzisiaj tej odpowiedzi bez powodzenia. Czy ktoś może sprawdzić, czy jest on nadal ważny w aktualnej wersji Bitbucket?
Martin Stålberg
Właśnie wypróbowałem to z dwoma zatwierdzeniami z projektu tortoisehg i nadal wydaje się, że działa. Oto przykładowy link: bitbucket.org/tortoisehg/thg/branches/compare/…
Night Owl
1
Działało świetnie. Wstawiłem owner/repo, skopiowałem skróty z listy zatwierdzeń, naciśnij Enter i bam. Ładny i łatwy widok różnic. 👍 (Dlaczego jednak nie jest to oczywiste w ich GUI ...)
Svish
1
@NightOwl - Czy używasz serwera Stash / bitbucket? Jeśli tak, to działa tylko na bitbucket.org - jira.atlassian.com/browse/BSERV-2550
Cinderhaze
25

Spróbuj czegoś takiego:

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

Zaczerpnięte z: https://bitbucket.org/site/master/issue/4779/ability-to-diff-between-any-two-commits

Aguardientico
źródło
1
Nie działa w wersji 4.14. Daje błąd Dead Link, gdy dodasz cokolwiek po compare/uwzględnieniu powyższego.
Juha Untinen
To samo z inną składnią wymienioną na bitbucket.org/site/master/issues/11657/ ... która podaje tylko ogólny 404 i ścieżkę pod nim.
Juha Untinen
25

Bitbucket obsługuje teraz porównywanie tagów.

https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<tag1>%0D<tag2>
Tao
źródło
1
To daje mi stronę, ale nie robi różnicy między
tagami
4
Dla potomnych to działa, ale tag1musi zaczynać się od „v” i być nowszym, tag2jest starsze. Na przykład bitbucket.org/codsen/array-includes-with-glob/branches/compare/… - odwrotnie nie zadziała i bez "v" nie zadziała - oba przypadki doprowadzą do 404.
revelt
To załatwiło sprawę. https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<TAG1>%0D<TAG2>?w=1#diffTo pokazuje różnicę i ignoruje różnice w białych znakach.
Damodar Bashyal
25

Pola wyszukiwania w rozwijanych gałęziach / tagach na stronie Porównaj na bitbucket.org obsługują teraz wklejane skróty zatwierdzeń.

Teraz możesz po prostu przejść do https://bitbucket.org/<owner>/<repo>/branches/compare/i wkleić skróty do list rozwijanych zamiast hakowania adresów URL!

w dół, a następnie wklej wartość skrótu zatwierdzenia

Alastair Wilkes
źródło
To zadziałało dla mnie, ale musiałem edytować adres URL, aby kończył się na #diff zamiast #commits, jak we wcześniejszej odpowiedzi, w przeciwnym razie nie pokazał żadnych zmian.
MikeA
@ brian.keng czy możesz oznaczyć to jako poprawną odpowiedź?
Ahmed Hasn.
10

Posiadam Bitbucket Server w wersji: v4.4.1

Odpowiedź ze mną była taka.

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

Szukałem tej odpowiedzi, ponieważ w moim projekcie używamy modułów podrzędnych git, aw żądaniach ściągnięcia widzę tylko stare zatwierdzenie sha w porównaniu z nowym zatwierdzeniem sha każdego podmodułu, który się zmienił. Nie ma linku do kliknięcia ani niczego (o czym wiem), aby przejść do tego widoku różnic. Ten adres URL pozwala mi również zobaczyć, co zmieniło się w modułach podrzędnych.

Przy okazji, jeśli ktoś zna lepszy sposób porównania dwóch zatwierdzeń w podmodułach podczas żądania ściągnięcia, daj mi znać.

santiago arizti
źródło
13
Wszystko to dla mnie, na serwerze Bitbucket w wersji 4.9.0, to pokazanie pierwszego zatwierdzenia. Nie porównuje wersji.
Jeff
@Jeff, czy próbowałeś zmienić <stare> na <new> Mogłem je pomieszać, jeśli tak, to
poprawię
1
Tak, ten sam problem. W rzeczywistości od listopada 2016 r. (W tym miesiącu) Atlassian twierdzi, że ta funkcja nie jest jeszcze obsługiwana na serwerze Bitbucket : jira.atlassian.com/plugins/servlet/mobile#issue/BSERV-2550 . Czy na pewno robi to, co myślisz, że jest w Twoim systemie?
Jeff
Okazało się, że działa to dla sudo dla tagów, biorąc skrót zatwierdzenia dla każdego tagu
tristanbailey
5

Format widoku porównawczego Bitbucket jest następujący:

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

Podany przykład ged/ruby-pg(RubyGem, biblioteka Ruby):

Porównanie dwóch wersji (od wersji 0.18.1 do wersji 0.18.2)

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

Aby porównać dwie wersje (od f97dd6c do 22a3612)

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

Juanito Fatas
źródło
4

PRZEJDŹ do repozytorium bitbucket> Oddziały wprowadź opis obrazu tutaj

Kliknij ikonę menu i porównaj

Surowy Phoujdar
źródło
0

Utwórz lekki znacznik do zmian, które chcesz porównać. git -a [zmienna] [commit_sha]

Następnie w Bitbucket, w menu porównania (tym, które wykonuje żądania ściągnięcia) po prostu porównaj z tagami.

Cyrille Cormier
źródło
0

Możesz to również zrobić w żądaniu ściągnięcia, na przykład po tym, jak ktoś wypchnie gałąź, aby naprawić wyniki recenzji. O ile mi wiadomo, nie ma jeszcze interfejsu użytkownika do tego, ale możesz wprowadzić adres URL w następujący sposób:

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

Isaac Baker
źródło
0

W wierszu polecenia

git log -p -1

To pokazuje porównanie z poprzednią wersją.

git log -p -5

Pokazuje ostatnie 5 wersji, porównując dwie kolejne wersje (n & n-1, n-1 & n-2 itd.).

Zdaję sobie sprawę, że nie jest to idealne rozwiązanie, aby pokazać bezpośrednią różnicę między dwoma konkretnymi wersjami.

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

Anirudha Singh
źródło
-4

Za pomocą terminala uruchom git na ścieżce projektu:

git diff <new commit> <old commit>

Dawny: git diff 26cf60f be5f978

Raul B Santos
źródło
2
Oto jak porównać rzeczy z git w linii poleceń; pytanie jak to zrobić w Bitbuckecie na stronie :)
Mark VY
bitbucket nie ma tych funkcji ... dlatego linia cmd jest jedynym sposobem ..
Siddharth
To była odpowiedź, którą uznałem za najbardziej użyteczną. Uzgodniono pytanie, które dotyczy bitbucket, a ta odpowiedź zapewnia rozwiązanie, które dobrze współpracuje z bitbucket, podobnie jak inne rozwiązania git.
ptsw