go mod的时候报unknown revision怎么办/如何用brew安装指定版本的包

go mod这玩意对git版本有迷之依赖,有大佬研究了一下,发现git版本在1.9.1和2.7.4之间才能正常工作,而系统自带的或者brew装出来的git,往往都太新了

那么怎么办呢?只有把git装到指定版本才能解决这个问题。MacOS下一般用brew来装这些乱七八糟的东西,但它默认会给你装上最新版,想要旧版本就比较麻烦,这里整理一下brew如何装指定版本的formula。

步骤

1. 把brew的formula仓库整个搞下来

git -C "$(brew --repo homebrew/core)" fetch --unshallow

2. 去仓库里找合适版本的commit id

进到仓库目录下

cd "$(brew --repo homebrew/core)"

git log找到需要的版本,

用下面命令自动搜,找包含我们想要的版本号2.6.4字样的commit

git log master -S'2.6.4' -- Formula/git.rb

或者用下面的命令手工看

git log master -- Formula/git.rb

找到我们需要的commit

commit 3d76c88ff2e71113dec4837e73240d8b018c3b39
Author: Robin Kunde <robin.kunde@recoursive.com>
Date:   Tue Dec 8 18:45:37 2015 -0500

    git 2.6.4

    Closes Homebrew/homebrew#46813.

    Signed-off-by: Dominyk Tiller <dominyktiller@gmail.com>

commit后面那串3d76c88ff2e71113dec4837e73240d8b018c3b39就是commit id,复制下来。

3. 去GitHub上找到这个文件的路径

自己把下面的地址补全

https://github.com/Homebrew/homebrew-core/blob/<commit_id>/Formula/<formula_script>

例如我们找的就是

https://github.com/Homebrew/homebrew-core/blob/3d76c88ff2e71113dec4837e73240d8b018c3b39/Formula/git.rb

打开页面,点击Raw按钮,打开原始文件,把url复制下来,我们这里获得了

https://raw.githubusercontent.com/Homebrew/homebrew-core/3d76c88ff2e71113dec4837e73240d8b018c3b39/Formula/git.rb

4. 用brew安装这个formula

brew install命令,后面接上面那个文件url。

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/aa4c9bb45c1d790597e5d4300f1115c752b68578/Formula/git.rb

另外也可以本地切分支找这个文件来直接装,就不需要去github上找url了。

最后你就可以试试go mod有没有恢复正常啦。(另外由于众所周知的社会主义原因,推荐配合使用proxychains-ng以便正常安装go的依赖)

参考