1

CVS リポジトリを GIT に変換しようとしていますが、奇妙な問題に直面しました: git fast-importファイル モード 100755 と 100644 がハードコードされています。

ソース:

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

誰かが私にそのような解決策の理由を説明してもらえますか?

4

1 に答える 1

2

Git はファイル モードを保存しません。ファイルの種類 (シンボリック リンク、ディレクトリ、実行可能ファイル、非実行可能ファイル) のみを保存します。

たとえば、これらのハードコードされたビットのいずれでもないものを保存することは0777合法ではありません。これは壊れたツリー オブジェクトであり、git fsckそれについて文句を言うでしょう。

(これには歴史的な除外があることに注意してください -0664はツリーで許可されており、エラーではなく警告と見なされます。)

于 2013-04-10T14:36:02.887 に答える