Интерактивная перебазировка git с коммитом "allow-empty" не работает - PullRequest
0 голосов
/ 30 января 2020

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

Как сделать так, чтобы он никогда не остановился? И затем, избавляя нас от необходимости продолжать это?

На самом деле, мы в настоящее время используем скрипт для запуска git rebase --continue каждый раз, когда он останавливается, но как этого избежать?

Git флажки rebase для запуска масштабной перезагрузки: Внешний и пользовательский редактор, настроенный на GIT_SOURCE_EDITOR, редактирует интерактивную замену для нас, помещая сквош в некоторые специально рассчитанные места в соответствии с алгоритмом.

GIT_EDITOR='cat' \
GIT_SEQUENCE_EDITOR='auto-rebase-editor $1' \
git rebase --allow-empty -i $(git log --oneline --reverse --pretty=format:%H  | head -n1)

Git вывод: (коммит хэши и электронная почта заменены на «??????» и «@email»)

...
You are currently rebasing branch 'clean-branch' on '??????'.

No changes
You asked to amend the most recent commit, but doing so would make
it empty. You can repeat your command with --allow-empty, or you can
remove the commit entirely with "git reset HEAD^".
Could not apply ??????... @email

Обходной путь, чтобы попросить его просто продолжать каждый раз, когда он останавливается:

Флаг --keep-empty в git rebase --continue не работает, он все равно останавливается каждый раз, когда обнаруживает пустой коммит, и флаг --allow-empty, используемый в git rebase -i, когда он был запущен в начале перебазировки, также не работает. Это просто останавливается, это не имеет значения, аргумент.

count=0; while true; do \
    gout=$(git status); \
    if [[ $gout == "interactive rebase in progress"* ]]; then \
        count=$((count+1)); \
        echo -e "\n\nContinuing rebase #$count"; \
        git rebase --continue; \
    else \
        echo "Total continued stops: $count"; \
        break; \
    fi; \
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...