Я не установил имя пользователя на своем компьютере разработки и сделал несколько коммитов. Могу ли я ретроактивно изменить имя пользователя, чтобы было ясно, кто совершил эти изменения?Могу ли я изменить имя пользователя на Mercurial changeet?
ответ
Если вы не опубликовали свой репозиторий, тогда это не должно быть слишком сложно. Вы должны использовать Convert extension для Mercurial, что позволит вам «фильтровать» ваш существующий репозиторий для создания нового. переключатель --authors позволяет редактировать автора для каждого фиксации по мере его фильтрации.
Если у вас есть, опубликуйте ваш репозиторий, пожалуйста, подумайте о влиянии на ваших пользователей, у mercurial wiki есть reasons not to edit history.
Включить расширение, добавив следующие строки в ваш .hgrc:
[extensions]
hgext.convert=
Написать файл на карту старого названия на новое имя (authors.convert.list):
[email protected][email protected]
Запустите преобразование:
hg convert --authors authors.convert.list SOURCE DEST
Я только что проверил, это работает для меня :).
Очень красивый и полный ответ. –
@ Андрю Айлетт: как вы это проверили? «$ hg clone myWrongRep name», внесены изменения, а затем «$ hg convert --authors thefile myWrongLocalRep». Теперь он генерирует файл «.-Hg», и сайт говорит, что должно быть что-то с «статусом hg», но я ничего не могу найти (хотя есть. У меня был неверный авторский коммит с именем «hh», поэтому я создал строку «hh» = hhh ', но после нажатия, теперь меняются и после «$ hg update» и «$ hg push», никаких изменений. Что мне не хватает? – hhh
Вы можете проверить авторов/проверить, работают ли команды с этой командой '$ hg log --template '{author} \ n' | less', еще не получил работу - не понимая authormap -thing. – hhh
Я пробовал несколько разных методов (включая Convert Extension, который я нашел, создал несвязанный репозиторий). Рекомендации Mercurial wiki для editing history using 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 <[email protected]>
Теперь используйте ваш любимый поиск/замену инструмента для фиксации заплаты (я использую Perl здесь).Давайте предположим, что вы хотите, чтобы имя совершить быть [email protected]
:
$ perl -pi -e 's/f\.lastname\@oops\.wrongurl\.example\.com/f.lastname\@righturl.example.com/' .hg/patches/*.diff
Теперь убедитесь, что вы успешно изменили имя автора, и повторно применить патчи:
$ hg qpush -a
Затем преобразовать примененные патчи в надлежащее changeets:
$ hg qfinish -a
И все готово. Ваш репозиторий по-прежнему отображается как связанный, поэтому вы не будете получать жалобы на толкание.
Got «abort: не могу импортировать версию слияния [номер редакции] –
Работал для меня. Однако мне пришлось изменить статус моих коммитов с« опубликованных »на« черновик ». – user2428118
Перед закрытием нужно было использовать трейлинг-код'/' цитата, в противном случае команда 'perl' дала ошибку' замена замещения, не заканчивающаяся на -e строке 1'. В противном случае отлично, спасибо! – ederag
Я использовал расширение histedit
, которое позволило мне изменить автора, не создавая новых репозиций, таких как «конвертировать», или прибегая к «mq».
Во-первых, в вашем ртутный конфигурационный файл, убедитесь, что ваше имя пользователя установлен правильно и включить расширение histedit:
[ui]
username = Your Name <[email protected]>
[extensions]
histedit =
Затем, если вы хотите изменить версию 40, используйте:
hg histedit -r 40
В появившемся файле в строке, соответствующей ревизии 40, измените слово pick
на номер edit
. Сохраните и закройте файл.
Теперь, hg commit
. Вам нужно будет повторно ввести сообщение о фиксации и сохранить его.
И наконец, hg histedit --continue
.
Конец появится с вашим новым username
. Кроме того, обновляется временная метка фиксации.
Если у вас есть одного исходящую ревизии, есть очень простой способ сделать это:
$ hg ci --amend --user "My Name <[email protected]>" -X "**"
Опция -X "**"
может быть опущена, если у вас нет каких-либо локальных изменений.
Он сделал работайте! (Бог знает, что я только что делал :)) –
- 1. Mercurial удалить changeet, история слияния
- 2. Mercurial, change branch of changeet
- 3. См. Резюме Mercurial changeet/user/date
- 4. Настройка Mercurial имя пользователя
- 5. Mercurial changeet hook существует со статусом -1
- 6. Каковы два числа в Mercurial changeet ID?
- 7. Могу ли я изменить местоположение/имя PyCharmProjects?
- 8. Могу ли я изменить имя `nohup.out`?
- 9. Могу ли я изменить пользователя и пароль на класс?
- 10. Могу ли я изменить ввод клавиатуры пользователя?
- 11. Как я могу изменить имя пользователя Twitter с помощью бота?
- 12. Я не могу повторить имя пользователя сеанса, правильно ли я сохраняю имя пользователя и идентификатор сеанса?
- 13. Как я могу изменить имя пользователя и обновить сеанс?
- 14. Как я могу получить зарегистрированное имя пользователя?
- 15. Могу ли я изменить SparkContext.appName на лету?
- 16. python Могу ли я изменить имя пользователя и пароль на os.listdir?
- 17. Могу ли я выкачать в Mercurial?
- 18. Могу ли я отслеживать последнее нажатие Mercurial?
- 19. Oracle Изменить имя пользователя
- 20. Как установить мое имя пользователя в Mercurial?
- 21. Могу ли я изменить учетные данные модели пользователя в loopback?
- 22. Django, изменить имя поля пользователя модели пользователя
- 23. Как я могу изменить имя libwx_gtk2ud_richtext-2.8
- 24. Могу ли я автоматически изменить имя автогенерированного прокси-сервера wcf?
- 25. как я могу знать имя пользователя клиентов
- 26. Могу ли я изменить имя приложения, когда клиент посещает сайт?
- 27. Как я могу безопасно проверить, выполнено ли имя пользователя?
- 28. Могу ли я получить имя пользователя клиента в PHP?
- 29. Могу ли я изменить имя рабочего процесса Sharepoint?
- 30. Mercurial: Измените имя пользователя некоторых коммитов, еще не нажатых?
Ознакомьтесь со следующим документом. Существует немало недостатков, связанных с переписыванием истории, которая рассматривается в документе, поэтому она обычно не одобряется. Однако, похоже, это возможно. - [Редактирование истории] (http://www.selenic.com/mercurial/wiki/index.cgi/EditingHistory) –