Як порівняти дві версії в Bitbucket?


126

Моя команда використовує Bitbucket для нашого git-сховища, і ми нещодавно починаємо використовувати функцію запиту на тягу для огляду коду. Це добре працює на першому огляді, але якщо він проходить через кілька ітерацій (тобто зміни вносяться і запит оновлений оновлений), я хотів би побачити посилання лише з новими змінами, які були внесені після останнього огляду коду.

Я вивчив функцію "порівняння", але інтерфейс виглядає так, що він може порівнювати лише між гілками. Чи є простий спосіб отримати різницю між двома комітами?


Вступ до роботи із запитами на виклик або перегляньте рівень нової функції в bitbuckt 4.8
surfmuggle

Відповіді:


99

Це лише незначна зміна відповідей, які вже були надані, але додавання #diff до кінця замість #commiss - це те, що я шукаю. Крім того, як інші, можливо, згадували, найкращі результати для мене, як правило, отримуються, поставивши нову фіксацію на першу, а старшу - на другу, але це залежатиме від ваших потреб.

https://bitbucket.org/<OWNER>/<REPO>/branches/compare/<commit-hash>..<commit-hash-older>#diff

2
Я б хотів, щоб вони додали інтуїтивно зрозумілими переглядачами (схожі на Герріт)
dolbi

1
Я сьогодні спробував цю відповідь без успіху. Чи може хтось перевірити, що він все ще дійсний у поточній версії Bitbucket?
Мартін Стральберг

Я щойно спробував це з двома документами від проекту tortoisehg, і все одно, здається, він працює. Ось приклад посилання: bitbucket.org/tortoisehg/thg/branches/compare/…
Ніч Сова

1
Працювали чудово. Вставив owner/repo, скопіював хеші зі списку фільтрів, натиснути клавішу Enter та bam. Гарний і легкий розгляд. 👍 (Чому це не очевидна річ у їх GUI, однак ...)
Svish

1
@NightOwl - Ви використовуєте сервер Stash / bitbucket? Якщо так, це працює лише на bitbucket.org - jira.atlassian.com/browse/BSERV-2550
Cinderhaze

25

Спробуйте щось на кшталт:

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

Взяте з: https://bitbucket.org/site/master/issue/4779/ability-to-diff-between-any-two-commissions


1
Не працює у версії 4.14. Помилка мертвого посилання, коли ви додаєте що-небудь після compare/включення вищезазначеного.
Juha Untinen

Так само і з іншим синтаксисом, згаданим у bitbucket.org/site/master/isissue/11657/…, який дає просто загальний 404 та шлях під ним.
Juha Untinen

25

Bitbucket підтримує порівняння тегів зараз.

https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<tag1>%0D<tag2>

1
Це дає мені сторінку, але не робить різниці між TAGS, що саме я шукав
tristanbailey

4
Для нащадків вона працює, але tag1повинна починатися з "v" і бути новішою, tag2є старшою. Наприклад, bitbucket.org/codsen/array-includes-with-glob/branches/compare/… - інший спосіб не обійдеться, і без "v" це не буде працювати - обидва випадки призведуть до 404.
revelt

Це зробило трюк. https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<TAG1>%0D<TAG2>?w=1#diffЦе показує відмінності та ігнорує відмінності пробілів.
Дамодар Башіял

25

Поля пошуку у спадному вікні гілки / тегів на сторінці Порівняння на bitbucket.org тепер підтримують вкладені хеші фіксації.

Тож тепер ви можете просто перейти https://bitbucket.org/<owner>/<repo>/branches/compare/та вставити хеші у спадні місця замість злому URL!

випадає, а потім вставте хеш


Це працювало для мене, але мені потрібно було відредагувати URL-адресу, щоб він закінчувався в #diff замість #commiss, як було зазначено в попередній відповіді, інакше зміни не показали.
MikeA

@ brian.keng чи можете ви позначити це правильною відповіддю?
Ахмед Хасн.

10

У мене є сервер Bitbucket, версія: v4.4.1

Відповідь зі мною була така.

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

Я шукав цю відповідь, тому що в моєму проекті ми використовуємо підмодулі git, і в запитах на виклик я бачу лише старий фіксатор ша та новий фіксатор шага кожного підмодуля, який змінився. Немає посилання на клацання чи щось (що я знаю), щоб перейти до цього розгляду. Цей URL дозволяє мені також переглянути те, що змінилося в підмодулях.

До речі, якщо хтось знає кращий спосіб порівняння двох комітетів у підмодулях під час запиту на виклик, будь ласка, дайте мені знати.


13
Все це робить для мене на Bitbucket Server v4.9.0 - це показ першої передачі. Він не порівнює ревізії.
Джефф

@Jeff Ви намагалися переключити <old> на <new> Я, можливо, змішав їх, якщо так, то я виправлю свою відповідь
santiago arizti

1
Так, те саме питання. Насправді станом на листопад 2016 року (у цьому місяці) Atlassian стверджує, що ця функція ще не підтримується в Bitbucket Server: jira.atlassian.com/plugins/servlet/mobile#issue/BSERV-2550 . Ви впевнені, що це робить те, що, на вашу думку, є у вашій системі?
Джефф

Я виявив, що це працює над судо для тегів, взявши хеш-
код

5

Формат подання порівняння Bitbucket наступний:

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

ged/ruby-pgНаведений приклад (RubyGem, бібліотека з рубіном):

Для порівняння двох випусків (від v0.18.1 до v0.18.2)

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

Для порівняння двох версій (від f97dd6c до 22a3612)

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




0

Створіть світлий тег для комітетів, які ви хочете порівняти. git -a [ім'я тегу] [commit_sha]

Потім у Bitbucket, у меню порівняння (те, що потрібно робити запити), просто порівняйте з тегами.


0

Ви також можете зробити це всередині запиту на виклик, скажімо, після того, як хтось натисне на гілку, щоб виправити результати огляду. Наскільки мені відомо, для цього ще немає інтерфейсу користувача, але ви можете ввести URL так:

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


0

У командному рядку

git log -p -1

Це показує порівняння з попередньою версією.

git log -p -5

Це показує останні 5 версій, порівнюючи дві послідовні версії (n & n-1, n-1 & n-2 тощо).

Я усвідомлюю, що це не ідеально, щоб показувати пряму різницю між двома конкретними версіями.

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


-4

Через термінал запустіть git на своєму проектному шляху:

git diff <new commit> <old commit>

Наприклад: git diff 26cf60f be5f978


2
Це те, як порівняти речі з git, у командному рядку; питання полягало в тому, як це зробити в Bitbucket, на веб-сайті :)
Позначте VY

Бітбукет не має цих можливостей .. отже, cmd-лінія - єдиний спосіб ..
Siddharth,

Це була відповідь, яку я вважав найкориснішою. Погоджено питання про стан бітбукета, і ця відповідь дає рішення, яке добре працює з бітбукетом, як і інші рішення git.
ptsw
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.