Как бороться с изменением имени коммиттера в Mercurial - PullRequest
11 голосов
/ 17 октября 2010

У меня есть проект в Mercurial с группой коммиттеров. К сожалению, некоторые коммиттеры меняли имена несколько раз, например сначала это было «псевдоним», а затем «имя, фамилия», а затем что-то еще.

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

Есть ли другие способы решения этой проблемы?

1 Ответ

19 голосов
/ 17 октября 2010

Да, это возможно. Используйте расширение Convert , а затем hg convert из репозитория с плохими именами в новый репозиторий с хорошими именами и используйте карту автора. Есть много вещей, которые вы можете выполнить, используя расширение для преобразования и преобразования из Mercurial в другое хранилище Mercurial.

Файл Authormap, предположим, Eric Hopper <bumpy@bar.com> - каноническое имя для автора:

Eric Hopper <bouncy@foo.com>=Eric Hopper <bumpy@bar.com>
Eric M. Hopper <bouncy@foo.com>=Eric Hopper <bumpy@bar.com>
Eric Hopper <bouncy@baz.com>=Eric Hopper <bumpy@bar.com>

Тогда:

hg convert -s hg -d hg --authormap authormap badnamesrepo goodnamesrepo

Примечание: , что при преобразовании hg в репозиторий hg не всегда будет создаваться множество новых наборов изменений, в этом случае это произойдет, и они будут эквивалентны (но отличаются от) наборов изменений в оригинале репозиторий. Это означает, что каждый , использующий этот репозиторий, должен будет стереть все имеющиеся у них клоны и получить новые.

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

Если ваш инструмент анализа имеет возможность переназначать имена авторов, возможно, это лучший способ. Но это не то, что вы просили, поэтому я дал вам ответ, который вы просили. : -)

...