Каков подход 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.

Другие вопросы по тегам