Знайдіть запит на виклик у Github, де спочатку створювались коміти


171

Запити на підтягування чудово підходять для розуміння масштабного роздуму щодо зміни або набору змін, внесених до репо. Читання запитів на виклик - це чудовий спосіб швидко "підробити" проект, оскільки замість невеликих атомних змін джерела ви отримуєте більші групи логічних змін. Аналогічно організації рядків у вашому коді у відповідні "строфи" для полегшення читання.

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


1
+1 Це також корисно, якщо ви розпрощалися з проектом і у вас сидить старе робоче відділення, і ви більше не пам’ятаєте, чи коли-небудь ви робили для нього піар.
Стів Клей

Відповіді:


225

Можна просто перейти до github та ввести SHA на панель пошуку, переконайтесь, що ви вибрали посилання "Випуски" зліва.

ОНОВЛЕНО 13 липня 2017 року

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


Приклад пошуку PR, натиснувши на посилання на комітет

Якщо у вас є SHA-зобов’язання і більше нічого, і ви не хочете копати його, просто додайте /commit/[commit SHA]до URL-адреси репо, і ви побачите сторінку фіксації, за допомогою посилання PR, якщо вона існує. Наприклад, якщо ША є 52797a7a3b087231e4e391e11ea861569205aaf4 і репо https://github.com/glimmerjs/glimmer-vm , а потім перейти до https://github.com/glimmerjs/glimmer-vm/commit/52797a7a3b087231e4e391e11ea861569205aaf4


Я не можу змусити це працювати з коротким SHA, як e4077951це все ще працює для вас?
Метт Сандерс

@RustyToms це працює, але коли я шукав хеш комітів, як ви згадали, [ github.com/wso2/carbon-kernel/… він надає мені два запити на витягнення, обидва об'єднали ту саму комісію з майстром. За такого сценарію, що нам слід обрати як запит на
витяг,

@RustyToms, як ми можемо досягти цього через API
Kasun Siyambalapitiya

1
@marathon є ще простіший спосіб зробити це зараз, я
оновлю

1
Якщо немає посилання на PR, чи можу я зробити висновок, що не було PR? Тобто, фіксація робилася безпосередньо на гілці (як правило master)?
Ерік

53
git config --add remote.origin.fetch +refs/pull/*/head:refs/remotes/origin/pull/*
git fetch origin
git describe --all  --contains <COMMIT>

Якщо потрібно, змініть originім'я пульта, який вказує на сховище github, до якого було б надіслано запит на виклик. Першу команду потрібно виконати лише один раз для будь-якого віддаленого пристрою, а друга, як правило, буде виконано при отриманні інших оновлень.

Це призведе до того, що git отримає інформацію про запити на витяг разом із фактичними гілками. Вони відображатимуться як гілки віддаленого відстеження origin/pull/123. Як тільки це буде зроблено, ви можете скористатися git describeпараметрами --allта --contains , щоб показати першу гілку, на яку посилається посилання.

Однак це не спрацює, якщо комісія, яку ви шукаєте, насправді є модифікованою версією комітету з запиту на виклик, наприклад, якщо зміни були перевстановлені на іншу роботу або особа, яка здійснює злиття, вирішила внести деякі зміни.


Я припускаю, що це призводить до завантаження всіх комісій у відхилених ПР. Немає способу отримати доступ до списку pull/*/headкомітетів без крапель? Як би "очистити" після цього (перенастроїти джерела)?
Стів Клей

1
Це чудово знати; Я не мав уявлення, що GitHub відстежує їх як фактичні об'єкти Git, але це має ідеальний сенс. BTW Ви мали на увазі використовувати "вгору за течією" замість "походження" у своїй команді config?
Tobias J

1
@TobyJ Використання upstreamсправді було помилкою. Я скопіював це з репозиторію, який мав таку конфігурацію, де був названий пульт, upstreamі пропустив це явище при зміні його, щоб використовувати більш поширене originяк ім'я віддаленого. Я редагував відповідь, щоб виправити це.
qqx

Дякую! Але це так складно. Я хотів би, щоб у веб-інтерфейсі було посилання на містити запит на потяг.
Даніель Дарабос

fwiw ви також можете спробувати використовувати refs/remotes/origin/pr/*замістьrefs/remotes/origin/pull/*
elaichi

21

З 13 жовтня 2014 року це має бути зрозумілим:

Наприклад:

Ви можете бачити файл hakimel/reveal.js/plugin/markdown/markdown.js, мій внесок тепер посилається на PR # 734, з якого він виник.

PR від внеску

Це пов’язано із пов’язуванням об'єднаних запитів на витяг із комітетів :

Ми включаємо гілки, що містять гілки та теги на сторінках фіксації, щоб дати вам більше контексту щодо змін. Тепер, комісії у відділенні за замовчуванням сховища також покажуть вам запит на витяг, який їх запровадив.

погодитися з посиланням на PR!

У запиті на виклик ви можете побачити дискусію навколо того, чому було введено комісію, і отримати більш чітке уявлення про причину зміни.

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


коли я шукав хеш комітів, як ви згадали, [ github.com/wso2/carbon-kernel/… він надає мені два запити на витягнення, обидва об'єднали ту саму комісію з майстром. За такого сценарію, що нам слід обрати як запит на
витяг,

@KasunSiyambalapitiya Не впевнений: ви можете поставити нове запитання для цього. Я б пішов із самим останнім.
VonC

2
чи можемо ми отримати це на APIрівні?
Касун Сіямбалапітія

@KasunSiyambalapitiya Добре запитання. Не знаю. Я не бачу цього посилання в developer.github.com/v3/repos/commits/#get-a-single-commit
VonC

@esp Цікаво. Я бачу список PR, але не їх зобов'язання SHA1 відзначають їх інтеграцію.
VonC


3

У мене була ця сама проблема і написав помічник bash pr_for_sha, задокументований тут:

http://joey.aghion.com/find-the-github-pull-request-for-a-commit/

Зателефонуйте так, pr_for_sha <COMMIT>і це відкриє відповідну сторінку запиту на тягу github у веб-переглядачі.


2
Це рішення передбачає, що найближчим злиттям після фіксації є злиття, яке містить фіксацію, що не обов'язково завжди має місце.
Джейсон Денні

@JasonDenney Дотримуючись вашої уваги в даній галузі чи вчасно?
LeZuse

Хм, це було деякий час тому, але я думаю, я мав на увазі час. Скажімо, у понеділок ви берете команду "X" у відділенні A, у вівторок ви берете команду у відділенні B і об'єднуєте гілку B в master, у середу ви зливаєте гілку A з master. Якщо ви використовували цей скрипт для пошуку, перебуваючи на головній гілці, для якої піктограма PR виконувала "X", я впевнений, що він неправильно скаже вам відділення B. Хоча двічі перевірте на собі.
Джейсон Денні

Не вдається отримати git logкоманду для роботи. git log --merges --ancestry-path --oneline 66100ab0..master- fatal: ambiguous argument '66100ab0..master': unknown revision or path not in the working tree.-git version 2.25.0
Джанфранко П.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.