2010-01-20 1 views
6

우리는 svn을 사용하며 git-svn을 사용하여 온 전성을 유지합니다. 한순간에, 우리의 svn 서버는 특정 폴더에 대해 403을 반환하기로 결정했습니다. 그것은 나뿐만 아니라 모두에게 일어났습니다.git-svn에서 일부 리비전을 언 페치해야합니다.

이 때문에 git-svn rebase를 수행 할 수 없습니다. 이 오류가 표시됩니다.

Index mismatch: 164adbb93408bed4ff0bdbcbf07bdfb2c49ed0ce != 64443edc6089f7f737e51cf8ea5ff3680c95a7e9 
rereading 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18 
    M test/system-tests/src/test/java/com/garmin/elevation/ElevationManagerSystemTest.java 
    M test/activity-test/src/test/java/com/garmin/elevation/ElevationManagerIntegrationTest.java 
    M test/activity-test/src/test/java/com/garmin/mb/activity/service/ActivityServiceManagerIntegrationTest.java 
    M system/deployment/src/main/resources/oracle/releases/2.9-SNAPSHOT/110-preference/4-data.dml.sql 
    M pom.xml 
service/activity-service-1.2/src/main/java/com/garmin/activity/service/impl/ActivityServiceImpl.java was not found in commit 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18 (r8845) 

마지막에 불평하는 파일은 오류가 발생했을 때 403을 반환하는 폴더에 있습니다. 내 파일 시스템에서 service/activity-service 폴더가 존재하지 않습니다. 나는 그것이 파일을 수정하려고 시도하고 있다고 믿는다. (그것은 svn의 변경 사항과 비슷하다.) 그러나 파일이 존재하지 않기 때문에 그냥 불어 난다.

그래서 이전 버전을 제거한 다음 다시 가져올 수 있다면 제대로 작동 할 것입니다. 나는 그것을하는 방법을 모르겠다. 대화 형으로 리베이스 한 다음 무리를 삭제하려고 시도했지만 작동하지 않았습니다.

그래서 이미 가져온 버전을 언 페치하는 방법을 알고 있습니까?

답변

8

먼저 .git 디렉토리를 백업하십시오.

문제가있는 분기에 대해 .rev_map.$UUID 파일을 제거하십시오 (.git/svn 이하). 문제 분기 (일반적으로 trunk)를 나타내는 git-svn 생성 분기를 되감습니다. 브랜치를 되감 으려면 git pack-refs --all, git log $BRANCH을 실행하고 문제가 커밋되기 전에 커밋을 찾은 다음 .git/packed-refs를 편집하여 분기가 이전 커밋을 가리 키도록합니다. 그런 다음 git svn fetch을 실행하십시오. 기존의 rewound 브랜치에서 rev-map을 재 빌드 한 다음 문제가 커밋 된 것을 포함하여 아직 가지고 있지 않은 svn 커밋을 가져옵니다. 이제 정상적으로 rebase 및 dcommit 할 수 있어야합니다. 당신이 refetching을 시작하려는 이전이 개정 입니다 레브 곳

9

지금이 작업을 수행하는 더 좋은 방법은 git svn reset -r <rev>입니다. 이 작업이 끝나면 git svn fetch을 실행하여 인덱스를 다시 작성하고 rev 이후에 리비전을 다시 가져옵니다.