신택스 하이라이트

2016년 7월 27일 수요일

SVN checksum mismatch 관련 에러 처리

SVN checksum mismatch  관련 에러 처리 

 .. 쩝 복잡 합니다 ..  (SVN 1.6+ 버전부터 가능 - sqlite 를 사용하는 SVN 버전)

svn: E200014: 인 경우   ( base 파일이 변조 되어 체크썸 에러가 나는 경우 )

예 ) 
sha1 79779fe0c1d78bc7a59781ad3c6c95845e4fe18b.svn-base
SHA1 (79779fe0c1d78bc7a59781ad3c6c95845e4fe18b.svn-base) = 35d57f95785b3f95b85ae9e932908c623fd42c4c

해당 파일을 새로 ci 받은 후 교체


  1. sha1 값 찾기 : 
    1. sqlite3 .svn/wc.db   
    2. sqlite> select shecksum from NODES where local_relpath = '{patch}';
    3. 해당값에서 $sha1$ 을 제외한 값이 sha1 값 
    4. ex) $sha1$79779fe0c1d78bc7a59781ad3c6c95845e4fe18b 
  2. 해당 base 파일 찾기 :
    1. sha1 값의 앞 두자리 가 폴더명 입니다. 
    2. ex) {path}/.svn/pristine/79/79779fe0c1d78bc7a59781ad3c6c95845e4fe18b.svn-base
  3. 해당 파일 sha1 확인
    1. sha1 {path}.svn/pristine/79/79779fe0c1d78bc7a59781ad3c6c95845e4fe18b.svn-base 
    2. SHA1 (79779fe0c1d78bc7a59781ad3c6c95845e4fe18b.svn-base) = 35d57f95785b3f95b85ae9e932908c623fd42c4c 
    3. 위와 같이.. svn에 저장되어 있는 체크섬값(빨강색)과.. sha1 체크하여 나온 체크섬값(파란색)이 다른 경우 만 다음 스탭으로 넘어가세요.. 같으면. 다른 방법을 찾아보도록 합니다. 
  4. base 파일 덮어 쓰기 
    1. 새로 co 받기 ( 작업 파일과 동일한 리비전을 가지고 와야 합니다.)
      ex: svn -r{revision} {URL@REV}{patch} {new_path}
    2. 새로 받은 경로에서 파일 새로 가져오기
      cp {new_path}/.svn/pristine/79/79779fe0c1d78bc7a59781ad3c6c95845e4fe18b.svn-base {path}/.svn/pristine/79/

출처 : 맨땅에 해딩


 SVN 1.7+ 에서 만 작동
  1. 문제되는 폴더로 이동
  2. 데이터 백업
  3.  svn update --set-depth empty  ( 파일이 삭제됨 - del )
  4.  svn update --set-depth infinity  ( 파일이  추가됨 - add )


출처 :
http://stackoverflow.com/questions/10352934/svn-checksum-mismatch-while-updating

댓글 1개: