Hub documentation

Pull request'ы и Discussions

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Pull request'ы и Discussions

Hub Pull requests and Discussions позволяют пользователям вносить вклад в репозитории от сообщества. Pull requests и discussions работают одинаково для всех типов репозиториев.

В общих чертах, цель состоит в том, чтобы создать более простую версию PR и Issues других хостингов git (например, GitHub):

  • в процессе не используются форки: участники отправляют изменения в специальную ветку ref непосредственно в исходный репозиторий.
  • нет чёткого разграничения между обсуждениями и PR: по сути, они одинаковы, поэтому отображаются в одних и тех же списках.
  • они оптимизированы для ML (т.е. для репозиториев моделей/датасетов/spaces), а не для произвольных репозиториев.

Обратите внимание, что Pull Requests и обсуждения можно включить или отключить в настройках репозитория

Список

Перейдя на вкладку community в любом репозитории, вы можете просмотреть все обсуждения и pull request'ы. Также можно отфильтровать список, чтобы видеть только открытые.

Просмотр

Страница Discussion позволяет просматривать комментарии от разных пользователей. Если это Pull Request, вы можете увидеть все изменения, перейдя на вкладку Files changed.

Редактирование названия обсуждения / запроса на слияние

Если вы создали PR или обсуждение, являетесь автором репозитория или имеете права на запись в него, вы можете изменить заголовок обсуждения, нажав на кнопку с карандашом.

Закрепить обсуждение / запрос на слияние

Если у вас есть права на запись в репозиторий, вы можете закрепить обсуждения и Pull Requests. Закреплённые обсуждения отображаются вверху списка всех обсуждений.

Заблокировать обсуждение / запрос на слияние

Если у вас есть права на запись в репозиторий, вы можете заблокировать обсуждения или Pull Requests. После блокировки обсуждения предыдущие комментарии остаются видимыми, а пользователи не смогут добавлять новые комментарии.

Редактирование и модерация комментариев

Если вы написали комментарий или имеете права на запись в репозитории, вы можете отредактировать содержимое комментария через контекстное меню в правом верхнем углу поля комментария.

После редактирования комментария над ним появится новая ссылка. Эта ссылка ведёт на историю изменений.

Вы также можете скрыть комментарий. Скрытие комментария необратимо, и никто больше не сможет увидеть его содержимое или отредактировать его.

См. также модерацию, чтобы узнать, как сообщить о неуместном комментарии.

Можно ли использовать Markdown и LaTeX в моих комментариях и обсуждениях?

Да! Вы можете использовать Markdown для форматирования комментариев. Кроме того, вы можете использовать LaTeX для набора математических формул: они будут отрисованы с помощью KaTeX перед обработкой в Markdown.

Для уравнений LaTeX необходимо использовать следующие разделители:

  • $$ ... $$ для режима отображения
  • \\(...\\) для режима inline (без пробелов между косыми чертами и скобками).

Как управлять Pull requests локально?

Допустим, номер вашего PR — 42.

git fetch origin refs/pr/42:pr/42
git checkout pr/42
# Do your changes
git add .
git commit -m "Add your change"
git push origin pr/42:refs/pr/42

Черновой режим

Draft mode — это статус по умолчанию при создании нового Pull request с нуля в «Advanced mode». При таком статусе другие участники понимают, что над вашим Pull request ещё ведётся работа, и он не может быть объединён. Когда ваша ветка готова, просто нажмите кнопку «Publish», чтобы изменить статус Pull request на «Open». Обратите внимание, что после публикации вернуться в режим draft невозможно.

Удаление ссылки Pull request

Когда Pull request закрывается или сливается, вы можете удалить связанную с ним git-ссылку (ветку, хранящую коммиты PR), чтобы освободить место на диске.

После закрытия или слияния PR внизу обсуждения появится уведомление с оценкой объёма хранилища, который можно освободить, удалив ref. Нажмите кнопку «Delete ref», чтобы безвозвратно удалить git ref PR и освободить место в хранилище.

Это особенно полезно, если основная ветка была сжата (squash), а файлы удалены позже. Эти файлы остаются в истории ветки PR, даже если они не были добавлены самим PR, занимая место в хранилище, которое можно освободить.

Удаление PR-ссылки необратимо. После удаления вы больше не сможете получить или выполнить checkout коммитов PR локально.

Расширенное использование pull request

Где в репозитории git хранятся изменения?

Наши Pull requests не используют форки и ветки, а вместо них — собственные «ветки», называемые refs, которые хранятся непосредственно в исходном репозитории.

Git References — это внутренняя механика git, которая уже хранит теги и ветки.

Преимущество использования пользовательских refs (например, refs/pr/42) вместо веток заключается в том, что они по умолчанию не загружаются людьми (включая «владельца» репозитория), клонирующими репозиторий, но при этом их можно запросить по требованию.

Получение всех Pull requests: для магов git 🧙‍♀️

Вы можете настроить локальный refspec, чтобы получить все Pull requests:

  1. Получить
git fetch origin "refs/pr/*:refs/remotes/origin/pr/*"
  1. создать локальную ветку, отслеживающую ref
git checkout pr/{PR_NUMBER}
# for example: git checkout pr/42
  1. Если вы внесли локальные изменения, чтобы отправить их в ветку PR:
git push origin pr/{PR_NUMBER}:refs/pr/{PR_NUMBER}
# for example: git push origin pr/42:refs/pr/42
Update on GitHub