Git&重定向

时间:2013-10-17 18:39:01

标签: git

我注意到当git(html)项目页面如下:

https://github.com/fruux/sabre-dav

以这种方式克隆:

git clone https://github.com/fruux/sabre-dav .

git remote -v一起列出的实际结果远程网址是这样的网址:

origin  git@github.com:foo/sabre-dav.git

大概是因为我有推送权。

所以这让我想知道是否可以将任何给定的项目URL重定向到git存储库。例如,如果我拥有http://myosproject.example.org,是否可以允许git clone http://myosproject.example.org并让它实际上以某种方式重定向到github项目。

2 个答案:

答案 0 :(得分:6)

只要裸git(.git文件夹)位于Web服务器DocumentRoot中,并且您设置了特定的post-update挂钩,它就可以正常工作。

See this book chapter for more on this

要将您自己的域名映射到github URL,我认为您只需要定义A记录(如果您知道IP地址)或CNAME记录(如果您只知道DNS

中的域名

也可以在Web服务器中配置反向代理,以将http://my.domain.com/project的请求传递给http://github.com/project

答案 1 :(得分:1)

  

如果我拥有http://myosproject.example.org,是否可以允许git clone http://myosproject.example.org并让它实际上以某种方式重定向到github项目

理论上,如果服务器知道某种方式重定向网址,那么这是可能的 Git now(2.12,2017年第一季度)将http-alternates视为重定向。

commit cb4d2d3commit 50d3413commit fcaa6e6commit 6628eb4commit 986d7f4Jeff King (peff)(2016年12月6日)。{
Junio C Hamano -- gitster --合并于commit 8a2882f,2016年12月19日)

服务器还有另一种方法可以让git客户端获取任意内容 内容:通过具有http替代文件(或常规文件) 替换文件,用作备份。

  
      
  • 除非http.followRedirects设置为“始终”,否则我们将不会跟踪http替代(或替代)的远程重定向
  •   
  • CURLOPT_PROTOCOLSCURLOPT_REDIR_PROTOCOLS放在一起,将自己限制在一个已知安全的设置中,并尊重用户提供的任何白名单。
  •   
  • 在stderr上提及备用对象存储,以便用户知道可能涉及另一个对象源。
  •   

Git 2.13通过仅在没有错误时更新基本URL来改进那些http重定向

commit 8e27391Jonathan Tan (jhowtan)(2017年2月28日) Junio C Hamano -- gitster --于2017年3月10日commit d0f549f合并)

  

http.c支持

格式的HTTP重定向

http://foo/info/refs?service=git-upload-pack    - > http://anything    - > http://bar/info/refs?service=git-upload-pack

  

也就是说,只要Git部分路径和查询   字符串保留在最终重定向目标中间   步骤可以有任何URL   但是,如果其中一个中间步骤导致HTTP异常,则会打印出令人困惑的“unable to update url base from redirection”消息,而不是带有HTTP异常代码的Curl错误消息。

     

在尝试检查网址的“基本”部分是否不同之前,请教http检查HTTP状态。