Подтвердить что ты не робот

Что такое Git для публикации очереди исправлений?

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

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

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

(stg publish, кажется, требуется, чтобы создать только новую ветвь "слияния", а не публиковать сами патчи)

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

4b9b3361

Ответ 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.