5

我正在运行 bundler v1.3.0.pre.2 并试图让 bundler 将一个本地 git 存储库捆绑到一个 rails 应用程序中。

宝石文件:

gem 'mygem', :github => 'myrepo/mygem', :branch => 'develop'

配置:

bundle config local.mygem /path/to/local/git/repo

捆绑安装抛出错误:

/path/to/local/git/repo 的 mygem 的本地覆盖正在使用分支开发,但 Gemfile 指定开发

这是一个错误吗?我看到分支名称完全相同。有什么问题?Bundler v1.2.3 也出现同样的错误

4

4 回答 4

10

您可以使用本地 gem,甚至可以像这样使用您正在处理的分支

gem 'rspec-rails', path: '~/forks/rspec-rails', branch: 'feature-branch'

只需更改githubpath, 然后

bundle install

同样就捆绑器配置而言,虽然它在文档中,但我从来不需要像上面那样更改本地配置。

使用这种方法,我从来不需要删除Gemfile.lock,它只会获取对本地存储库的更改。

虽然我不推荐它,但您可以禁用 bundler 使用的分支检查功能,以确保您在开发时使用正确的分支

bundle config disable_local_branch_check true
于 2013-06-17T21:49:34.933 回答
7

如果您只需要指向您正在使用的本地存储库中的一个分支,那么在 gemfile 中:

gem 'gem-name', :path=> 'relative/path/to/directory'

bundle然后在-ing之前为该“gem”创建捆绑器配置

(请记住,存储库名称可能与 gem 的名称不同,尽管这不是常态)。

bundle config local.repository-name relative/path/to/directory


神奇的是,当您启动本地服务器时,当前在本地签出的任何分支都将处于活动状态。如果您需要进行更改或更改分支,您可能需要重新启动服务器(除非您有某种类型的自动重新加载功能)。

一个问题是已经建立了配置设置(比如说通过上面的机制),并且您需要使用/引用远程 git gem - 您不需要捆绑器配置来使用远程 git gem(如果您有一个活动的配置,你会得到local override错误)。

检查以确保您没有给定 gem 的本地设置:

bundle config local.gem-name

如果这样做,请删除该 gem 的配置:

bundle config --delete local.gem-name

然后在 gemfile 中指向远程仓库和分支:

gem 'gem-name', :path => 'https://github.com/reponame.git', :branch => 'branch_name'

更多信息:

Git 宝石:http ://bundler.io/v1.7/git.html

“捆绑配置”:http ://bundler.io/v1.7/man/bundle-config.1.html

于 2014-08-14T18:17:57.217 回答
1

这个GitHub 问题表明解决方法可能是删除Gemfile.lockbundle install再次执行。

于 2013-03-31T20:48:21.643 回答
1

您在 Gemfile 中引用的分支需要与您在本地存储库中签出的分支相同。请注意,在本地存储库中提交后,您需要在主应用程序上运行 bundle install ,以便它重建 Gemfile.lock 以包含新的修订哈希并提交它。我建议使用下面的 gem,因为它可以为您自动执行此过程,并且还有助于其他情况。有关详细信息,请参阅 gem 页面。

https://github.com/EPI-USE-Labs/git-bundle

发生的事情的完整细节:

当您在 gemfile 中使用 git 存储库时,您可以使用bundle local overrides 进行开发,它将修订哈希存储在您的 Gemfile.lock 中。在生产中,这些确切的修订哈希将在运行 bundle install 时被检出。

宝石文件: gem 'example', git: 'https://github.com/your_name/example.git', branch: :master

捆绑配置 shell 命令: bundle config local.example /path/to/local/git/repository

Gemfile.lock(自动生成): GIT remote: https://github.com/your_name/example.git revision: b9270e61abb89e1ff77fb8cfacb463e4d04388ad branch: master

于 2016-07-01T16:23:40.457 回答