玩家们
我已经使用 git 和 gitosis 几个月了,我真的很喜欢这两个。不幸的是,我在使用 gitosis 访问我的一个项目时遇到了问题。
设置
我在运行 Debian 的托管服务器帐户上设置了我的 git 和 gitosis 安装。我还使用单独的 rsa 密钥设置了四台计算机(两台 Ubuntu,两台 Windows),并成功设置每台计算机以访问 gitosis 安装。一切都顺利进行了一段时间。不过,最近,我无法以任何方式(推送、拉取、克隆)访问我的“桌面配置”项目。我最初在我的一台 Linux 机器上创建了 DesktopConfiguration 项目,将它推送到 gitosis 服务器,然后将它克隆到我的一台 Windows 机器上。直到最近(过去两周左右),我才能访问它。以下是我的 gitosis.conf 文件和我收到的错误消息(无论我尝试使用 Windows 还是 Linux 机器推送、拉取或克隆,错误消息都是相同的):
钩子
gitosis.conf
[gitosis]
loglevel = DEBUG
[group gitosis-admin]
writable = gitosis-admin
members = windows-desktop linux-desktop linux-laptop work-laptop
[group main-projects]
writable = WallpaperChanger
writable = RegexTester
writable = MovieAggregator
writable = FileRenamer
writable = GlutenFreeShoppingAssistant
writable = Libraries
writable = DesktopConfiguration
writable = RssFeedReader
members = windows-desktop linux-desktop linux-laptop work-laptop
错误信息
C:\Documents and Settings\myname\Desktop\Desktop Config Test>git clone git@myserver:DesktopConfiguration.git
Initialized empty Git repository in C:/Documents and Settings/myname/Desktop/Desktop Config Test/DesktopConfiguration/.git/
DEBUG:gitosis.serve.main:Got command "git-upload-pack 'DesktopConfiguration.git'"
DEBUG:gitosis.access.haveAccess:Access check for 'work-laptop' as 'writable' on 'DesktopConfiguration.git'...
DEBUG:gitosis.access.haveAccess:Stripping .git suffix from 'DesktopConfiguration.git', new value 'DesktopConfiguration'
DEBUG:gitosis.group.getMembership:found 'work-laptop' in 'main-projects'
DEBUG:gitosis.group.getMembership:found 'work-laptop' in 'gitosis-admin'
DEBUG:gitosis.access.haveAccess:Access check for 'work-laptop' as 'writeable' on 'DesktopConfiguration.git'...
DEBUG:gitosis.access.haveAccess:Stripping .git suffix from 'DesktopConfiguration.git', new value 'DesktopConfiguration'
DEBUG:gitosis.group.getMembership:found 'work-laptop' in 'main-projects'
DEBUG:gitosis.group.getMembership:found 'work-laptop' in 'gitosis-admin'
DEBUG:gitosis.access.haveAccess:Access check for 'work-laptop' as 'readonly' on 'DesktopConfiguration.git'...
DEBUG:gitosis.access.haveAccess:Stripping .git suffix from 'DesktopConfiguration.git', new value 'DesktopConfiguration'
DEBUG:gitosis.group.getMembership:found 'work-laptop' in 'main-projects'
DEBUG:gitosis.group.getMembership:found 'work-laptop' in 'gitosis-admin'
ERROR:gitosis.serve.main:Repository read access denied
fatal: The remote end hung up unexpectedly
故事
根据我在 gitosis 方面的经验以及我在网上找到的大多数问题和答案,错误消息看起来与在尝试推送 gitosis 时收到的错误消息完全相同,而无需先将项目添加到您的机器可以访问的组中. 不幸的是,在我的情况下,这似乎不是真的。(除非我遗漏了什么!)
电线
我不确定这是否会提供更多信息,但这里是来自我的更新后挂钩的调试消息:
INFO:gitosis.run_hook:Running hook post-update
DEBUG:gitosis.gitdaemon:Global default is 'deny'
DEBUG:gitosis.gitdaemon:Walking '.', seeing ['RegexTester.git', 'gitosis-admin.git', 'Libraries.git', 'GlutenFreeShoppingAssistant.git', 'MovieAggregator.git', 'DesktopConfiguration.git', 'WallpaperChanger.git', 'RssFeedReader.git', 'FileRenamer.git']
DEBUG:gitosis.gitdaemon:Deny 'RegexTester'
DEBUG:gitosis.gitdaemon:Deny 'gitosis-admin'
DEBUG:gitosis.gitdaemon:Deny 'Libraries'
DEBUG:gitosis.gitdaemon:Deny 'GlutenFreeShoppingAssistant'
DEBUG:gitosis.gitdaemon:Deny 'MovieAggregator'
DEBUG:gitosis.gitdaemon:Deny 'DesktopConfiguration'
DEBUG:gitosis.gitdaemon:Deny 'WallpaperChanger'
DEBUG:gitosis.gitdaemon:Deny 'RssFeedReader'
DEBUG:gitosis.gitdaemon:Deny 'FileRenamer'
INFO:gitosis.run_hook:Done.
关闭
我仍然可以在我的所有机器上访问(推送、拉取、克隆)服务器上的所有其他项目(在 gitosis-admin 和 main-projects 组中)。以下是我迄今为止尝试过的一些事情:
- 我已多次检查所有文件夹、文件和配置设置的拼写。
- 在确保更新后挂钩具有正确的执行权限后,我已从 gitosis.conf 文件中删除并重新添加了 DesktopConfiguration 项目。
- 我在 DesktopConfiguration 之后向 gitosis 添加了另一个项目,它可以正常工作。
- 我已在本地机器上的 git 中删除并重新添加了对项目的远程引用。
- 我已从服务器上的“存储库”文件夹中删除了 DesktopConfiguration.git 项目,并尝试再次推送到它。
- 我什至重新创建了我所有的 rsa 密钥(尽管身份验证似乎与我看到的问题没有任何关系)。
所有这些尝试都未能让我访问该项目。据我所知,在我失去对该项目的访问权期间,服务器或我的台式机上没有任何变化。
刺
我欢迎您张开双臂提出任何见解!