Повторяющийся мерзавец вишневый

git cherry-pick не является идемпотентом в том смысле, что хэш-фиксация после выбора вишни зависит от текущего времени и текущего пользователя (как коммитер).

Я хотел бы иметь свойство идемпотентности, что означает двойную последовательность:

git reset --hard BASE-COMMIT
git cherry-pick INTERESTING-COMMIT

а потом еще раз:

git reset --hard BASE-COMMIT
git cherry-pick INTERESTING-COMMIT

приводит к тому же хешу фиксации в HEAD оба раза.

Есть ли способ сказать git повторно использовать имя коммиттера и дату коммиттера из исходного коммита?

1 ответ

Решение

Вы можете изменить дату фиксации, когда вы регистрируетесь в черри-кирке. Например:

git reset --hard BASE-COMMIT
export GIT_COMMITTER_DATE=$(git log -1 --format='%ct' INTERESTING-COMMIT)
git cherry-pick INTERESTING-COMMIT

Это предполагает, что пользователь также стабилен, в противном случае вам также нужно будет установить GIT_COMMITTER_NAME а также GIT_COMMITTER_EMAIL, как это:

export GIT_COMMITTER_NAME=$(git log -1 --format='%cn' INTERESTING-COMMIT)
export GIT_COMMITTER_EMAIL=$(git log -1 --format='%ce' INTERESTING-COMMIT)
Другие вопросы по тегам