วิธีการรับ "ส่งมอบ" ที่เฉพาะเจาะจงของอัญมณีจาก GitHub?


155

ฉันใช้rails_adminและเนื่องจากมันอยู่ในการพัฒนาที่ใช้งานอยู่ (มาก) ข้อผิดพลาดก็ปรากฏขึ้นทุกขณะ

ไม่มีรุ่นสำหรับอัญมณีเท่าที่ฉันสามารถบอกได้ว่าเป็นอัญมณีใน GitHub ดังนั้นฉันจึงไม่สามารถใช้:versionคีย์สำหรับการประกาศอัญมณีใน Gemfile ได้

มีวิธีที่ฉันสามารถ "ผูก" ความมุ่งมั่นเฉพาะ (ที่ฉันรู้ว่าทำงานได้ดีสำหรับฉัน) กับ Gemfile หรือไม่

ฉันมี Gemfile อยู่ในปัจจุบัน:

gem 'rails_admin', 
  :git => 'git://github.com/sferik/rails_admin.git'

ฉันต้องการทำสิ่งนี้ (ตัวอย่าง "commit_id"):

gem 'rails_admin', 
  :git => 'git://github.com/sferik/rails_admin.git',
  :commit_id => "4e7d53e3c5c4c3c5c43c3"

เป็นไปได้ที่จะทำอย่างไรกับ GitHub?

คำตอบ:


271

สิ่งเหล่านี้ควรได้ผล:

gem 'rails', :git => 'git://github.com/rails/rails.git', :ref => '4aded'

gem 'rails', :git => 'git://github.com/rails/rails.git', :branch => '2-3-stable'

gem 'rails', :git => 'git://github.com/rails/rails.git', :tag => 'v2.3.5'

แหล่งที่มา: วิธีการติดตั้งอัญมณีจากที่เก็บ git


1
เพียงเพราะพวกเขาทั้งหมด (และ.git/HEAD) อ้างถึงในคอมไพล์ :) เพิ่มเติม: git-scm.com/book/en/v2/Git-Internals-Git-References
medik

63

รุ่นที่สั้นกว่า:

gem 'rails', :github => 'rails/rails', :ref => '4aded'

หรือใน Ruby 1.9+

gem 'rails', github: 'rails/rails', ref: '4aded'

และตั้งค่าแหล่งที่มาเริ่มต้น GitHub ให้เป็น https ด้วย:git_source(:github) do |repo_name| repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") "https://github.com/#{repo_name}.git" end
Dorian
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.