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