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

时间:2017-03-06 20:37:39

标签: git gitolite

我试图在我的LEDE-Project路由器上运行Gitolite。我已按照说明provided here将令人满意的依赖项安装到路由器上。我的路由器报告Git版本 2.11.0,和我运行它的计算机一样。 GIT on LEDE-Project和OpenWRT can be found here的包,因为他们正在共享这些回购。

当我以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时创建的文件夹?我觉得如果我能弄清楚命令运行时实际执行的是什么,我可以解决剩下的问题。

1 个答案:

答案 0 :(得分:5)

就好像,在您的服务器上,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裸仓库)