2013-04-10 4 views
1

내 CVS 저장소를 GIT로 변환하려고하는데 이상한 문제가 발생했습니다 : git fast-import에 하드 코드 된 파일 모드 100755와 100644가 있습니다. 그렇지 않으면 파일이 죽습니다.git 빠른 가져 오기 파일 모드가 하드 코드 된 이유는 무엇입니까?

소스 :

p = get_mode(p, &mode); 
if (!p) 
    die("Corrupt mode: %s", command_buf.buf); 
switch (mode) { 
    case 0644: 
    case 0755: 
    mode |= S_IFREG; 
    case S_IFREG | 0644: 
    case S_IFREG | 0755: 
    case S_IFLNK: 
    case S_IFDIR: 
    case S_IFGITLINK: 
     /* ok */ 
     break; 
    default: 
     die("Corrupt mode: %s", command_buf.buf); 
} 

가 // https://github.com/git/git/blob/master/fast-import.c 2,272에서 2,288 사이

누군가가 나에게 이러한 솔루션의 이유를 설명해주십시오 수 있을까?

답변

2

힘내는 파일 모드를 저장하지 않으며 유닉스 파일 모드와 같이 보이는 것을 사용하는 파일 유형 (심볼릭 링크, 디렉토리, 실행 가능, 실행 불가능) 만 저장합니다.

하드 코딩 된 비트 중 하나가 아닌 것 (예 : 0777)을 저장하는 것은 유효하지 않습니다. 이것은 손상된 트리 객체이며 git fsck은 그것에 대해 불평 할 것입니다.

(가 이에 대한 역사적 배제 유의 -. 0664가 나무에 허용 및 오류경고 대신 간주됩니다)