Git存储库URL – 没有绝对path的SSH语法
我正在运行一个可以通过SSH访问的git仓库服务器,在一个自定义的端口上(比如说12345)。 我发现在这种情况下,需要使用SSH语法指定存储库URL:
git clone ssh://login@server.com:12345/absolute/path/to/repository
我想以这样的方式设置它,以便用户克隆存储库而不指定绝对path。
git clone ssh://login@server.com:12345/repository.git
我已经研究了这个话题,发现了以下选项:
- 从URL中删除自定义端口,并使用户将其添加到
~/.ssh/config
文件(最后一种解决方法,而不是解决scheme)。 - 删除SSH并使用
git-daemon
并指定它的--base-path
参数(仍然是一个解决方法…) - 使用像
gitosis
或gitolite
这样的工具 – 但是仅仅为了这个目的而使用它会不会是一种矫枉过正? Gitosis已经停产,gitolite是一个相当庞大的软件…
我只需要一个带有自定义端口的“漂亮的”SSH URL(这样我就可以分发整个git clone
命令,而且不需要远程用户)。 对我而言,哪一种解决scheme最可行?
如果使用ssh
URL的替代forms,则不需要绝对path。 例如…
git clone lars@myserver.example.com:repos/myrepo.git
…将相对于我的主目录克隆版本库repos/myrepo.git
,尽pipe这不允许使用备用端口。 但是,您也可以使用~
以任一forms指示用户的主目录,例如:
git clone ssh://login@server.com:12345/~/repository.git
顺便说一句,尽pipe停药, gitosis
function相当好,代码是小而易于理解。 它为存储库提供了一套有用的访问控制和自助服务pipe理。 我不会完全打折。
我这样做,并不完全是你问的,而是closures和漂亮的链接:
创build一个像
/srv/git
你把你的git项目
然后做一个象征性的链接到家:
ln -s /srv/git $HOME
接下来你可以有更短的链接
git clone user@server:git/myproject.git
如果你有一个项目,你可以摆脱url中的git / part
ln -s /srv/git/myproject.git $HOME
下一个
git clone user@server:myproject.git
将工作。 当然,URL末尾的.git只能通过名称中的.git创build。 还要注意,不需要ssh://部分:@意味着它是git的ssh URL。
更新:让我添加一个旁注:按照最新的文件系统层次结构标准,我现在使用/srv/git
作为存储库位置。