这是情况,我有一个名为git的文件夹,其中包含各种 – git仓库。 这是在我的服务器上是CentOS 5.我家里的个人电脑是Windows XP。
我想推我的本地存储库到我的服务器使用每个存储库的基础上的帐户。 我一直在寻找几个小时,没有运气。 这是我所做的最接近的事情。
我通过input以下命令在服务器上运行守护进程:
git daemon --verbose --base-path=/path/to/git/parent/folder --export-all
然后我使用TortoiseGit来推送地址:git://myserver.com/project,我从守护进程中得到这个:
从XX.XX.XX.XX扩展连接
属性(22字节)存在
请求
接收包'/项目'
'receive-pack':服务未启用
为'/ path / to / git / parent / project'
[XXXX]已断开(有错误)
我使用了–enable = receive-pack,并成功将我的本地存储库推送到服务器,但结果不是我想要的:即以用户身份login。 接收包使每个人都可以匿名推送到服务器。
我search了几个小时,但我找不到如何为每个存储库独立configuration帐户。 我已经阅读了各种有关SSH的文章,但我不确定这是否是我想要的。 据我所知,SSH是通过login到服务器上的Linux帐户(即根,用户A等)安全地连接到我的服务器而这不是我想要的。
以SVN为例,在颠覆的情况下,您可以创build一个.htpasswd文件,其中包含仅用于特定存储库的帐户。 有没有类似的方式与Git?
谢谢。
看看git仓库托pipe应用程序gitosis 。 引用Debian的gitosis包描述:
This package aims to make hosting git repositories easier and safer. It manages multiple repositories under one user account, using SSH keys to identify users. End users do not need shell accounts on the server; they will talk to one shared account that will not let them run arbitrary commands.
你可以在http://eagain.net/gitweb/?p=gitosis.gitfindgitosis源代码
关于如何设置的文档: http : //scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way
我对gitosis感到非常满意,我们在grml项目( http://grml.org/ )上使用了它,这个项目有100多个版本库,并且没有任何问题。
你可以尝试使用' git + ssh // 'uri而不是' git // '。 这将允许您运行无服务器(git明智),并授予不同的用户对每个存储库的权限。 一旦你完成了,你可以使用
git+ssh://user@remotehost/repos/path/project.git
作为git远程位置。
要初始化一个空的存储库,你可以把数据存入,在远程主机上使用' git -bare init '命令。
另一件你可能要考虑的事情,取决于你在做什么,是Github 。 它运行的非常好,而且很便宜,易于维护,并且具有一些精巧性,内置的问题跟踪等等。 我非常喜欢个人项目,而单独的私人回购并不需要太多的补充。
有时候不用自己去做就可以了。