有没有办法诊断为什么git init --bare不会创建特定的目录?

Mak*_*oto 5 git gitolite

我正试图在我的LEDE-Project路由器上运行Gitolite.我已按照此处提供的说明将令人满意的依赖项安装到我的路由器上.我的路由器报告Git版本2.11.0,我正在运行它的计算机.可以在这里找到 GIT on LEDE-Project和OpenWRT的包,因为他们正在共享这些回购.

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

2017-03-06.03:11:23 28046 die/symlink /root/.gitolite/hooks/common/update to gitolite-admin.git/hooks <> at/root/gitolite/src/lib/Gitolite/Conf/Store .pm第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
Run Code Online (Sandbox Code Playgroud)

在我的路由器上......不是那么多.

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
Run Code Online (Sandbox Code Playgroud)

就Gitolite而言,问题在于具体的hooks/文件夹不存在.但我无法弄清楚为什么会这样.

有没有办法让我诊断git init --bare运行时创建的文件夹?我觉得如果我能弄清楚命令运行时实际执行的是什么,我可以解决其余问题.

Von*_*onC 5

就好像,在您的服务器上,用于创建新仓库模板具有不完整的内容(即没有挂钩的内容)

该模板文件夹将是<git>/share/git-core/templates,与<git>正在安装文件夹(在Windows ./mingw64/share/git-core/templates,Linux上,/usr/share/git-core/templates)

缺少钩子可能是故意在服务器上,出于安全原因不希望在其上执行任何钩子.(例如,您无法将挂钩添加到GitHub裸仓库)