我注意到当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项目。
答案 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 cb4d2d3见commit 50d3413,commit fcaa6e6,commit 6628eb4,commit 986d7f4,Jeff King (peff
)(2016年12月6日)。{
(Junio C Hamano -- gitster
--合并于commit 8a2882f,2016年12月19日)
服务器还有另一种方法可以让git客户端获取任意内容 内容:通过具有http替代文件(或常规文件) 替换文件,用作备份。
- 除非
http.followRedirects
设置为“始终”,否则我们将不会跟踪http替代(或替代)的远程重定向- 将
CURLOPT_PROTOCOLS
与CURLOPT_REDIR_PROTOCOLS
放在一起,将自己限制在一个已知安全的设置中,并尊重用户提供的任何白名单。- 在stderr上提及备用对象存储,以便用户知道可能涉及另一个对象源。
Git 2.13通过仅在没有错误时更新基本URL来改进那些http重定向
commit 8e27391见Jonathan Tan (jhowtan
)(2017年2月28日)
(Junio C Hamano -- gitster
--于2017年3月10日commit d0f549f合并)
格式的HTTP重定向
http.c
支持
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状态。