Можно ли изменить имя пользователя в mercurial changeset на основе сообщения о коммите? - PullRequest
2 голосов
/ 28 февраля 2011

Я конвертирую CVS-репозиторий (на самом деле их несколько) в установку Mercurial, и мне было интересно, есть ли у кого-нибудь опыт обновления и исправления имен пользователей в наборах изменений.

Проблема в том, что болееВ течение длительного периода времени пользователь по умолчанию довольно часто использовался для фиксации в хранилище CVS, а затем сообщение о фиксации в конце снабжалось '(инициалами)', чтобы идентифицировать фактического человека, совершающего коммит.И теперь, когда я перехожу на Mercurial, я бы хотел это исправить, установив правильное имя пользователя.

Проведя некоторые исследования, это кажется нетривиальным, и я подумал, что что-то вроде этого:

  • преобразовать в hg, а тэг / ветвь фиксируется с определенным инициалом в сообщении фиксации, используя --config convert.cvsps.mergeto='{{mergetobranch ([-\w]+)}}'
  • , преобразуя этот новый репозиторий, а затем используйте --authormap для редактирования значения по умолчаниюпользователь инициалам лиц.

Но я не уверен, возможно ли выборочно преобразовывать ветви, а затем вернуть их на прежнее место в истории.

Любая помощь илиидеи будут с благодарностью.Разумеется, я полностью контролирую все клоны репозитория, поскольку он никоим образом не публикуется.

Ответы [ 2 ]

0 голосов
/ 30 мая 2013

Расширение Convert , к сожалению, не предоставляет удобного способа создания условных сопоставлений с авторами, но оно позволяет выполнять преобразование постепенно. Затем вы можете выполнить конвертацию небольшими шагами, внутри которых действует только одна авторская карта. Вы также можете использовать сценарий генерации этих коммитов "забора поста".

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

Этот вопрос довольно старый, но если у вас не так много клонов в дикой природе, возможно, вам стоит потратить время на преобразование имени автора, исправляющего имя. Помните: hg convert обязательно меняет хеш для каждого набора изменений, поэтому вам приходится иметь дело со всеми обычными проблемами EditingHistory . Я подозреваю, что это одна из причин, почему оба обычных способа решения этой проблемы, Mercurial Queues и более новое HistEdit Extension , не очень хорошо работают с наборами изменений слияния - это Трудно и беспорядочно повторить слияние без листьев, а наличие слияний часто указывает на то, что вы открыли общий доступ к хранилищу, что означает, что вам следует пересмотреть историю редактирования.

0 голосов
/ 28 февраля 2011

Вам необходимо использовать расширение Convert . Вы можете следить за ответом из этой записи .

...