2

我已经安装了 gitosis,但是当我使用 repos 时我有奇怪的事情。在配置中我有

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = me@server me@laptop

[group prj1]
writable = prj1
members = me@laptop

在 /home/git/repositories 中,我创建了目录 prj1.git 和空的 git repo。

我可以毫无问题地从服务器和笔记本电脑使用 gitosis-admin,但是当我尝试在笔记本电脑上git clone prj1 时,我看到了

$ git clone git@server:prj1.git
Initialized empty Git repository in /Users/alec/temp/prj1/.git/
fatal: no matching remote head

好的,让我们将 prj1 从笔记本电脑推送到服务器:

$ git push origin master:refs/heads/master
ERROR:gitosis.serve.main:Repository read access denied
fatal: The remote end hung up unexpectedly

怎么了?

4

5 回答 5

5

在您的笔记本电脑上完成以下操作是否可以解决此问题?
而不是一个 git 克隆:

  mkdir prj1
  cd prj1
  git init
  touch README
  git add .
  git commit -m "Added blank readme"
  git remote add origin git@server:prj1.git
  git push origin master

ebneter在评论中补充道:

您可能会提到它起作用的原因是您不能克隆一个空的 repo
(正如我的用户经常发现的......

这提醒了OP问题:

...并在/home/git/repositories我创建了目录 prj1.git 与空 git repo

这并不理想。
这个SO question提到了克隆空仓库的问题:

换句话说,不要试图克隆空的 repo,而是在创建它之后,向它推送一个包含一个无害文件的简单 repo。然后它不再是空的,可以克隆了。


从那时起,克里斯约翰森评论道:

任何高于 1.6.2 的 Git

(实际上自 2009 年 3 月以来)

可以“克隆”空存储库。
(吓人的引号,因为它实际上只是正常初始化加上设置远程,并为假定的最终主分支创建跟踪配置)。

于 2009-08-19T07:04:23.547 回答
5

即使按照答案 1 中的步骤操作,我也遇到了同样的问题。

sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

为我解决了。显然,旧版本的 setuptools 可以使更新后挂钩无法执行。请参阅此页面

于 2010-05-29T09:30:49.667 回答
1

在我想推送到一个新的存储库之后,我遇到了同样的消息:

git push -u origin master
ERROR:gitosis.serve.main:Repository read access denied
fatal: The remote end hung up unexpectedly

原因是我在 gitosis-admin/keydir 中有 2 个相同的 ssh pub-keys(相同的密钥,不同的名称)。

删除其中一个后,我可以推送到新的存储库

于 2011-11-10T20:54:15.000 回答
0

有同样的问题,原因是我在本地编辑了 gitosis.conf 并没有将其提交到服务器。

于 2011-12-24T10:33:35.140 回答
0

就我而言,ssh 客户端从 ~/.ssh 中选择了错误的私钥。

[gitosis] loglevel = DEBUG 帮助查看错误的用户正在登录。

于 2013-08-26T19:12:32.927 回答