自动化而不是根据网络位置进行配置

  • 本文关键字:位置 配置 网络 自动化 git
  • 更新时间 :
  • 英文 :


我基本上在家里或公司办公室工作,访问公司网络或其他地方(个人gitlab repos, github…)上可用的git repos。我通常在任何地方使用同一台笔记本电脑。

当我在办公室工作时,我可以ssh到我当地的公司仓库,但我不能ssh出网络。我已经在我的.gitconfig中设置了以下相关的配置片段,以便从家里克隆的repos仍然可以访问:

[url "ssh://git@comp.any.co/"]
insteadof = https://comp.any.co/
[url "https://pers.onal.co/]
insteadof = ssh://git@pers.onal.co:1234/
[url "https://github.com/"]
insteadof = ssh://git@github.com/

当我在家远程工作时,我不能再ssh到我的公司仓库,但我可以在其他地方使用ssh。在本例中,我需要将配置代码段更改为:

[url "https://comp.any.co/"]
insteadof = ssh://git@comp.any.co/
[url "ssh://git@pers.onal.co:1234/]
insteadof = https://pers.onal.co/
[url "ssh://git@github.com/"]
insteadof = https://github.com/

我实际上可以从每个位置强制每个回购使用https。虽然这对于个人和github仓库来说没有太大的区别,但在公司网络上有一些特殊性,使得这种协议切换非常受欢迎。

我正在寻找一种基于网络位置(例如ip子网,代理可用性…)自动化此配置开关的方法。我已经看过include.pathincludeif.path,但都不会让我执行脚本或检查例如环境变量。

我看到了includeif.path的一个可能的解决方案,并根据我的物理位置使用我在笔记本电脑上访问我的repos的路径。但这并不是真正的自动化,离理想还差得很远。

在我回去写一个脚本或shell函数来在git之外自动化这个之前,我是否错过了git配置的任何功能使用,实际上可以满足我的需求?

我看到了includeif.path的一个可能的解决方案,并根据我的物理位置使用我在笔记本电脑上访问我的repos的路径。但这并不是真正的自动化,离理想还差得很远。

然而,这是基于条件包含的git原生解决方案。
另一种选择是自定义脚本。

我处于相同的情况,并使用我可以在工作中访问的公司网络,但不能在家里,包括一个或另一个配置文件。

最新更新