有没有一种方法可以诊断为什么git init --bare不创建特定的目录?

5
我正在尝试在LEDE-Project路由器上运行Gitolite。我按照这里提供的说明,在路由器上成功安装了必要的依赖项。我的路由器和电脑都报告Git版本为2.11.0。LEDE-Project和OpenWRT的Git包可以在此处找到,因为它们共享这些仓库。
当我按照Gitolite的方式创建新存储库时,会收到类似于以下内容的错误消息:
2017-03-06.03:11:23 28046 die could not symlink /root/.gitolite/hooks/common/update to gitolite-admin.git/hooks<> at /root/gitolite/src/lib/Gitolite/Conf/Store.pm line 368.<>
经过一夜的努力,我最终将其归结为这个特定的邮件列表帖子,该帖子建议git init --bare未生成正确的目录。
请在空目录中尝试“git init --bare”,并告诉我是否看到其中的.git/hooks目录。 假设您没有看到,您需要以某种方式解决这个问题。Gitolite期望“git init --bare”创建一个hooks目录。
这似乎是合理的假设。我的电脑可以很好地完成这项工作。
git init --bare foo
Initialized empty Git repository in /home/makoto/workspace/foo/foo/
cd ~/foo
ls -la
drwxrwxr-x 7 makoto makoto 4096 Mar  6 13:15 .
drwxrwxr-x 3 makoto makoto 4096 Mar  6 13:15 ..
drwxrwxr-x 2 makoto makoto 4096 Mar  6 13:15 branches
-rw-rw-r-- 1 makoto makoto   66 Mar  6 13:15 config
-rw-rw-r-- 1 makoto makoto   73 Mar  6 13:15 description
-rw-rw-r-- 1 makoto makoto   23 Mar  6 13:15 HEAD
drwxrwxr-x 2 makoto makoto 4096 Mar  6 13:15 hooks
drwxrwxr-x 2 makoto makoto 4096 Mar  6 13:15 info
drwxrwxr-x 4 makoto makoto 4096 Mar  6 13:15 objects
drwxrwxr-x 4 makoto makoto 4096 Mar  6 13:15 refs

在我的路由器上……就不太行了。
git init --bare foo
Initialized empty Git repository in /root/foo/
cd foo/
ls -la
drwxr-xr-x    4 root     root          4096 Mar  6 13:21 .
drwxr-xr-x    1 root     root          4096 Mar  6 13:21 ..
-rw-r--r--    1 root     root            23 Mar  6 13:21 HEAD
-rw-r--r--    1 root     root            66 Mar  6 13:21 config
drwxr-xr-x    4 root     root          4096 Mar  6 13:21 objects
drwxr-xr-x    4 root     root          4096 Mar  6 13:21 refs

就Gitolite而言,问题在于特别是hooks/文件夹不存在。虽然我不知道为什么会这样。

有没有办法诊断出在运行git init --bare时创建了哪些文件夹?如果我能弄清楚命令运行时实际执行的内容,我感觉我就能解决剩下的问题了。

1个回答

6

就像你的服务器上,用于创建新存储库的 模板 内容不完整(即没有钩子)一样。

该模板文件夹位于 <git>/share/git-core/templates,其中 <git> 是安装文件夹(在Windows上为 ./mingw64/share/git-core/templates,在Linux上为 /usr/share/git-core/templates)。

如果出于安全原因,服务器不想执行任何钩子,则缺少钩子可能是故意的。(例如,您无法向 GitHub 的裸存储库添加钩子。)


有趣的是,模板文件夹是空的。这已经给了我足够的提示去调查它的一部分,等我有时间时会进行调查。 - Makoto
1
没错 - 明显是因为模板为空。放置一个空的 hooks/ 文件夹解决了我的问题。谢谢! - Makoto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接