- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我已经编写了一个 Go 库,并希望锁定和供应第三方依赖项。这样,对这些第三方依赖项的任何向后不兼容的更改都不会破坏我的库供其他用户使用。查看 Go 1.5 Vendoring Experiment 的原始提案有关 vendor 运作方式的更多背景信息。
我正在使用 Glide管理依赖关系和锁定特定版本。由于该项目是供其他人使用的库,因此我想将 vendor 文件夹 checkin 版本控制。这样,该库的用户无需安装 Glide 即可使用它。他们所要做的就是设置环境变量 GO15VENDOREXPERIMENT=1
。
我过去使用过 Glide,我对它非常满意。但是,我以前从未尝试过将 vendor 文件夹提交到版本控制。这就是为什么我突然遇到问题。我不认为这是 Glide 需要解决的问题,否则我会在那里提出一个问题。真的,这让我觉得这是 git 的一个问题。
我使用的是 git 版本 2.5.4。当我运行 glide install
时,所有依赖项都被克隆并存储在 vendor 文件夹中。当我尝试将 vendor 文件夹添加到 git 时,它会混淆地尝试为它们创建子模块。 (我相信这与每个依赖项都是一个克隆的 repo 并且仍然有一个 .git 文件的事实有关)。这不是我想要的行为,我很惊讶 git 默认会这样做。事实上,我花了一段时间才弄清楚实际发生了什么以及为什么没有正确添加依赖项。
Git 子模块令人困惑并且破坏了很多工具。我只想将出售的项目按原样添加到版本控制中。我希望所有源代码按原样存在,这样它就不会弄乱任何其他工具,并且会按照我希望的方式工作。
有没有办法在 git 中关闭这个默认行为?理想情况下,它可以基于每个项目。唯一相关的options for .gitconfig我发现似乎与在 git diff
中显示子模块或使用 git fetch
、pull
或 clone
.
如果没有,有没有办法在不使用子模块的情况下一次性添加 vendor 文件夹中的文件和文件夹?我希望有类似
git add --no-submodules vendor
的东西,但我找不到这样的东西。
我意识到我可以简单地删除每个依赖项中的 .git 文件,但由于多种原因,该解决方案并不理想。主要是,我或其他贡献者很容易忘记删除 .git 文件,因此无法正确 checkin 依赖项。我们必须记住在更新或添加新依赖项时执行此操作。
最佳答案
请注意,该问题的原始标题是“如何防止 git 默认使用子模块?”。我更新了标题,因为我想出的解决方案不涉及这样做。据我所知,当您添加的依赖项包含 .git 目录时,没有办法阻止 git 使用子模块。
相反,我决定让 git 将依赖项添加为子模块。子模块确实令人困惑,甚至带有自己独特的命令集。我发现这并不重要。该库的用户将永远不必直接与子模块交互,因为 go get
并且 Go vendor 实验将正常运行。此外,glide get
和 glide install
命令也仍然有效。
总而言之,我决定坚持使用子模块,但我从不直接使用子模块命令。
您可能还对查看 version 0.14.1 of Zoom 的发行说明感兴趣,我在其中实现了此更改并提供了一些额外的上下文。滑行issue #112还提供了有关该问题的更多信息。
更新:我说得太早了。从头开始安装时,按照我的方式使用子模块(这只是使用默认的 git 行为)似乎会导致 go get
出现问题。在我弄清楚如何让它发挥作用之前,我将取消选择它作为所选答案。
关于git - 如何在将 vendor 目录 checkin 版本控制时管理 Go 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34280436/
使用 Webpack,支持将代码拆分为不同的包。其中一个选项是指定您想要选择作为分割点的一组模块。 取自 here : var webpack = require("webpack"); module
我正在编写一个依赖于某些导入的库包,但我不确定如何正确处理它。 让我从目录结构开始: go/src/github.com/ ├── developer A/ │ ├── project 1 │
我要在我的 Rails 应用程序中使用 git-submodules 跟踪依赖关系。到目前为止,我已经将 haml、shoulda 和 authlogic 之类的子模块添加到“vendor/plugi
Java 中的 java.vendor 和 java.vm.vendor 属性有区别吗? 看起来两者总是一样的。这是修正假设吗? 如果您知道这两个值不相同的情况,请列出它们。 编辑: 我试图弄清楚哪个
例子:“在测试/虚拟中销售 Rails 应用程序”“为生产销售 Rails 的推荐方法是什么?” 最佳答案 Vendoring 是将所有第 3 方项目(例如插件、gem 甚至 rails)移动到 /v
将我的 Go 服务部署到 Google AppEngine(标准)时,我收到一条错误,描述未找到模块版本,但编译一切正常。 模块位于私有(private) Github 实例上,并 check out
这个问题在这里已经有了答案: Error "can't load package: package my_prog: found packages my_prog and main" (3 个答案)
我是Laravel的新手,我已经安装了PHP,并且我已经在本地服务器上使用过EasyPHP。我也安装了Composer,这里可能会有问题,所以我首先将其安装在PHP低于V8的默认文件夹中。然后我用8.
我正在尝试将一个 Go 项目转换为新的模块标准,但我在一个依赖项上遇到了问题。 该存储库提供了一个库(在本例中为 golang.org/x/net/html)以向该库添加一些功能;这意味着它已经修改了
我在玩 create-react-app和目前的代码拆分。它工作得非常好,直到我开始导入供应商库,这些库将包含在每个块中。 这是我目前的做法: App.js const HomePage = Load
Closed. This question is opinion-based。它当前不接受答案。 想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。 在6个月前关闭
以下两者似乎都有效: element.style.WebkitFlex = 1; element.style.webkitFlex = 1; 但是哪种语法是标准的? 最佳答案 第一个, eleme
我正在构建来自 github.com/tarm/serial 的示例程序. 案例 1:如果将上述 repo check out 到 $GOPATH/src/github.com/tarm/serial
我需要为构建期间使用的工具使用“vendoring”(github.com/mjibson/esc 和 golang.org/x/tools/cmd/stringer) 以满足我们的来源管理要求。 我
在生产构建我的 vue.js 应用程序后,我看到我的 block vendor 文件太大,这对 Web 性能有影响,屏幕如下: 如何减小此文件的大小? 我尝试通过延迟加载在我的 router.js 中
我必须修改 vendor 文件中的结构。假设这是结构体在 vendor 文件中的方式 type sampleStruct struct { sampleStringvar1 str
我正在使用 styled-components我的 React 项目中的库。 我想在开发期间禁用供应商前缀的生成。 在这么多相似的属性中找到一个指定的 CSS 属性来切换它并在浏览器的开发工具中测试是
我想了解在复习 go 模块和 vendor 目录时遇到错误的原因。显然,在主模块和 vendor 文件夹中具有相同的包会导致错误,我想了解原因。据我了解,如果有go.mod go甚至不应该检查 ven
究竟什么是“贩卖”?你如何定义这个词? 它在不同的编程语言中意味着相同的事情吗?从概念上讲,不看确切的实现。 最佳答案 基于 this answer 定义 here为: Vendoring is th
我有一个具有多个入口点的应用程序。但所有入口点都使用相同的第三方库。我想将这些第三方库单独放在一个单独的文件中。当我按照 documentation 中的步骤操作时,它将我的应用程序代码也移动到第三个
我是一名优秀的程序员,十分优秀!