3

我正在使用 git,但在集中式庄园中。我有一个服务器托管我们拉/推的回购。当我在另一台机器上拉/克隆时,我注意到 repo 中的几个文件夹是空的(当我得到一台新计算机并将 repo 克隆到时注意到了这一点)。我查看了 gitolite Web 界面,这些文件夹的权限是“m----------”,其他文件夹的权限是drwxr-xr-x. 我不确定它是怎么做到的……我尝试了一些方法,但无法修复它。

4

1 回答 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 回答