我运行一个Git仓库服务器通过SSH访问,自定义端口上(假设12345)。 我发现,在这种情况下,库URL需要使用SSH语法指定:
git clone ssh://login@server.com:12345/absolute/path/to/repository
我想设置它以这样一种方式,这将是用户能够克隆库,而无需指定的绝对路径。
git clone ssh://login@server.com:12345/repository.git
我研究的话题,发现如下选项:
- 从URL中删除自定义端口,使用户将其添加到自己
~/.ssh/config
文件(一个不得已的解决办法,而不是解决方案)。 - 删除SSH和使用
git-daemon
,并指定其--base-path
参数(仍然是一个解决办法...) - 使用像一个实用
gitosis
或gitolite
-但它不会是一个矫枉过正使用它仅用于这一目的? Gitosis的中断,gitolite是一个相当庞大的软件件...
我想要的是一个“漂亮”的SSH URL与自定义端口(这样我就可以分发整个git clone
命令,并要求仅此而已从远程用户)。 其中,上述解决方案之一将是最可行的在我的情况?
如果您使用的另一种形式ssh
的网址,你并不需要一个绝对路径。 例如...
git clone lars@myserver.example.com:repos/myrepo.git
...将克隆库repos/myrepo.git
相对于我的主目录,虽然这不允许使用备用端口。 但是,您也可以使用~
在任一形式来表示用户的主目录,例如:
git clone ssh://login@server.com:12345/~/repository.git
顺便说一句,尽管被停产, gitosis
功能相当不错,而且代码既小又容易理解。 它提供了访问控制和资料库的自助服务管理的一组有用。 我不会完全打折呢。
我这样做,你问不完全是,但接近与漂亮的链接:
创建像路径
/srv/git
你的地方,你的Git项目
接下来做一个符号连接到家庭:
ln -s /srv/git $HOME
接下来,你可以有短链接
git clone user@server:git/myproject.git
如果你有一个单一的项目,你可以摆脱在URL中的git /部分
ln -s /srv/git/myproject.git $HOME
下一个
git clone user@server:myproject.git
将工作。 当然,在URL的末尾git的只能来自创造裸名称中的.git。 还需要注意的是SSH:不需要//部分:@意味着它是混帐一个SSH URL。
更新:让我补充一点题外话:继最近的文件系统层次标准我现在用/srv/git
存储库位置。