Moxie
2015-11-23 67834872ddd5630b9c30c53c2972f5dcbf3dd5aa
commit | author | age
48fe87 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
M 2 <html>
3 <head>
4 <!-- Begin Header -->
5 <title>Gitblit</title>
6 <meta charset="utf-8">
7 <meta name="ROBOTS" content="INDEX">
8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
9 <meta name="viewport" content="width=device-width, initial-scale=1.0">
10         
11 <link rel="stylesheet" href="./bootstrap/css/bootstrap.css">
12 <link rel='shortcut icon' type='image/png' href='./gitblt-favicon.png' />
13 <link rel="stylesheet" href="./prettify/prettify.css" />
14 <!-- Google Plus Profile Page -->
15 <link rel="publisher" href="https://plus.google.com/114464678392593421684" />
16 <style type="text/css"> a.gpluspage { margin-top:3px;text-decoration: none; } </style>
17
18 <!-- Google Plus One -->
19 <link rel="canonical" href="http://gitblit.com" />
20 <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
21 <style type="text/css"> div.gplusone { margin-top:12px; } </style>
22
23 <script src="./prettify/prettify.js"></script>
24 <script src="./bootstrap/js/jquery.js"></script>
25 <script src="./bootstrap/js/bootstrap.min.js"></script>
26 </head>
27 <body onload='prettyPrint()'>        <!-- Navigation Bar -->
28         <div class="navbar navbar-fixed-top">
29             <div class="navbar-inner">
30                 <div class="container">
31                       <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
32                         <span class="icon-bar"></span>
33                         <span class="icon-bar"></span>
34                         <span class="icon-bar"></span>
35                       </a>
36                       <a class="brand" href="./"><img src="./gitblt_25_white.png" alt="Gitblit"></img></a>
37                     <div class="nav-collapse">
38                         <ul class="nav">
39                             <li class='dropdown'> <!-- Menu -->
40 <a class='dropdown-toggle' href='#' data-toggle='dropdown'>about<b class='caret'></b></a>
41 <ul class='dropdown-menu'>
42 <li><a href='index.html'>overview</a></li>
43 <li><a href='features.html'>features</a></li>
44 <li><a href='screenshots.html'>screenshots</a></li>
45 </ul></li> <!-- End Menu -->
46 <li class='dropdown'> <!-- Menu -->
47 <a class='dropdown-toggle' href='#' data-toggle='dropdown'>documentation<b class='caret'></b></a>
48 <ul class='dropdown-menu'>
49 <li class='dropdown-submenu'> <!-- Submenu -->
50 <a tabindex='-1' href='#'>Gitblit GO</a>
51 <ul class='dropdown-menu'>
52 <li><a href='setup_go.html'>setup GO</a></li>
53 <li><a href='upgrade_go.html'>upgrade GO</a></li>
54 </ul></li> <!-- End Submenu -->
55 <li class='divider'></li>
56 <li class='dropdown-submenu'> <!-- Submenu -->
57 <a tabindex='-1' href='#'>Gitblit WAR</a>
58 <ul class='dropdown-menu'>
59 <li><a href='setup_war.html'>setup WAR</a></li>
60 <li><a href='upgrade_war.html'>upgrade WAR</a></li>
61 </ul></li> <!-- End Submenu -->
62 <li class='divider'></li>
63 <li class='dropdown-submenu'> <!-- Submenu -->
64 <a tabindex='-1' href='#'>Server Configuration</a>
65 <ul class='dropdown-menu'>
66 <li><a href='administration.html'>administration</a></li>
67 <li><a href='setup_authentication.html'>authentication</a></li>
68 <li><a href='setup_hooks.html'>push hooks</a></li>
69 <li><a href='setup_lucene.html'>lucene indexing</a></li>
70 <li><a href='setup_proxy.html'>reverse proxies</a></li>
71 <li><a href='setup_clientmenus.html'>client app menus</a></li>
72 <li><a href='setup_bugtraq.html'>bugtraq</a></li>
73 <li><a href='setup_mirrors.html'>mirrors</a></li>
74 <li><a href='setup_scaling.html'>scaling</a></li>
5287d2 75 <li><a href='setup_fail2ban.html'>fail2ban</a></li>
48fe87 76 <li class='divider'></li>
M 77 <li><a href='setup_viewer.html'>Gitblit as a viewer</a></li>
78 </ul></li> <!-- End Submenu -->
79 <li class='divider'></li>
80 <li class='dropdown-submenu'> <!-- Submenu -->
81 <a tabindex='-1' href='#'>Client Usage</a>
82 <ul class='dropdown-menu'>
83 <li><a href='setup_transport_http.html'>using HTTP/HTTPS</a></li>
84 <li><a href='setup_transport_ssh.html'>using SSH</a></li>
85 <li><a href='eclipse_plugin.html'>using the Eclipse plugin</a></li>
86 </ul></li> <!-- End Submenu -->
87 <li class='divider'></li>
88 <li class='dropdown-submenu'> <!-- Submenu -->
89 <a tabindex='-1' href='#'>Tickets</a>
90 <ul class='dropdown-menu'>
91 <li><a href='tickets_overview.html'>overview</a></li>
92 <li><a href='tickets_using.html'>using</a></li>
93 <li><a href='tickets_barnum.html'>barnum</a></li>
94 <li><a href='tickets_setup.html'>setup</a></li>
95 <li><a href='tickets_replication.html'>replication & advanced administration</a></li>
96 </ul></li> <!-- End Submenu -->
97 <li class='divider'></li>
98 <li class='dropdown-submenu'> <!-- Submenu -->
99 <a tabindex='-1' href='#'>Plugins</a>
100 <ul class='dropdown-menu'>
101 <li><a href='plugins_overview.html'>overview</a></li>
102 <li><a href='plugins_extensions.html'>extension points</a></li>
103 </ul></li> <!-- End Submenu -->
104 <li class='divider'></li>
105 <li><a href='federation.html'>federation</a></li>
106 <li class='divider'></li>
107 <li><a href='properties.html'>settings</a></li>
108 <li><a href='faq.html'>faq</a></li>
109 <li class='divider'></li>
110 <li><a href='design.html'>design</a></li>
111 <li><a href='rpc.html'>rpc</a></li>
112 </ul></li> <!-- End Menu -->
113 <li class='dropdown'> <!-- Menu -->
114 <a class='dropdown-toggle' href='#' data-toggle='dropdown'>releases<b class='caret'></b></a>
115 <ul class='dropdown-menu'>
116 <li><a href='releasenotes.html'>release notes</a></li>
117 <li><a href='releases.html'>release history</a></li>
118 </ul></li> <!-- End Menu -->
119 <li class='dropdown'> <!-- Menu -->
120 <a class='dropdown-toggle' href='#' data-toggle='dropdown'>downloads<b class='caret'></b></a>
121 <ul class='dropdown-menu'>
678348 122 <li><a href='http://dl.bintray.com/gitblit/releases/gitblit-1.7.1.zip'>Gitblit GO (Windows)</a></li>
M 123 <li><a href='http://dl.bintray.com/gitblit/releases/gitblit-1.7.1.tar.gz'>Gitblit GO (Linux/OSX)</a></li>
124 <li><a href='http://dl.bintray.com/gitblit/releases/gitblit-1.7.1.war'>Gitblit WAR</a></li>
48fe87 125 <li class='divider'></li>
M 126 <li><a href='https://registry.hub.docker.com/u/jmoger/gitblit/'>Gitblit GO (Docker)</a></li>
127 <li class='divider'></li>
128 <li><a href='http://plugins.gitblit.com'>Plugins Registry</a></li>
129 <li class='divider'></li>
678348 130 <li><a href='http://dl.bintray.com/gitblit/releases/manager-1.7.1.zip'>Gitblit Manager</a></li>
M 131 <li><a href='http://dl.bintray.com/gitblit/releases/fedclient-1.7.1.zip'>Federation Client</a></li>
48fe87 132 <li class='divider'></li>
678348 133 <li><a href='http://dl.bintray.com/gitblit/releases/gbapi-1.7.1.zip'>API Library</a></li>
48fe87 134 <li class='divider'></li>
M 135 <li><a href='https://bintray.com/gitblit/releases/gitblit'>Bintray (1.4.0+)</a></li>
136 <li><a href='https://code.google.com/p/gitblit/downloads/list?can=1'>GoogleCode (pre-1.4.0)</a></li>
137 <li class='divider'></li>
138 <li><a href='http://gitblit.github.io/gitblit-maven'>Maven Repository</a></li>
139 </ul></li> <!-- End Menu -->
140 <li class='dropdown'> <!-- Menu -->
141 <a class='dropdown-toggle' href='#' data-toggle='dropdown'>links<b class='caret'></b></a>
142 <ul class='dropdown-menu'>
143 <li><a href='https://dev.gitblit.com'>dev.gitblit.com (self-hosted)</a></li>
144 <li class='divider'></li>
145 <li><a href='http://plugins.gitblit.com'>Plugins Registry</a></li>
146 <li class='divider'></li>
147 <li><a href='https://github.com/gitblit/gitblit'>Github</a></li>
5287d2 148 <li><a href='https://github.com/gitblit/gitblit'>Issues</a></li>
48fe87 149 <li><a href='http://groups.google.com/group/gitblit'>Discussion</a></li>
M 150 <li><a href='https://twitter.com/gitblit'>Twitter</a></li>
151 <li><a href='http://www.ohloh.net/p/gitblit'>Ohloh</a></li>
584328 152 <li class='divider'></li>
M 153 <li><a href='https://vimeo.com/86164723'>Gitblit Tickets screencast</a></li>
154 <li><a href='https://asciinema.org/a/9342'>Gitblit SSH and Plugin Management asciicast</a></li>
155 <li><a href='http://episodes.gitminutes.com/2014/05/gitminutes-29-james-moger-on-gitblit.html'>GitMinutes #29: James Moger on Gitblit</a></li>
48fe87 156 <li class='divider'></li>
M 157 <li><a href='https://twitter.com/JamesMoger'>@JamesMoger</a></li>
158 </ul></li> <!-- End Menu -->
159 <li class='divider-vertical'></li>
160 <li><a href='https://plus.google.com/114464678392593421684?prsrc=3' class='gpluspage'><img src='https://ssl.gstatic.com/images/icons/gplus-16.png' width='16' height='16 style='order: 0;'/></a></li><li><div class='gplusone'><g:plusone size='small' href='http://gitblit.com'></g:plusone></div></li>
161                         </ul>
162                     </div><!--/.nav-collapse -->
163                 </div>
164             </div>
165         </div><!-- end Navigation Bar -->
166 <div class='container'>
167 <!-- Begin Markdown -->
168 <h2 class="section" id='H1'><a href="#H1" class="sectionlink"><i class="icon-share-alt"> </i></a>Barnum</h2><p><em>SINCE 1.4.0</em></p><p>Barnum is a command-line companion for Git. It's purpose is to simplify the syntax and ceremony for working with Gitblit Tickets and Patchsets.</p><p>The current implementation is a Python script that wraps a native Git executable. It requires Python 3 and native Git. It works well on Windows, Linux, and Mac OS X.</p><p>Barnum is bundled with each Gitblit installation and linked on each ticket page in the propose, checkout, and merge instructions. You can download Barnum manually using the following url or using the <code>/pt</code> url on your own Gitblit server:</p>
169 <pre><code>https://dev.gitblit.com/pt
170 </code></pre><p>This url serves a <em>zip</em> or a <em>tar.gz</em> of the Python script and a readme file, as appropriate based on the user-agent of the requesting client.</p>
171 <h3 class="section" id='H2'><a href="#H2" class="sectionlink"><i class="icon-share-alt"> </i></a>Fetch</h3>
172 <pre><code>pt fetch &lt;id&gt; [-p,--patchset &lt;n&gt;]
173 </code></pre><p>If <em>patchset</em> is specified, the <strong>fetch</strong> command will download the specified ticket patchset to the FETCH_HEAD ref. If <em>patchset</em> is <strong>not</strong> specified, the configured remote will be fetched to download all ticket branch updates - this is the same as <pre>git fetch {remote}</pre>.</p>
174 <h3 class="section" id='H3'><a href="#H3" class="sectionlink"><i class="icon-share-alt"> </i></a>Checkout (co)</h3>
175 <pre><code>pt checkout &lt;id&gt; [-p,--patchset &lt;n&gt;] [--force]
176 </code></pre><p>The <strong>checkout</strong> command fetches and checks-out the patchset to a predetermined branch.</p><p>If <em>patchset</em> is not specified, the current patchset is checked-out to <code>ticket/{id}</code>. If <em>patchset</em> is specified, the patchset is checked-out to <code>patchset/{id}/{patchset}</code>.</p>
177 <h3 class="section" id='H4'><a href="#H4" class="sectionlink"><i class="icon-share-alt"> </i></a>Pull</h3>
178 <pre><code>pt pull &lt;id&gt; [-s,--squash]
179 </code></pre><p>The <strong>pull</strong> command fetches and merges the ticket patchset into your current branch.</p><p>You may specify the <code>--squash</code> flag to squash the pulled patchset into one commit. This will leave your working directory dirty and you must stage and commit the pending changes yourself.</p>
180 <h3 class="section" id='H5'><a href="#H5" class="sectionlink"><i class="icon-share-alt"> </i></a>Push (up)</h3>
181 <pre><code>pt push [&lt;id&gt;] [--force] [-r, --responsible &lt;user&gt;] [-m,--milestone &lt;milestone&gt;] [-t,--topic &lt;topic&gt;] [-cc &lt;user&gt; &lt;user&gt;]
182 </code></pre><p>The <strong>push</strong> command allows you to upload a fast-forward update to an existing patchset or to upload a rewrite of an existing patchset (amend, rebase, or squash).</p><p>You may set several ticket fields during the push such as <em>milestone</em>, <em>topic</em>, and <em>responsible</em>. Use the <em>cc</em> argument to add users to the watch list for the ticket.</p><p>One thing to note about the <em>topic</em> field is that Gitblit will match the <em>topic</em> against the repository bugtraq configuration which allows you to link your ticket with an external issue tracker.</p>
183 <h3 class="section" id='H6'><a href="#H6" class="sectionlink"><i class="icon-share-alt"> </i></a>Start</h3>
184 <pre><code>pt start &lt;topic&gt;
185 pt start &lt;id&gt;
186 </code></pre><p>The <strong>start</strong> command is used to start development of a topic branch that will eventually be pushed to a Ticket. </p><p>You must specify what you are starting. If you specify a ticket id, the branch <code>topid/{id}</code> will be created. If you specify a topic string, the branch <code>topic/{topic}</code> will be created. The main difference will be how the <strong>propose</strong> command treats your branch name.</p>
187 <h3 class="section" id='H7'><a href="#H7" class="sectionlink"><i class="icon-share-alt"> </i></a>Propose</h3>
188 <pre><code>pt propose [new | &lt;branch&gt; | &lt;id&gt;] [-r, --responsible &lt;user&gt;] [-m,--milestone &lt;milestone&gt;] [-t,--topic &lt;topic&gt;] [-cc &lt;user&gt; &lt;user&gt;]
189 </code></pre><p>The <strong>propose</strong> command pushes an initial patchset to an existing ticket OR allows you to create a new ticket from your patchset on push.</p><p>If you created your topic branch with the <strong>start</strong> command and you specified an existing ticket id as what you were starting, then Barnum will identify the id from the branch name and assume that is the target ticket for your patchset.</p><p>If you created your topic branch with the <strong>start</strong> command and you specified a topic string as what you were starting, Barnum will identify that and specify that as the <em>topic</em> push ref parameter, but will still require a proposal target: <em>new</em>, <em>branch</em>, or <em>id</em>.</p>
190 <h4 class="section" id='H8'><a href="#H8" class="sectionlink"><i class="icon-share-alt"> </i></a>Create Ticket on Push</h4><p>In order to create a ticket from your patchset, your patchset <em>must</em> contain only a <em>single</em> commit. The first line of the commit message will specify the ticket title. The remainder of the commit message will define the ticket description.</p>
191 <pre><code>Fix null pointer exception in StringUtils
192
193 It is possible to throw a null pointer exception in the trim method.
194 This can be triggered by yada, yada, yada.
195 </code></pre><p>After the ticket is created from the single commit, you can push as many additional commits as you want. It is just the first push with one commit that is special.</p><p>One helpful tip to note about the <em>topic</em> field is that Gitblit will match the <em>topic</em> against the repository bugtraq configuration which allows you to link your ticket with an external issue tracker.</p>
196 <h3 class="section" id='H9'><a href="#H9" class="sectionlink"><i class="icon-share-alt"> </i></a>Cleanup (rm)</h3>
197 <pre><code>pt cleanup &lt;id&gt; [--force]
198 </code></pre><p>The <strong>cleanup</strong> command is used to delete ticket branches from your local repository.</p><p>The <em>force</em> argument is necessary for <strong>cleanup</strong> to actually remove the local branches. Running <strong>cleanup</strong> by itself will identify the branches that can be removed.
199 <!-- End Markdown -->
678348 200 <div ><ul class="pager"><li class="previous"><a href="tickets_using.html">&larr; using</a></li> <li class="next"><a href="tickets_setup.html">setup &rarr;</a></li></ul></div><footer class="footer"><p class="pull-right">generated 2015-11-23</p>
48fe87 201 <p>The content of this page is licensed under the <a href="http://creativecommons.org/licenses/by/3.0">Creative Commons Attribution 3.0 License</a>.</p>
M 202 </footer>
203 </div>
204 <!-- Google Analytics -->
205 <script type="text/javascript">
206     var _gaq = _gaq || [];
207     _gaq.push(['_setAccount', 'UA-24377072-1']);
208     _gaq.push(['_trackPageview']);
209
210     (function() {
211         var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
212         ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
213         var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
214     })();
215 </script>
216
217 </body>
218 </html>