Git代码仓库未导出:致命错误:远程终端意外挂断

19

设置新的 Git 安装。

在一台 Windows 笔记本电脑上,我正在运行(在 cygwin 下):

git daemon --base-path=/cygdrive/c/work/proj/  

我的项目根目录是 c:\work\proj\proj1。在 c:\work\proj\proj1\ 下有一个 .git 目录。
c:\work\proj\proj1 目录下存在 git-daemon-export-ok 文件。(git-daemon-export-ok 可以是一个空文件,对吗?)

在同一局域网内的另一台 Windows 计算机上,我已经尝试了许多这样的变化(在 cygwin 下):

git clone git://xx.xx.xx.xx/proj1  

我期望守护进程会将“proj1”附加到基本路径并执行正确的操作。

在服务器上,我看到:

5728] '/cygdrive/c/work/proj/proj1/.git': repository not exported.
在客户端上我看到:
$ git clone git://xx.xx.xx.xx/proj1
Initialized empty Git repository in /cygdrive/c/work/proj/proj1/.git/  
fatal: The remote end hung up unexpectedly

我做错了什么?
谢谢提前帮助!...

4个回答

44

你需要在 .git 目录下创建 git-daemon-export-ok 文件。 不要将其与你的代码一起提交到仓库中,只需在 brancheshooksinfo 等目录旁边创建一个名为该文件的空文件即可。


8
谢谢。关键是在 .git 目录中放置 git-daemon-export-ok 文件,而不是父目录中。 - Number8
13
使用 --export-all 选项来运行 git-daemon。 - Jakub Narębski

3

我曾经遇到过同样的问题,但原因不同。如果Ted的答案对你无效,请尝试将"--enable=receive-pack"添加到你的git-daemon选项中。这对我起了作用。


2
如果您正在使用gitosis,您必须在gitosis.conf文件中添加以下两行内容(注意:“repo”不等于“group”):
[repo myrepo]
daemon=yes

当您推送gitosis-admin时,它会自动创建git-daemon-export-ok
如果您尝试在存储库中手动创建该文件,则该文件将在一段时间后不断消失。

1
我想补充一下,如果用户使用的是gitolite而不是gitosis,则可以通过在应该可用于使用git和git协议进行克隆的存储库的部分中添加“R = daemon”来自动执行此操作。 - Mogget

2

出于某种原因,我不得不添加“--export-all”才能使其正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接