我在
github上有一个
rails repo的分支,我有一个分支,基于rails-2-3稳定的分支.我想根据rails 2.3.10与我的应用程序一起开发一些更改.我们使用bundler,该应用程序使用SVN进行版本控制.
在rails的github fork中使用我的分支的最干净的方法是什么?
一种方式是:
这将工作,但不足够干净,因为我们必须在repo更改时手动更新所售的版本,我们必须检查git repo到svn.
我在Gemfile中尝试过这样的变体:
gem 'rails','2.3.10',:git => 'git://github.com/traveliq/rails.git',:branch => 'tiq-fixes' gem 'rails',:tag => 'v2.3.10' gem 'rails',:git => 'git://github.com/rails/rails.git',:tag => 'v2.3.10'
所有这些最初都在运行捆绑安装时工作,但是当启动应用程序时,它在加载路径中找不到rails:
/home/mt/Development/config/boot.rb:57:in `require': no such file to load -- initializer (LoadError) from /home/mt/Development/config/boot.rb:57:in `load_initializer' from /home/mt/Development/config/boot.rb:117:in `run' from /home/mt/Development/config/boot.rb:11:in `boot!' from /home/mt/Development/config/boot.rb:130 from script/console:2:in `re
我的Gemfile.lock条目是这样的:
GIT remote: git://github.com/traveliq/rails.git revision: 25139ac92cea5b17791d71359bc3ae2a5d526652 branch: tiq-fixes specs: rails (2.3.10) ... DEPENDENCIES ... rails (= 2.3.10)!
解决方法
巴鲁的回答让我指出了正确的路线,但这里还有一些细节:
有必要拼凑在一起.gemspec文件大多数宝石在轨道repo / 2-3稳定分支 – 我的采取可以看到或分叉在http://github.com/traveliq/rails/commit/46d9042c9125abbbedfc672f8523d81210f4f320
要将其包含在Gemfile中,请使用:
git "git://github.com/traveliq/rails.git",:branch => 'tiq-fixes' do gem 'rails' gem 'actionmailer' gem 'actionpack' gem 'activerecord' gem 'activeresource' gem 'activesupport' end
请注意,您不能使用’railties’,只定义’rails’宝石.
顺便说一下,在这个工作的同时,在我的本地repo指向Gemfile是更容易的,这是通过这种方式完成的(rails是克隆了repo的文件夹,从Gemfile开始的级别):
gem 'rails',:path => 'rails/railties' gem 'actionmailer',:path => 'rails/actionmailer' gem 'actionpack',:path => 'rails/actionpack' gem 'activerecord',:path => 'rails/activerecord' gem 'activesupport',:path => 'rails/activesupport'
在定义rails / railties.gemspec之后,您也可以省略一些这些宝石,并且可以使用gemcutter等通常可用的版本.