1

我注意到存在标记 gem 版本发布的习惯。这样,我可以理解 bundler 会尝试检查特定的标签,并尝试构建该特定的 gemspec。

但是,我也从 Sven Fuchs那里找到了gem-release gem。我本来希望凹凸命令正在为每个版本的 gem 创建标签。但是,我看到的只是对version.rb文件的修改(没有创建标签)。当我说:

gem "some_gem","0.0.1"

当我说:

gem "some_gem","0.0.2"

bundler 是如何安装它们的?如果不是上面的命令(假设我克隆了 gem 的 repo),我写:

gem "some_gem","0.0.3",:path => "~/some/path"

现在如何使用正确的 gem 版本?

4

1 回答 1

1

Bundler 默认从http://rubygems.org/获取它的 gem ,而不是从 Github。当作者实际发布它们时,Rubygems 具有实际发布的版本。

如果您告诉 bundler 从 git 地址安装,例如。with:git => "git://github.com/svenfuchs/gem-release.git"或 github with :github => "svenfuchs/gem-release",它实际上会从存储库中获取它。

如果没有指定其他选项,bundler 将在默认分支 (master) 上获取最新提交 (HEAD)。在这种情况下,bundler 将版本视为提交哈希。同样,如果您指定:branch选项,它只是使用不同的分支。

如果您指定版本,它会找到与您请求的版本匹配的标签。您应该知道标签不是提交的一部分。git 存储库中的标记是指向提交的指针。您可以通过在https://github.com/svenfuchs/gem-release/tags上浏览找到所有标签。

您会注意到该标记v0.4.1指的是提交哈希34f563bd294c2...,它链接到提交。但是,由于标记不是提交的一部分,因此您不会在提交本身中看到标记操作。您只会看到标签引用了该提交。

于 2012-09-08T00:05:19.230 回答