2

我正在尝试使用 gitweb 作为 Web 界面运行我自己的 git 服务器。我在这里提供了一个名为 'git/' 的目录/Users/me/Sites/gitgit.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

4

2 回答 2

2

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

  • Gitweb 将由 Apache http 服务器提供服务:以我httpd.conf的为例。但它不是用于克隆,仅用于浏览。
  • http(s) 访问将需要此配置,并使用别名调用git-http-backend(在我的示例中,我调用gitolite-shell是因为我想从Gitolite 授权层中受益
  • ssh 访问是通过 ssh 守护进程(这里不需要 git 守护进程,而且 git 协议不能用于推送),并且需要完整路径。

ssh 不需要完整路径来执行 clone/push/pull 命令的唯一情况是它使用ssh强制命令机制来拦截您的 git 命令并调用自定义脚本(它可以转换您的“ projectname.git”变成“ ~/Sites/git/projectname.git”)。
例如,这就是Gitolite所做的。

于 2012-08-18T08:02:15.737 回答
1

你可以利用 git deamon 的 --base-path,例如我在 192.168.52.2 的 /home/fengxx/gitdemo/ 下共享一个 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
于 2012-08-18T07:22:50.770 回答