Каков подход Git для публикации очереди исправлений?
Я привык к ртути mq
расширение для поддержки набора пользовательских патчей поверх апстрима. Они могут быть опубликованы в виде отдельного репозитория, кроме вышестоящего. Теперь в Git я использую частные ветви и rebase
и это работает хорошо, пока я не хочу поделиться своими патчами с кем-то еще.
В Mercurial очередь исправлений является независимым хранилищем и может публиковаться как обычно. Bitbucket даже предлагает функцию очереди исправлений, чтобы связать ее с родительским репозиторием. В Git, если я публикую частную ветку с моими патчами, я теряю возможность перебазировать их больше (если я не нарушу слияния), но патчи нужно время от времени обновлять.
Из другого вопроса SO я обнаружил, что в мире Git StGit предлагается как эквивалент для mq
, Это похоже на использование mq
, но как мне опубликовать очередь патчей с StGit?
(stg publish
похоже, что он создан для создания новой ветки, удобной для слияния, а не для публикации самих патчей.
Каковы другие подходы к публикации очередей исправлений в Git?
4 ответа
Подведем итоги ответов и комментариев. С git
Существует два подхода к публикации небольших пользовательских модификаций через удаленный апстрим:
- забывать
rebase
, опубликуйте ветку и новые слияния по необходимости - объявите, что ветка перебазирует, просто перебазируйте и опубликуйте (pro: clean history, contra: может быть болью, которую кто-то еще может постоянно использовать, пример: linux-next)
До сих пор чистый рабочий процесс очереди исправлений, кажется, не выполним с git, но чувство вины, похоже, очень близко к mq
, даже названия команд. Он не учитывает управляемую версией (и публикуемую) очередь исправлений.
Учитывая приведенные комментарии, кажется, что подход, более или менее эквивалентный mq Mercurial, будет использовать вину. В отличие от mq, guilt напрямую не предоставляет интерфейс для "хранилища патчей", но вы можете включить .git/patches/<branch>
в репозиторий.git вручную.
Существует расширение git под названием git-series
который использует git для поддержки очереди исправлений. Это позволяет подобную функциональность mq
в том смысле, что вы можете поддерживать несколько серий (эквивалентных нескольким очередям hg), исправлять патчи на основе обратной связи и фиксировать серии в git. Это ближе всего к mq
, но достаточно отличается, чтобы вы ожидали, что стрельба с ног.
AFAICT из предоставленной ссылки о Mq, он имеет примерно те же проблемы с публикацией, что и git rebase?
В целом, я думаю, что публикация вашей ветки с предупреждением о том, что это ветка перебазирования, - ваш лучший вариант. Например, так поддерживается ветка linux-next.