【问题标题】:Is there a way to diagnose why git init --bare doesn't create specific directories?有没有办法诊断为什么 git init --bare 不创建特定目录?
【发布时间】:2017-03-06 20:37:39
【问题描述】:

我正在尝试在我的 LEDE-Project 路由器上运行 Gitolite。我已经按照provided here 的说明将必要的依赖项安装到我的路由器上。我的路由器报告 Git 版本 2.11.0,我正在运行它的计算机也是如此。 LEDE-Project 和 OpenWRT can be found here 上的 Git 包,因为他们正在共享这些存储库。

当我以 Gitolite 方式创建新存储库时,我收到类似于以下内容的错误消息:

2017-03-06.03:11:23 28046 die 无法将 /root/.gitolite/hooks/common/update 符号链接到 gitolite-admin.git/hooks 在 /root/gitolite/src/lib/Gitolite/Conf/Store.pm 第 368 行。

睡了一夜好觉后,我最终找到了this specific mailing list post,这表明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 时创建了哪些文件夹?我觉得如果我能弄清楚命令运行时实际执行了什么,我就能弄清楚其余的事情。

【问题讨论】:

    标签: git gitolite


    【解决方案1】:

    好像在您的服务器上,template used for creating a new repo 的内容不完整(即没有钩子)

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

    出于安全原因不想在其上执行任何钩子的服务器上可能有意缺少钩子。 (例如,您不能向 GitHub 裸仓库添加挂钩)

    【讨论】:

    • 有趣的是,模板文件夹是empty。这给了我足够的暗示。当我有时间的时候,我会调查这部分。
    • 是的 - 这绝对是模板为空的事实。放置一个空的hooks/ 文件夹解决了我的问题。谢谢!
    猜你喜欢
    • 2019-10-26
    • 2015-05-08
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2016-04-28
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多