2013-04-10 71 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 2272年至2288年

可能有人請解釋我這樣的解決方案的原因是什麼?

回答

2

Git不存儲文件模式,它只使用類似unix文件模式的文件存儲文件類型(符號鏈接,目錄,可執行文件,不可執行文件)。

存儲不是這些硬編碼位之一的東西,例如0777將不合法。這將是一個腐敗的樹對象,並會投訴它。

(請注意,是有歷史的排斥這個 - 0664被允許在樹上,並且被認爲是一個錯誤一個警告代替)

相關問題