在Linux上的Git守护进程?

试图在linux服务器上设置一个简单的git-daemon,并从一个窗口框中与之交谈。

在Linux服务器上:

  1. 制作一个文件夹/ home / foo / bar
  2. CD/ home / foo / bar
  3. 在这里做一个git –bare init
  4. 做一个touch git-daemon-export-ok
  5. CD/ home / foo
  6. 运行命令git-daemon –verbose –reuseaddr –base-path = / home / foo –enable = receive-pack

在Windows客户端w龟git

  1. git.exe clone –progress -v“git:// servername / bar”“C:\ source \ myFolderName” (works)
  2. 创build文件a.txt,将其添加到git,并提交(工作)
  3. 做一个git.exe拉“起源”主 ,然后得到致命的:无法find远程裁判主 (有道理,主还没有)
  4. 做一个git.exe推“起源”大师:主乌龟永远挂起而不做任何事情

我明白为什么我不能从远程分支上的主人拉..但为什么我不能推我的第一个提交到远程回购? #4真的应该工作。 试图用乌龟和mysysgit命令行,这两种情况下,我永远挂起。 我错过了什么? 服务器没有有用的日志

不幸的是,这可能是msysgit http://code.google.com/p/msysgit/issues/detail?id=457中的一个错误

到目前为止有一个解决方法(不是在我认为的主要分支),但没有真正的修复。

我倾向于访问从我的服务器读取/写入使用的存储库:

git remote add [email protected]:/repository

这是git通过ssh,而不是通过git守护进程。 您可以使用此configuration,只要user@server有权访问存储库。

你可以用这个做一些其他的事情:

  • 使用shell /usr/bin/git-shell创build一个名为git的用户。 用户将只能执行git操作,如果你这样做 – SSH不会工作。
  • 创build一个/home/git/.ssh/authorized_keys文件,其中包含可以连接的ssh密钥。 这里添加的任何密钥都可以让你提交,所以你可以添加几个不同的用户密钥。

这个设置让你控制谁可以提交,同时让任何人通过高效的git://协议进行克隆。

但是,如果您确实想要收到包裹,我认为正确的命令是:

 git-daemon --verbose --reuseaddr --export-all --base-path=/home/foo --enable=receive-pack 

根据这个堆栈溢出post 。