完整的错误信息是:
could not symlink /var/lib/gitolite/.gitolite/hooks/common/gitolite-hooked to subdir/myrepo.git/hooks
当我对 gitolite-admin 进行任何更改并推送这些更改时,就会发生这种情况。这些钩子(Hook)是做什么用的?我需要它们吗?符号链接(symbolic link)有什么问题?
我在 $REPO_BASE
中为我的存储库指定了另一个位置,但是我使用 chown
命令让 gitolite 用户成为该路径和所有存储库的所有者,所以它应该' 是权限问题。
最佳答案
好的,所以我发现了为什么会这样。可能是因为我是 Git 的菜鸟。我在 $REPO_BASE 中放置的存储库是普通存储库,实际的源代码文件直接位于“根”目录下。
例如/mnt/data/git/repositories/aproject/Main.cpp
等。事实证明我需要在该路径下拥有实际的存储库,所以我做到了(我可能只能为此使用 .git 文件夹,但我就是这样做的):git clone --bare aproject.git aproject.git2 && rm -rf aproject.git && mv aproject.git2 aproject.git
.
简而言之,我对存储库进行了裸克隆。所以现在,在 /mnt/data/git/repositories/aproject/
中,我们实际上可以找到“hooks”文件夹(错误消息提示找不到)。在新推送 gitolite-admin 仓库后,所有 key 都添加到 authorized_keys 并且错误消息消失。
关于Gitolite 在推送 gitolite-admin : could not symlink 时给出错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7049484/