我正在使用 git,但在集中式庄园中。我有一个服务器托管我们拉/推的回购。当我在另一台机器上拉/克隆时,我注意到 repo 中的几个文件夹是空的(当我得到一台新计算机并将 repo 克隆到时注意到了这一点)。我查看了 gitolite Web 界面,这些文件夹的权限是“m----------”,其他文件夹的权限是drwxr-xr-x
. 我不确定它是怎么做到的……我尝试了一些方法,但无法修复它。
问问题
193 次
1 回答
2
这可以在gitweb 源代码中解释为:
# convert file mode in octal to symbolic file mode string
sub mode_str {
my $mode = oct shift;
if (S_ISGITLINK($mode)) {
return 'm---------';
} elsif (S_ISDIR($mode & S_IFMT)) {
return 'drwxr-xr-x';
} elsif (S_ISLNK($mode)) {
return 'lrwxrwxrwx';
} elsif (S_ISREG($mode)) {
# git cares only about the executable bit
if ($mode & S_IXUSR) {
return '-rwxr-xr-x';
} else {
return '-rw-r--r--';
};
} else {
return '----------';
}
}
With S_IFGITLINK => 0160000
,这是子模块的特殊模式
自 2007 年和此补丁以来,子模块条目显示在 gitweb 中:
目前只有超级模块(当前存储库)中子模块条目历史的链接,因为 gitweb 不知道在哪里搜索子模块存储库对象。
所以它们不是空目录,只有子模块根目录。
有关更多信息,请参阅“ Git - 轻松拉取最新的所有子模块”。
于 2012-06-06T19:33:30.923 回答