我正在使用git,但是在一个集中的庄园里。我有一台服务器托管我们拉/推的回购。当我在另一台机器上拉/克隆时,我注意到repo中的几个文件夹是空的(当我有一台新计算机并克隆了repo时,注意到了这一点)。我查看了gitolite web界面,这些文件夹的权限是“m ---------”,其他文件夹是drwxr-xr-x
。我不确定它是如何得到这种方式的...我已经尝试过一些东西但是无法修复它。
答案 0 :(得分:2)
可以在gitweb source中解释:
# 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 '----------';
}
}
使用S_IFGITLINK => 0160000
,这是子模块的特殊模式
自2007年和this patch以来,子模块条目显示在gitweb中:
目前只有超级模块(当前存储库)中子模块条目历史的链接,因为gitweb不知道在哪里搜索子模块存储库对象。
因此它们不是空目录,只是子模块的根目录。
有关详情,请参阅“Git - easy way pull latest of all submodules”。