更清洁的git远程网址

时间:2012-08-18 05:44:10

标签: git gitweb

我正在尝试使用gitweb作为Web界面运行我自己的git服务器。我在这里提供一个名为'git /'的目录:/Users/me/Sites/git,它是git.example.com

的文档根目录

我在我的mac上创建了一个名为'git'的用户,这样我就可以使用ssh git@git.example.com,并且我已登录了。

现在,我说我是'me@example.com'(用户),我想要推送到我的远程@ git.example.com,我必须输入git remote add gitweb ssh://git@git.example.com/~/Sites/git/projectname.git

有什么办法可以从网址中删除~/Sites/git/吗?理想情况下,我希望能够输入:git remote add gitweb ssh://git@git.example.com/projectname.git

2 个答案:

答案 0 :(得分:2)

GitWeb和ssh用于两种不同的Git访问机制:

  • Gitweb将由Apache http服务器提供服务:请参阅我的httpd.conf作为示例。但它不适用于克隆,仅适用于浏览。
  • http(s)访问需要this config,别名调用git-http-backend(在我的示例中,我调用gitolite-shell,因为我想从{{3}中受益})
  • ssh访问是通过ssh守护进程(这里不需要git守护进程,加上git协议不能用于推送),并且需要完整的路径。

ssh不需要完整路径来执行clone / push / pull命令的唯一情况是它使用authorization layer which is Gitolite来拦截你的git命令并调用自定义脚本(可以将您的“projectname.git”转换为“~/Sites/git/projectname.git”) 例如,ssh forced command mechanism就是这样做的。

答案 1 :(得分:1)

你可以利用git deamon的--base-path,例如 我在/ home / fengxx / gitdemo / 192.168.52.2下共享一个git repo1

git daemon --verbose --export-all --base-path=/home/fengxx/gitdemo/

在另一台电脑中,我可以运行

git clone git://192.168.52.2/repo1

如果我必须使用ssh URL将是〜/ gitdemo / repo1

git clone ssh://fengxx@192.168.52.2/~/gitdemo/repo1

您可以通过

设置user.name
git config --global user.name yourlogin