Стабилизированный PR-перебазирование / изменение рабочего процесса - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть следующий рабочий процесс для выполнения запросов на стек в git (мне нравится делать много маленьких, зависимых PR):

* Start your feature_b from feature_a, i.e.:
git checkout feature_a
git checkout -b feature_b
* Whenever feature_a changes while it is waiting to get merged into master, you rebase feature_b on it:
... commit something onto feature_a ...
git checkout feature_b
git rebase feature_a
* Finally, as soon as feature_a has been merged into master, you simply get the new master and rebase feature_a onto it a last time:
git checkout master
git pull origin master
git checkout feature_b
git rebase --onto master feature_a feature_b

Это работает для нескольких зависимостей, но после того, как я доберусь доfeature_c или d, я вынужден несколько раз перебазировать, если я хочу что-то изменить в ветке feature_a.В идеале я хочу, чтобы при редактировании данного PR выполнялась команда «изменить этот коммит и перебазировать все зависимые коммиты на него», а также команду «перебазировать все, кроме первого х коммитов на мастер» при слиянии одного или несколькихначальные PR и все еще оставшиеся в обзоре.

Когда я использовал Mercurial, я использовал hg amend --rebase (https://bitbucket.org/facebook/hg-experimental), чтобы сделать это для меня. Любопытно, есть ли эквивалент в git или скрипте IМожно ли написать для реализации той же функциональности?

rerere похоже, что это может быть хорошим инструментом для использования здесь, в сочетании с другими вещами для автоматизации самого процесса зависимой перебазировки.

1 Ответ

0 голосов
/ 28 ноября 2018

Я никогда не нашел хорошего технического решения для этого.То, что вы получили несколько уровней, может указывать на то, что ваш обзор и процесс слияния слишком медленный.Или что ваши ветви слишком хороши.Или слишком взаимозависимы.Или все это.

Процесс проверки слишком медленный

Очевидно, что все мы хотим, чтобы наши PR были рассмотрены и объединены как можно быстрее.Некоторые места делают это быстрее, чем другие.Это может быть медленный процесс CI.Возможно, разработчики не отдают предпочтение обзору.Возможно, PR слишком сложны.Я не могу сказать, как это исправить в вашем проекте, только то, что это усугубит другие проблемы.

Ветви слишком хороши и слишком взаимозависимы

Вы складываете ветви, предположительно, потому что требуется функция Aфункция B, которая нуждается в функции C и так далее.Если вы занимаетесь этим обычно, возникает вопрос: почему ваша работа так привычно взаимозависима?Почему функции A, B и C не могут быть разработаны независимо?Зависимости веток - это иногда еда.

Это может быть потому, что в коде слишком много взаимозависимостей, и его необходимо реорганизовать.Возможно, что задачи слишком взаимозависимы и требуют переосмысления.Возможно, ветви слишком велики и содержат слишком много необходимых изменений.Опять же, я не могу сказать о вашем магазине, но я бы посоветовал вам подумать об этом.

Вам нужно объединить каждую функцию прямо сейчас?

Если вам абсолютно не нужна функция Объединеннаяпрямо сейчас, и он не может ждать, пока будут выполнены зависимые функции B и C, может быть, просто сделать их как одну ветку.Если вам нужна обратная связь во время работы, вы можете нажать на ветку и запросить отзыв о том, что вы уже сделали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...