我在
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等通常可用的版本.