Git gitolite 迁移后存储库变为只读

Git repository turned read only after gitolite migration

[我找到了解决方案并在回复中描述]

我不久前迁移了我的 gitolite 服务器,同时从 gitolite 2 升级到 gitolite 3。 我刚刚意识到,虽然所有存储库都在努力获取数据,但在尝试推送其中一个存储库时,出现以下错误:

remote: Use of uninitialized value in do "file" at hooks/update line 36.
remote: Null filename used at hooks/update line 36.
remote: error: hook declined to update refs/heads/candidates/my-branch

我知道这个错误通常意味着存在 ssh 密钥或权限问题,但我的 gitolite.conf 文件非常简单,ssh 密钥与其他存储库相同,适用于从此服务器获取。

当我尝试使用我的 ssh 密钥直接 ssh 服务器时,显示以下消息:

PTY allocation request failed on channel 0
hello Fred, this is gitolite3@my-server running gitolite3 v3.6.2-26-gf9c0008 on git 1.9.1

 R W    repo1
 R W    repo2
 R W    gitolite-admin
Connection to my-server closed.

repo1 不工作,而 repo2 和 gitolite-admin 都工作正常。

我真的不知道接下来应该去哪里调试它。

更新: 我不知道它是否相关,但我注意到我服务器上有问题的存储库目录与其他存储库目录具有不同的权限(766,而其他存储库目录为 700)。我更改了它但没有结果,但也许它可以提示其他内容?

更新 2: 此外,这个有问题的存储库是在其他存储库之前创建的。使用旧版本 git 创建的存储库是否存在兼容性问题?

我设法解决了我的问题。

我注意到所有工作存储库在 repo.git/. 中都有它们的 HEAD 文件、分支目录等,而故障存储库在 repo.git/.git/. 中有所有这些所以我做了以下操作:

cd ${GITOLITE_HOME}/repositories/repo.git
mv .git/* .
rm -rf .git
gitolite setup

它开始工作了。