git-svn을 사용하여 일부 SVN 저장소의 "준비"버전을 저장합니다. 다른 사용자가이 준비 저장소에서 당겨서 다시 변경 사항을 커밋 할 수 있습니다. 스테이징 저장소의 커밋은 주기적으로 업스트림 SVN 저장소에 위임됩니다.git 커미터와 SVN 사용자 간의 매핑
git 커미터의 이름과 SVN 사용자 이름을 매핑하는 방법이 있는지 알고 싶습니다. SVN repo에 커밋 할 때 해당 정보가 손상되지 않도록 유지하고 싶습니다.
git-svn을 사용하여 일부 SVN 저장소의 "준비"버전을 저장합니다. 다른 사용자가이 준비 저장소에서 당겨서 다시 변경 사항을 커밋 할 수 있습니다. 스테이징 저장소의 커밋은 주기적으로 업스트림 SVN 저장소에 위임됩니다.git 커미터와 SVN 사용자 간의 매핑
git 커미터의 이름과 SVN 사용자 이름을 매핑하는 방법이 있는지 알고 싶습니다. SVN repo에 커밋 할 때 해당 정보가 손상되지 않도록 유지하고 싶습니다.
Vincent Danen는 the -A option when using git svn를 언급하지 :
은 그래서 authors.txt 파일을 만들고 Git 저장소
[...]
의 최상위 디렉토리로/~ 자식을 사용.
이 파일은 Subversion 커미터의 이름을 힘내 작성자에게 매핑하므로 가져온 Subversion 저장소의 올바른 기록을 가져옵니다.
커미터 수가 적은 프로젝트의 경우 매우 간단합니다. 커미터가 많은 대규모 프로젝트의 경우 시간이 좀 걸릴 수 있습니다. 파일의 구문은 다음과 같습니다
user = Joe User <[email protected]>
vdanen = Vincent Danen <[email protected]>
짧은 이름이 망할 놈에 의해 사용되는 긴 형태, 사용자의 전체 이름과 이메일 주소 반면 서브 버전의 커미터 이름입니다.
Subversion 저장소를 복제하여 로컬 Git 저장소를 만드는 단계입니다. 저장소를 가정하면 트렁크 /의 표준을 사용,/태그, 및/지사, 사용 :
:loginname = Joe User <[email protected]>
# git svn clone --no-metadata -A authors.txt -t tags -b branches -T trunk https://svn.example.com/svn/repo
-A<filename>
--authors-file=<filename>
구문 자식 - cvsimport 사용하는 파일과 호환됩니다
이 옵션을 지정하고
git-svn
이 작성자에 존재하지 않는 SVN 커미터 이름을 발견하면 -file, git-svn은 작업을 중단합니다.
사용자는 적절한 항목을 추가해야합니다.
authors-file이 수정 된 후 이전git-svn
명령을 다시 실행하면 작업을 계속 진행해야합니다.git-svn dcommit
(당신이에 SVN을 를 누르면)를 포함
config key: svn.authorsfile
이 모든 git-svn
명령에 대해 작동합니다
Mohammed Gamal (코멘트에서) 작동하지만, --no-metadata
옵션이 없다고보고합니다.
두 번째 옵션은 매핑을 해결하는 프로그램/스크립트를 제공하는 것입니다.
커미터 수가 알려지지 않았지만 SVN 커미터 이름에서 "생성"되었을 수있는 경우 매우 유용합니다!
... authors-file에 존재하지 않는 SVN 커미터 이름 인 경우 git svn이 작업을 중단합니다. 사용자는 적절한 항목을 추가해야합니다. 다시 실행 저자 - 파일이 수정 된 후 그래서 ...
을 이전 자식 svn의 명령을, 그 때문에 우리는이 :
--authors-prog=mapMyCompanyUsers.sh
힘을/컬 /를 wget'ting를 체크 아웃하는 모든 사용자를하지 않으려면
$ git svn clone -s --authors-prog=$(tmpMapFile="$TMPDIR/mapSvnUsersAutomatically.$$.sh" && echo -e '#!/bin/sh\necho $1" <"$1"@example.com>"' > $tmpMapFile && chmod +x $tmpMapFile && echo $tmpMapFile) https://svn.example.com/svn/repo/
:
$(tmpMapFile="$TMPDIR/mapSvnUsersAutomatically.$$.sh" && echo -e '#!/bin/sh\necho $1" <"$1"@example.com>"' > $tmpMapFile && chmod +x $tmpMapFile && echo $tmpMapFile)
클론은 다음과 같이 표시됩니다지도 - 스크립트 첫째, 당신이 뭔가를 제공 할 수 있습니다
이렇게하면 모든 매핑이 정확히 같고 SVN 복제본이 "공유"되고 git을 통해 병합 될 수 있습니다!
OP에서 물어 본 것처럼 git-> svn 방향에서도 작동합니까? –
@Christoph : 그런데, 당신은 * Git repo (http://stackoverflow.com/questions/570945/git-clone-of-git-svn-tree/571084#571084)의 SVN 미러를 가지고 있습니다. --authors-file 옵션을 사용해야 했습니까? – VonC
해결책은 작동하지만 --no-metadata 스위치가 없으면 –