git - 如何开发和测试本地 go 模块

标签 git go symlink go-modules

我有这个脚本:

#!/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/

相关文章:

bash - 使用 bash 删除目录中未链接的所有文件夹

git - 使用本地存储库加速 SVN?

git - git 文档中的 'unwrapped subject and body' 对于 %B pretty-print 说明符是什么意思

go - 了解 etcd Leader 选举 API

python - 什么替代了 OSX 上 Python 中现已弃用的 Carbon.File.FSResolveAliasFile?

scripting - 使用 Clojure 创建符号链接(symbolic link)

来自 GitHub RPC 的 git clone 失败;结果=56,HTTP 代码

git 工作流程分支更新

mongodb - 了解 Golang 上下文超时

postgresql - 无法检测默认用户名。请明确提供一个