Какой подход Git для публикации очереди исправлений? - PullRequest
20 голосов
/ 16 февраля 2011

Я привык к Mercurial mq расширение , чтобы поддерживать набор пользовательских патчей поверх апстрима. Они могут быть опубликованы в виде отдельного репозитория, кроме вышестоящего. Теперь в git я использую частные ветки и rebase, и он работает хорошо, пока я не хочу поделиться своими патчами с кем-то еще.

В Mercurial очередь исправлений является независимым хранилищем и может публиковаться как обычно. Bitbucket даже предлагает функцию очереди исправлений, чтобы связать ее с родительским репозиторием. В Git, если я публикую частную ветку с моими патчами, я теряю возможность перебазировать их больше (если не нарушаю слияния), но патчи нужно время от времени обновлять.

Из другой вопрос SO Я обнаружил, что в мире Git StGit предлагается в качестве эквивалента для mq. Он похож на mq, но как мне опубликовать очередь патчей с StGit?

(stg publish, похоже, имеет отступ для создания просто новой «дружественной к объединению» ветки, а не для публикации самих патчей)

Каковы другие подходы к публикации очередей исправлений в Git?

Ответы [ 4 ]

8 голосов
/ 21 февраля 2011

Подведем итоги ответов и комментариев. С git существует два подхода к публикации небольших пользовательских модификаций через удаленный апстрим:

  • забудьте rebase, опубликуйте ветку и при необходимости добавьте новые
  • объявите, что ветка перебазирует, просто перебазируйте и опубликуйте (pro: чистая история, contra: может быть болью, которую кто-то еще может постоянно использовать, пример: linux-next)

Пока что рабочий процесс чистой очереди исправлений не представляется возможным с git, но guilt , похоже, очень близок к mq, даже именам команд. Он не допускает управляемую версией (и публикуемую) очередь исправлений.

1 голос
/ 10 марта 2011

Учитывая приведенные комментарии, кажется, что подход, более или менее эквивалентный mq Mercurial, будет использовать вину. В отличие от mq, guilt напрямую не предоставляет интерфейс для «хранилища исправлений», но вы можете вручную превратить .git/patches/<branch> в хранилище .git.

0 голосов
/ 11 октября 2017

Существует расширение git под названием git-series, которое использует git для поддержки очереди исправлений с версиями.Он обеспечивает функциональность, аналогичную mq, в том смысле, что вы можете поддерживать несколько серий (эквивалентных нескольким очередям hg), исправлять патчи на основе обратной связи и фиксировать серии в git.Он ближе всего к mq, но достаточно отличается, чтобы можно было ожидать стрельбы пешком.

0 голосов
/ 19 февраля 2011

AFAICT из предоставленной ссылки о Mq, он имеет примерно те же проблемы с публикацией, что и git rebase?

В целом, я думаю, что публикация вашей ветки с предупреждением, что это ваша ветка перебазирования, является вашейлучший вариантНапример, так поддерживается ветка linux-next.

...