Как пакетно переписать историю в Mercurial

323
Nikratio

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

Я знаю, что это переписывает историю, создаст проблемы, если будут клоны, и изменит идентификаторы коммитов.

Какой лучший способ сделать это?

1
Являются ли имена авторов в этих коммитах уникальными или существуют где-то в истории? Lazy Badger 8 лет назад 0
@LazyBadger Либо можно организовать. Nikratio 8 лет назад 0

2 ответа на вопрос

2
Lazy Badger
  1. Самый простой способ: MQ

Короче:

  • qimport -r REV
  • qrefresh ( -uдля пользователя, -m| -lдля сообщения о коммите )
  • qfinish + qdelete

с (возможно) восстановлением правильного порядка наборов изменений (не могу вспомнить, где qfinished cset появится в DAG)

  1. Двухступенчатый (с хитростями и ограничениями) способ
    • Переписать авторов с помощью Convert Extension (Mercurial-> Mercurial преобразование) с помощью --authormap(нужны уникальные авторы)
    • Изменить коммит-сообщения с помощью histedit
1
Nikratio

Use hg export -g -o <outfile>, process outfile with whatever tool you like, and re-import with hg import <outfile>.