summaryrefslogtreecommitdiff
path: root/v1.1/git.html
blob: f5cb3a593da02055106789c8a25247247a135713 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<!DOCTYPE html>
<html>
  <head>
    <title>Bundler: The best way to manage a Ruby application's gems</title>
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
    <meta content='276VSYOko8B8vIu1i8i5qbj7_ql5PXo0dU69XQy-SL' name='globalsign-domain-verification'>
    <link href='/images/favicon.png' rel='shortcut icon' type='image/png'>
    <link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <div id='body'>
      <div id='header'>
        <a class="image" href="/"><img width="725" alt="The best way to manage your application's dependencies" src="/images/gembundler.png" /></a>
      </div>
      <div id='container'>
        <div id='contents'>
          <h2>Gems from git repositories</h2>
          <div class='contents'>
            <div class='bullet'>
              <div class='description'>
                Bundler adds the ability to use gems directly from git repositories. Setting
                them up is as easy as adding a gem to your Gemfile. Using the very latest
                version of a gem (or even a fork) is just as easy as using an official
                release.
              </div>
              <div class='description'>
                Because Rubygems lacks the ability to handle gems from git, any gems
                installed from a git repository will not show up in <code>gem list</code>.
                They will, however, be available after running <code>Bundler.setup</code>.
              </div>
            </div>
            <div class='bullet'>
              <div class='description'>
                Specify that a gem should come from a git
                repository with a .gemspec at its root
              </div>
              <pre class="highlight ruby"><span class="n">gem</span> <span class="s1">'nokogiri'</span><span class="p">,</span> <span class="ss">:git</span> <span class="o">=&gt;</span> <span class="s1">'https://github.com/tenderlove/nokogiri.git'</span>&#x000A;</pre>
            </div>
            <div class='bullet'>
              <div class='description'>
                If there is no .gemspec at the root of
                a git repository, you must specify a version
                that bundler should use when resolving
                dependencies
              </div>
              <pre class="highlight ruby"><span class="n">gem</span> <span class="s1">'deep_merge'</span><span class="p">,</span> <span class="s1">'1.0'</span><span class="p">,</span> <span class="ss">:git</span> <span class="o">=&gt;</span> <span class="s1">'https://github.com/peritor/deep_merge.git'</span>&#x000A;</pre>
            </div>
            <div class='bullet'>
              <div class='description'>
                Specify that a git repository containing
                multiple .gemspec files should be treated
                as a gem source
              </div>
              <pre class="highlight ruby"><span class="n">git</span> <span class="s1">'https://github.com/rails/rails.git'</span> <span class="k">do</span>&#x000A;  <span class="n">gem</span> <span class="s1">'railties'</span>&#x000A;  <span class="n">gem</span> <span class="s1">'action_pack'</span>&#x000A;  <span class="n">gem</span> <span class="s1">'active_model'</span>&#x000A;<span class="k">end</span>&#x000A;</pre>
            </div>
            <div class='bullet'>
              <div class='description'>
                Specify that a git repository should use
                a particular ref, branch, or tag
              </div>
              <pre class="highlight ruby"><span class="ss">:git</span> <span class="o">=&gt;</span> <span class="s1">'https://github.com/rails/rails.git'</span><span class="p">,</span> <span class="ss">:ref</span> <span class="o">=&gt;</span> <span class="s1">'4aded'</span>&#x000A;<span class="ss">:git</span> <span class="o">=&gt;</span> <span class="s1">'https://github.com/rails/rails.git'</span><span class="p">,</span> <span class="ss">:branch</span> <span class="o">=&gt;</span> <span class="s1">'2-3-stable'</span>&#x000A;<span class="ss">:git</span> <span class="o">=&gt;</span> <span class="s1">'https://github.com/rails/rails.git'</span><span class="p">,</span> <span class="ss">:tag</span> <span class="o">=&gt;</span> <span class="s1">'v2.3.5'</span>&#x000A;</pre>
            </div>
            <div class='bullet'>
              <div class='description'>
                Specifying a ref, branch, or tag for a
                git repository specified inline works
                exactly the same way
              </div>
              <pre class="highlight ruby"><span class="n">gem</span> <span class="s1">'nokogiri'</span><span class="p">,</span> <span class="ss">:git</span> <span class="o">=&gt;</span> <span class="s1">'https://github.com/tenderlove/nokogiri.git'</span><span class="p">,</span> <span class="ss">:ref</span> <span class="o">=&gt;</span> <span class="s1">'0eec4'</span>&#x000A;</pre>
            </div>
            <div class='bullet'>
              <div class='description'>
                Bundler can use HTTP(S), SSH, or git
              </div>
              <pre class="highlight ruby"><span class="n">gem</span> <span class="s1">'nokogiri'</span><span class="p">,</span> <span class="ss">:git</span> <span class="o">=&gt;</span> <span class="s1">'https://github.com/tenderlove/nokogiri.git'</span>&#x000A;<span class="n">gem</span> <span class="s1">'nokogiri'</span><span class="p">,</span> <span class="ss">:git</span> <span class="o">=&gt;</span> <span class="s1">'git@github.com:tenderlove/nokogiri.git'</span>&#x000A;<span class="n">gem</span> <span class="s1">'nokogiri'</span><span class="p">,</span> <span class="ss">:git</span> <span class="o">=&gt;</span> <span class="s1">'git://github.com/tenderlove/nokogiri.git'</span>&#x000A;</pre>
            </div>
            <div class='bullet'>
              <div class='description'>
                If you are getting your gems from a public GitHub repository,
                you can use the shorthand
              </div>
              <pre class="highlight ruby"><span class="n">gem</span> <span class="s1">'nokogiri'</span><span class="p">,</span> <span class="ss">:github</span> <span class="o">=&gt;</span> <span class="s1">'tenderlove/nokogiri'</span></pre>
              <div class='description'>
                If the repository name is the same as the GitHub account hosting it,
                you can omit it
              </div>
              <pre class="highlight ruby"><span class="n">gem</span> <span class="s1">'rails'</span><span class="p">,</span> <span class="ss">:github</span> <span class="o">=&gt;</span> <span class="s1">'rails'</span></pre>
              <div class='description'>
                <b>NB:</b> This shorthand is insecure in versions of Bundler prior to 2.0! Use HTTPS instead
              </div>
              <pre class="highlight ruby"><span class="n">gem</span> <span class="s1">'rails'</span><span class="p">,</span> <span class="ss">:git</span> <span class="o">=&gt;</span> <span class="s1">'https://github.com/rails/rails'</span></pre>
              <div class='description'>
                Alternatively, you can specify a full commit hash
              </div>
              <pre class="highlight ruby"><span class="n">gem</span> <span class="s1">'rails'</span><span class="p">,</span> <span class="ss">:github</span> <span class="o">=&gt;</span> <span class="s1">'rails'</span><span class="p">,</span> <span class="ss">:ref</span> <span class="o">=&gt;</span> <span class="s1">'a9752dcfd15bcddfe7b6f7126f3a6e0ba5927c56'</span>&#x000A;</pre>
            </div>
          </div>
          <h2>Security</h2>
          <div class='contents'>
            <div class='bullet'>
              <div class='description'>
                <code>http://</code> and <code>git://</code> URLs are insecure, and should
                be avoided if at all possible. These protocols are unauthenticated, so a
                man-in-the-middle attacker can tamper with the code and compromise your system.
                Note that the <code>:github</code> shortcut translates to a <code>git://</code>
                URL in pre-2.0 versions.
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div id='footer'>
      <img src="/images/emocow.png" />
      <img src="/images/panda.jpg" />
      <div class='spacer'></div>
      <div id='credits'>
        <p>
          Many thanks to Bundler's <a href="/contributors.html">contributors</a>
          and <a href="/sponsors.html">sponsors</a>
        </p>
      </div>
      <div class='spacer'></div>
      <img src="/images/bundler-small.png" />
    </div>
    <a href='http://github.com/bundler/bundler/' id='github'>
      <img alt='Fork me on GitHub' src='http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png'>
    </a>
    <div id='prod-versions'>
      Docs:
      <a href="/v0.9/">v0.9</a>
      <a href="/v1.0/">v1.0</a>
      <a class="current" href="/v1.1/">v1.1</a>
      <a href="/v1.2/">v1.2</a>
      <a href="/v1.3/">v1.3</a>
      <a href="/v1.5/index.html">v1.5</a>
      <a href="/">v1.6</a>
    </div>
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
      ga('create', 'UA-39559982-1', 'bundler.io');
      ga('send', 'pageview');
    </script>
  </body>
</html>