Могу ли я изменить имя пользователя в Mercurial Changeset? - PullRequest
69 голосов
/ 09 апреля 2009

Я не установил имя пользователя на своем компьютере разработчика и сделал несколько коммитов. Могу ли я задним числом изменить имя пользователя, чтобы было ясно, кто совершил эти изменения?

Ответы [ 4 ]

81 голосов
/ 16 апреля 2009

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

Если вы опубликовали свой репозиторий, пожалуйста, учтите влияние на ваших пользователей, у mercurial wiki есть несколько причин не редактировать историю .

Включите расширение, добавив эти строки в ваш .hgrc:

[extensions]
hgext.convert=

Напишите файл, чтобы сопоставить старое имя с новым именем (hors.convert.list):

user@ubuntu=real.name@my.example.com

Запустите преобразование:

hg convert --authors authors.convert.list SOURCE DEST

Я только что проверил, у меня это работает :).

13 голосов
/ 31 июля 2015

Если у вас есть один исходящий набор изменений, есть очень простой способ сделать это:

$ hg ci --amend --user "My Name <mymail@example.org>" -X "**"

Опция -X "**" может быть опущена, если у вас нет локальных изменений.

12 голосов
/ 15 октября 2013

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

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

Включить MQ, добавив это в $ HOME / .hg / hgrc

[extensions]
hgext.mq=

Преобразование последних изменений в патчи:

$ hg qimport -r BAD:tip

(теперь их можно найти на .hg/patches)

«Отменить» все патчи (предположим, что они были применены, и отменить их), чтобы ваш репозиторий перешел в состояние ревизии до BAD:

$ hg qpop -a

Если вы посмотрите на свои патчи, то увидите, что автор закодирован в виде строки комментария во всех патчах:

$ grep User .hg/patches/*
.hg/patches/102.diff:# User Firstname Lastname <f.lastname@oops.wrongurl.example.com>

Теперь используйте ваш любимый инструмент поиска / замены, чтобы исправить патчи (я использую Perl здесь). Предположим, вы хотите, чтобы имя коммита было f.lastname@righturl.example.com:

$ perl -pi -e 's/f\.lastname\@oops\.wrongurl\.example\.com/f.lastname\@righturl.example.com/' .hg/patches/*.diff

Теперь убедитесь, что вы успешно изменили имя автора, и повторно примените патчи:

$ hg qpush -a

Затем преобразуйте примененные патчи в правильные наборы изменений:

$ hg qfinish -a

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

8 голосов
/ 31 января 2015

Я использовал расширение histedit, которое позволило мне сменить автора, не создавая новые репозитории, такие как "convert", или прибегая к "mq".

Сначала, в вашем конфигурационном файле Mercurial, убедитесь, что ваше имя пользователя установлено правильно и включите расширение histedit:

[ui]
username = Your Name <your.name@domain.org>

[extensions]
histedit =

Тогда, если вы хотите изменить ревизию 40, используйте:

hg histedit -r 40

В появившемся файле в строке, соответствующей ревизии 40, измените слово pick на edit. Сохраните и закройте файл.

Теперь hg commit. Вам нужно будет повторно ввести сообщение о коммите и сохранить.

Наконец, hg histedit --continue.

Коммит появится с вашим новым username. Побочным эффектом является то, что отметка времени коммита также обновляется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...