2009-10-29 4 views
2

일부 Subversion 저장소를 git-svn 도구를 사용하여 Git으로 변환하려고합니다. 작성자 정보를 올바르게 가져 오더라도 커미터 정보가 작성자 정보와 일치하지 않는 것으로 나타났습니다 (예 : 커미터 날짜는 git-svn 도구를 실행 한 날짜/시간입니다).SVN에서 Git으로 히스토리 가져 오기 - 커미터 정보 변경

커미터 정보를 Subversion에서 가져온 저자 정보와 일치시키는 방법이 있습니까? 그렇지 않다면 git-filter-branch를 사용하여 커밋을 다시 작성하여이 문제를 해결할 수 있습니다 (예 : 커밋마다 작성자 정보를 커미터 정보로 복사).

감사합니다.

--- 업데이트 --- 힘내 - SVN이 문제를 일으키는되지

, 나는! 나는 Subversion 역사를 rebased 해왔고, 그것은 커미터 데이트를 바꾸고있다. 그렇다면 git-filter-branch를 사용하여 (커밋마다 작성자 정보를 커미터 정보로 복사)이를 변경하는 방법은 무엇입니까?

+0

FWIW을, 나 또한 자식-SVN을 사용하고는이 방식으로 작동하지 않습니다 나를. 커미터와 작성자 정보는 항상 일치합니다. –

+0

나는 무슨 일이 일어 났는지 알아 냈다. 나는 SVN 기록을 리베이스하고 있었고, 그것은 커미터 날짜를 바꾸고있다. – Jordan

+0

git-svn에는 문제가 없기 때문에 필터 분기를 사용하여 작성자 정보를 커미터 정보 필드에 복사하는 방법을 알고 있습니까? – Jordan

답변

1

필터 분기의 --env-filter 모드를 찾고 있습니다. 관련 환경 변수는 GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_AUTHOR_DATE, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAILGIT_COMMITTER_DATE입니다.

git filter-branch --env-filter ' 
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL" 
export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME" 
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"' -- --all 

--all이 모든 지점에서 작동하도록 지정 :

당신의 명령은 무엇인가있을 것입니다. 엉망인 경우 원래의 refs는 refs/original 네임 스페이스에 보존됩니다.

그리고 물론 나는 이런 일이 생길 수있는 사람에 대한 위험 경고 없이는 게시 할 수 없습니다. man git-filter-branch에서 :

경고! 다시 작성된 기록에는 모든 개체의 개체 이름이 달라지며 원래 분기와 수렴하지 않습니다. 다시 작성된 분기를 원래 분기 맨 위에 쉽게 푸시하고 배포 할 수 없습니다. 전체적인 의미를 모르는 경우이 명령을 사용하지 말고 단순한 단일 커밋으로 문제를 해결할 수 있다면이 방법을 사용하지 마십시오. (출판 역사를 다시 작성에 대한 자세한 내용은 자식-REBASE (1)에서 "복구 상류 REBASE FROM"절을 참조하십시오.)

+0

이것은 정답 이었지만 사소한 오타가있었습니다 : --env-filter 뒤에 '='문자를 넣을 수 없습니다; 그것은 공간이어야합니다. 그것보다 완벽하게 작동했습니다. 감사! – Jordan

+0

죄송합니다 - 고정! – Cascabel

관련 문제