我可以使用 ssh URL 将已从一个名称或路径移动的远程 git 存储库重定向到新的名称或路径吗?

我可以使用 ssh URL 将已从一个名称或路径移动的远程 git 存储库重定向到新的名称或路径吗?

我有一个现有的、长期存在的 git 存储库,我想将其移动到不同的路径(并最终移动到不同的服务器,具体取决于其工作方式)。

显然,我可以通过使用从旧位置到新位置的符号链接来实现这一点,但我更喜欢(并且最终需要)一个完全不依赖于以前位置可访问的解决方案,因为它会在某个时候消失(这是我移动它的全部原因)。

问题是我已经在无数不同的地方克隆了该 repo,这些地方只是偶尔访问并且主要在后台使用,例如在各种虚拟机等上,因此它们不容易一次全部更新,因为它们都需要启动和停止,而且它会花费很长时间并且涉及大量的手动工作,我想避免这种情况,而且可能会遗漏很多。

假设我通过符号链接在两个地方提供我的存储库:

/home/git/git/happy/path
/home/git/git/this/is/a/bad/path -> /home/git/git/happy/path (symlink)

在每个克隆副本上,总是使用 ssh:// 协议从我自己的本地 git“hub”服务器克隆存储库,我希望对其进行如下更改:

bash# cd /cloned/repo
bash# git config --get remote.origin.url
> ssh://git@my-hub-server/git/this/is/a/bad/path
bash# git pull
> <various git stuff happens here>
bash# git config --get remote.origin.url
> ssh://git@my-hub-server/git/happy/path

我希望有某种方法(黑客解决方案也可以)可以像 HTTP 301 永久移动一样工作,但通过 SSH。目标是在远程“集线器”服务器上引起单一更改,这将使从那里拉取的所有存储库也更新其远程原始 URL 以使用新路径。我想知道我是否能以某种方式使用钩子做些什么?

如果这完全不可能,我愿意接受一个更具反应性的解决方案;例如,我可以以某种方式监视一些日志文件,以查看何时访问或提取“重定向”的符号链接存储库,然后向我发送带有主机名或 IP 的电子邮件警报,这样我就知道我仍然需要去将克隆的存储库更新到新的 url。

在我们讨论这个问题的时候,有谁知道 https:// repo 是否可以进行 301 重定向以执行我上面描述的操作?因为如果 git 真的支持 https 上的该功能,我认为仅凭这一点就值得我切换整个存储库方案。

相关内容