我有这个脚本:
#!/usr/bin/env bash
set -eo pipefail
cd "$(dirname "$BASH_SOURCE")";
pth_to_make="$GOPATH/src/ores/json-logging"
mkdir -p "$pth_to_make";
rm -rf "$pth_to_make";
ln -sf "$PWD" "$pth_to_make";
但是,此模块未在 go.mod 中声明为 go 模块...我将不同的依赖项符号链接(symbolic link)到 repo 以对其进行测试。
生产中真正的依赖是:
"$GOPATH/src/github.com/oresoftware/json-logging"
测试路径是:
"$GOPATH/src/ores/json-logging"
现在,我只想删除本地开发中的真正依赖路径,问题是它只是删除了 repo 中的 .git 文件夹,然后我最终不得不再次下载它。
有什么方法可以让我对真正的 repo/dep 文件夹进行符号链接(symbolic link),但不会丢失 git 的东西吗?也许我可以这样做:
mv "$GOPATH/src/github.com/oresoftware/json-logging" "/tmp/gotemp/json-logging"
# call the script above
# then when I am done:
rm -rf "$GOPATH/src/github.com/oresoftware/json-logging"
mv "/tmp/gotemp/json-logging" "$GOPATH/src/github.com/oresoftware/json-logging" # put it back
那会是最好的前进方式吗?
最佳答案
因此,为了扩展我的评论,听起来您所追求的是 replace
您可以阅读更多关于 here 的指令.但我在下面概述了一个简短的例子;
如果我们想象目录结构:
├── replace-directive
│ ├── go.mod
│ └── replace.go
├── sandbox
│ ├── go.mod
│ └── main.go
replace-directive
是一个带有 go.mod
的 go 模块文件包含:module example.com/replacedirective
go 1.14
沙盒是我们想要使用这个本地依赖版本而不是从
example.com
获取版本的地方。 .所以在我们的沙箱go.mod
文件我们有如下的替换指令;module example/sandbox
require (
example.com/replacedirective v0.0.0 // This would be your reference to your production dependency
)
replace example.com/replacedirective => ../replace-directive // This is your local dependency
go 1.14
因此,现在当您在代码中引用该模块时,它将使用您的本地依赖项。不需要符号链接(symbolic link)。
关于git - 如何开发和测试本地 go 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60648427/