Development Tip

수은 체인지 셋의 사용자 이름을 변경할 수 있습니까?

yourdevel 2020. 11. 1. 18:47
반응형

수은 체인지 셋의 사용자 이름을 변경할 수 있습니까?


개발 컴퓨터에 사용자 이름을 설정하지 않았고 몇 가지 커밋을했습니다. 이러한 변경 집합을 커밋 한 사람을 명확히 알 수 있도록 사용자 이름을 소급하여 변경할 수 있습니까?


저장소를 게시하지 않았다면 너무 어렵지 않습니다. Convert 확장 을 Mercurial 로 사용해야합니다. 그러면 기존 저장소를 '필터링'하여 새 저장소를 만들 수 있습니다. --authors 스위치를 사용하면 필터링되는 각 커밋의 작성자를 편집 할 수 있습니다.

당신이 경우 저장소를 발표, 사용자에 미치는 영향을 고려하시기 바랍니다의 수은 위키는 일부가 편집 역사에 이유가 없습니다 .

.hgrc에 다음 줄을 추가하여 확장을 활성화합니다.

[extensions]
hgext.convert=

이전 이름을 새 이름 (authors.convert.list)에 매핑하는 파일을 작성합니다.

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

변환을 실행하십시오.

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

나는 방금 그것을 확인했다.


나가는 변경 집합 하나 있는 경우 이를 수행하는 매우 간단한 방법이 있습니다.

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

-X "**"당신이 로컬 변경 사항이없는 경우 옵션을 생략 할 수 있습니다.


몇 가지 다른 방법을 시도했습니다 ( 관련되지 않은 저장소를 만든 Convert Extension 포함 ). MQ사용하여 히스토리편집 하기위한 Mercurial 위키 지침은 내가 가장 유용하다고 생각한 것입니다. (물론 공개적으로 알려진 히스토리를 편집하는 것에 대한 일반적인 경고 는 나쁜 생각이지만 자신 만 가지고있는 로컬 변경 세트는 편집 할 수 있습니다).

여기에 중요한 단계를 요약하고 저자를 변경하는 메커니즘을 명확히 할 것입니다. 첫 번째 잘못된 작성자 커밋이 개정판에 있다고 가정하고 BAD(물론 변경 사항을 게시하지 않은 경우) 다음을 수행 할 수 있어야합니다 (저장소 루트에 있다고 가정합니다).

$ HOME / .hg / hgrc에 추가하여 MQ를 활성화합니다.

[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

그리고 당신은 끝났습니다. 리포지토리는 여전히 관련 항목으로 나열되어 있으므로 푸시에 대한 불만이 없습니다.


나는 histedit"convert"와 같은 새로운 저장소를 만들거나 "mq"에 의지하지 않고 저자를 변경할 수 있는 확장을 사용했다 .

먼저 Mercurial 구성 파일에서 사용자 이름이 올바르게 설정되었는지 확인하고 histedit 확장을 활성화합니다.

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

[extensions]
histedit =

그런 다음 개정 40을 변경하려면 다음을 사용하십시오.

hg histedit -r 40

나타나는 파일에서 개정판 40에 해당하는 줄에서 단어 pickedit. 파일을 저장하고 닫습니다.

이제 hg commit. 커밋 메시지를 다시 입력하고 저장해야합니다.

마지막으로 hg histedit --continue.

커밋은 새로운 username. 부작용은 커밋의 타임 스탬프도 업데이트된다는 것입니다.

참고 URL : https://stackoverflow.com/questions/732819/can-i-change-the-username-on-a-mercurial-changeset

반응형