git - 处理 Go Git 存储库及其非代码资源

标签 git build go build-process

我是 Go 的新手,我正在努力寻找处理 Git 存储库的最佳方法。

目前我使用的是Go官方推荐的目录结构,但是我觉得它有很多坑。

有点像

$GOPATH
  bin
    non-important-stuff
  pkg
    non-important-stuff
  src
    github.com
      username
        reponame

情况是我有很多非代码资源,比如默认设置文件、html 模板和图像……但我觉得把它放在“src/github.com/username/reponame”中似乎有点奇怪目录(因为第一个“src”部分)。

这个问题最常见的解决方案是什么?

我现在面临的另一个问题是,我不知道最常用的“make”工具来构建带有外部资源(如默认设置文件或 html)的整个项目(“go build/install”命令只负责源代码文件)。 “安装”可执行文件时如何处理相对路径?

免责声明:我已阅读此主题:How to access resource files after the 'go' tool installed the executable? ,但我没有看到可靠的解决方案。我的可执行文件是一个服务器,每次我想重新配置服务器时都不能选择嵌入设置文件并重新编译(也不是通过执行参数传递所有设置参数的选项,因为设置文件非常复杂) .

最佳答案

我假设您在谈论网络开发。

正如您正确指出的那样,目录结构适用于代码,而 go 工具套件只负责构建二进制文件并将它们放在常规位置(pkgbin)。

你想要的是二进制+资源文件的完整部署过程。

您应该滚动自己的部署过程,或者使用现有的框架。

自制程序草图:

  • 将所有资源放在项目的特定目录下(例如resources/)
  • 使用git archive resources/ 打包文件
  • 复制可执行文件旁边的文件
  • 选择一种方式来调整本地参数(数据库服务器、数据库名称等)
  • 选择一种方法让您的服务器重新加载资源(重新启动您的服务器/系统地重新读取资源/检查修改日期/...)

如果您正在寻找现有的网络框架:

Revel是一个选项,它处理了很多 Gist ,其中包括开发过程中的热重新编译,以及 deployment procedure .

关于git - 处理 Go Git 存储库及其非代码资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17086309/

相关文章:

c++ - 如何在 Windows 上构建 SHHTTPD?

go - Go 中的相对路径

go - 第一次写入后写入终止符(即 ox1e)失败

git:将子树从一个分支 merge 到另一个分支

Java gradle执行代码

python - 在 SCons 中创建库时使用的构造变量是什么?

python - 如何使用golang使用ecdsa私钥对消息进行签名?

git error unpack failed missing blob on git review to gerrit

git - 如何使用 git 按任务策略执行分支

git - 如何将 git repo 提交到 git repo(不是子模块)