git-footers.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  2. "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  4. <head>
  5. <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
  6. <meta name="generator" content="AsciiDoc 8.6.9" />
  7. <title>git-footers(1)</title>
  8. <style type="text/css">
  9. /* Shared CSS for AsciiDoc xhtml11 and html5 backends */
  10. /* Default font. */
  11. body {
  12. font-family: Georgia,serif;
  13. }
  14. /* Title font. */
  15. h1, h2, h3, h4, h5, h6,
  16. div.title, caption.title,
  17. thead, p.table.header,
  18. #toctitle,
  19. #author, #revnumber, #revdate, #revremark,
  20. #footer {
  21. font-family: Arial,Helvetica,sans-serif;
  22. }
  23. body {
  24. margin: 1em 5% 1em 5%;
  25. }
  26. a {
  27. color: blue;
  28. text-decoration: underline;
  29. }
  30. a:visited {
  31. color: fuchsia;
  32. }
  33. em {
  34. font-style: italic;
  35. color: navy;
  36. }
  37. strong {
  38. font-weight: bold;
  39. color: #083194;
  40. }
  41. h1, h2, h3, h4, h5, h6 {
  42. color: #527bbd;
  43. margin-top: 1.2em;
  44. margin-bottom: 0.5em;
  45. line-height: 1.3;
  46. }
  47. h1, h2, h3 {
  48. border-bottom: 2px solid silver;
  49. }
  50. h2 {
  51. padding-top: 0.5em;
  52. }
  53. h3 {
  54. float: left;
  55. }
  56. h3 + * {
  57. clear: left;
  58. }
  59. h5 {
  60. font-size: 1.0em;
  61. }
  62. div.sectionbody {
  63. margin-left: 0;
  64. }
  65. hr {
  66. border: 1px solid silver;
  67. }
  68. p {
  69. margin-top: 0.5em;
  70. margin-bottom: 0.5em;
  71. }
  72. ul, ol, li > p {
  73. margin-top: 0;
  74. }
  75. ul > li { color: #aaa; }
  76. ul > li > * { color: black; }
  77. .monospaced, code, pre {
  78. font-family: "Courier New", Courier, monospace;
  79. font-size: inherit;
  80. color: navy;
  81. padding: 0;
  82. margin: 0;
  83. }
  84. pre {
  85. white-space: pre-wrap;
  86. }
  87. #author {
  88. color: #527bbd;
  89. font-weight: bold;
  90. font-size: 1.1em;
  91. }
  92. #email {
  93. }
  94. #revnumber, #revdate, #revremark {
  95. }
  96. #footer {
  97. font-size: small;
  98. border-top: 2px solid silver;
  99. padding-top: 0.5em;
  100. margin-top: 4.0em;
  101. }
  102. #footer-text {
  103. float: left;
  104. padding-bottom: 0.5em;
  105. }
  106. #footer-badges {
  107. float: right;
  108. padding-bottom: 0.5em;
  109. }
  110. #preamble {
  111. margin-top: 1.5em;
  112. margin-bottom: 1.5em;
  113. }
  114. div.imageblock, div.exampleblock, div.verseblock,
  115. div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
  116. div.admonitionblock {
  117. margin-top: 1.0em;
  118. margin-bottom: 1.5em;
  119. }
  120. div.admonitionblock {
  121. margin-top: 2.0em;
  122. margin-bottom: 2.0em;
  123. margin-right: 10%;
  124. color: #606060;
  125. }
  126. div.content { /* Block element content. */
  127. padding: 0;
  128. }
  129. /* Block element titles. */
  130. div.title, caption.title {
  131. color: #527bbd;
  132. font-weight: bold;
  133. text-align: left;
  134. margin-top: 1.0em;
  135. margin-bottom: 0.5em;
  136. }
  137. div.title + * {
  138. margin-top: 0;
  139. }
  140. td div.title:first-child {
  141. margin-top: 0.0em;
  142. }
  143. div.content div.title:first-child {
  144. margin-top: 0.0em;
  145. }
  146. div.content + div.title {
  147. margin-top: 0.0em;
  148. }
  149. div.sidebarblock > div.content {
  150. background: #ffffee;
  151. border: 1px solid #dddddd;
  152. border-left: 4px solid #f0f0f0;
  153. padding: 0.5em;
  154. }
  155. div.listingblock > div.content {
  156. border: 1px solid #dddddd;
  157. border-left: 5px solid #f0f0f0;
  158. background: #f8f8f8;
  159. padding: 0.5em;
  160. }
  161. div.quoteblock, div.verseblock {
  162. padding-left: 1.0em;
  163. margin-left: 1.0em;
  164. margin-right: 10%;
  165. border-left: 5px solid #f0f0f0;
  166. color: #888;
  167. }
  168. div.quoteblock > div.attribution {
  169. padding-top: 0.5em;
  170. text-align: right;
  171. }
  172. div.verseblock > pre.content {
  173. font-family: inherit;
  174. font-size: inherit;
  175. }
  176. div.verseblock > div.attribution {
  177. padding-top: 0.75em;
  178. text-align: left;
  179. }
  180. /* DEPRECATED: Pre version 8.2.7 verse style literal block. */
  181. div.verseblock + div.attribution {
  182. text-align: left;
  183. }
  184. div.admonitionblock .icon {
  185. vertical-align: top;
  186. font-size: 1.1em;
  187. font-weight: bold;
  188. text-decoration: underline;
  189. color: #527bbd;
  190. padding-right: 0.5em;
  191. }
  192. div.admonitionblock td.content {
  193. padding-left: 0.5em;
  194. border-left: 3px solid #dddddd;
  195. }
  196. div.exampleblock > div.content {
  197. border-left: 3px solid #dddddd;
  198. padding-left: 0.5em;
  199. }
  200. div.imageblock div.content { padding-left: 0; }
  201. span.image img { border-style: none; vertical-align: text-bottom; }
  202. a.image:visited { color: white; }
  203. dl {
  204. margin-top: 0.8em;
  205. margin-bottom: 0.8em;
  206. }
  207. dt {
  208. margin-top: 0.5em;
  209. margin-bottom: 0;
  210. font-style: normal;
  211. color: navy;
  212. }
  213. dd > *:first-child {
  214. margin-top: 0.1em;
  215. }
  216. ul, ol {
  217. list-style-position: outside;
  218. }
  219. ol.arabic {
  220. list-style-type: decimal;
  221. }
  222. ol.loweralpha {
  223. list-style-type: lower-alpha;
  224. }
  225. ol.upperalpha {
  226. list-style-type: upper-alpha;
  227. }
  228. ol.lowerroman {
  229. list-style-type: lower-roman;
  230. }
  231. ol.upperroman {
  232. list-style-type: upper-roman;
  233. }
  234. div.compact ul, div.compact ol,
  235. div.compact p, div.compact p,
  236. div.compact div, div.compact div {
  237. margin-top: 0.1em;
  238. margin-bottom: 0.1em;
  239. }
  240. tfoot {
  241. font-weight: bold;
  242. }
  243. td > div.verse {
  244. white-space: pre;
  245. }
  246. div.hdlist {
  247. margin-top: 0.8em;
  248. margin-bottom: 0.8em;
  249. }
  250. div.hdlist tr {
  251. padding-bottom: 15px;
  252. }
  253. dt.hdlist1.strong, td.hdlist1.strong {
  254. font-weight: bold;
  255. }
  256. td.hdlist1 {
  257. vertical-align: top;
  258. font-style: normal;
  259. padding-right: 0.8em;
  260. color: navy;
  261. }
  262. td.hdlist2 {
  263. vertical-align: top;
  264. }
  265. div.hdlist.compact tr {
  266. margin: 0;
  267. padding-bottom: 0;
  268. }
  269. .comment {
  270. background: yellow;
  271. }
  272. .footnote, .footnoteref {
  273. font-size: 0.8em;
  274. }
  275. span.footnote, span.footnoteref {
  276. vertical-align: super;
  277. }
  278. #footnotes {
  279. margin: 20px 0 20px 0;
  280. padding: 7px 0 0 0;
  281. }
  282. #footnotes div.footnote {
  283. margin: 0 0 5px 0;
  284. }
  285. #footnotes hr {
  286. border: none;
  287. border-top: 1px solid silver;
  288. height: 1px;
  289. text-align: left;
  290. margin-left: 0;
  291. width: 20%;
  292. min-width: 100px;
  293. }
  294. div.colist td {
  295. padding-right: 0.5em;
  296. padding-bottom: 0.3em;
  297. vertical-align: top;
  298. }
  299. div.colist td img {
  300. margin-top: 0.3em;
  301. }
  302. @media print {
  303. #footer-badges { display: none; }
  304. }
  305. #toc {
  306. margin-bottom: 2.5em;
  307. }
  308. #toctitle {
  309. color: #527bbd;
  310. font-size: 1.1em;
  311. font-weight: bold;
  312. margin-top: 1.0em;
  313. margin-bottom: 0.1em;
  314. }
  315. div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  316. margin-top: 0;
  317. margin-bottom: 0;
  318. }
  319. div.toclevel2 {
  320. margin-left: 2em;
  321. font-size: 0.9em;
  322. }
  323. div.toclevel3 {
  324. margin-left: 4em;
  325. font-size: 0.9em;
  326. }
  327. div.toclevel4 {
  328. margin-left: 6em;
  329. font-size: 0.9em;
  330. }
  331. span.aqua { color: aqua; }
  332. span.black { color: black; }
  333. span.blue { color: blue; }
  334. span.fuchsia { color: fuchsia; }
  335. span.gray { color: gray; }
  336. span.green { color: green; }
  337. span.lime { color: lime; }
  338. span.maroon { color: maroon; }
  339. span.navy { color: navy; }
  340. span.olive { color: olive; }
  341. span.purple { color: purple; }
  342. span.red { color: red; }
  343. span.silver { color: silver; }
  344. span.teal { color: teal; }
  345. span.white { color: white; }
  346. span.yellow { color: yellow; }
  347. span.aqua-background { background: aqua; }
  348. span.black-background { background: black; }
  349. span.blue-background { background: blue; }
  350. span.fuchsia-background { background: fuchsia; }
  351. span.gray-background { background: gray; }
  352. span.green-background { background: green; }
  353. span.lime-background { background: lime; }
  354. span.maroon-background { background: maroon; }
  355. span.navy-background { background: navy; }
  356. span.olive-background { background: olive; }
  357. span.purple-background { background: purple; }
  358. span.red-background { background: red; }
  359. span.silver-background { background: silver; }
  360. span.teal-background { background: teal; }
  361. span.white-background { background: white; }
  362. span.yellow-background { background: yellow; }
  363. span.big { font-size: 2em; }
  364. span.small { font-size: 0.6em; }
  365. span.underline { text-decoration: underline; }
  366. span.overline { text-decoration: overline; }
  367. span.line-through { text-decoration: line-through; }
  368. div.unbreakable { page-break-inside: avoid; }
  369. /*
  370. * xhtml11 specific
  371. *
  372. * */
  373. div.tableblock {
  374. margin-top: 1.0em;
  375. margin-bottom: 1.5em;
  376. }
  377. div.tableblock > table {
  378. border: 3px solid #527bbd;
  379. }
  380. thead, p.table.header {
  381. font-weight: bold;
  382. color: #527bbd;
  383. }
  384. p.table {
  385. margin-top: 0;
  386. }
  387. /* Because the table frame attribute is overriden by CSS in most browsers. */
  388. div.tableblock > table[frame="void"] {
  389. border-style: none;
  390. }
  391. div.tableblock > table[frame="hsides"] {
  392. border-left-style: none;
  393. border-right-style: none;
  394. }
  395. div.tableblock > table[frame="vsides"] {
  396. border-top-style: none;
  397. border-bottom-style: none;
  398. }
  399. /*
  400. * html5 specific
  401. *
  402. * */
  403. table.tableblock {
  404. margin-top: 1.0em;
  405. margin-bottom: 1.5em;
  406. }
  407. thead, p.tableblock.header {
  408. font-weight: bold;
  409. color: #527bbd;
  410. }
  411. p.tableblock {
  412. margin-top: 0;
  413. }
  414. table.tableblock {
  415. border-width: 3px;
  416. border-spacing: 0px;
  417. border-style: solid;
  418. border-color: #527bbd;
  419. border-collapse: collapse;
  420. }
  421. th.tableblock, td.tableblock {
  422. border-width: 1px;
  423. padding: 4px;
  424. border-style: solid;
  425. border-color: #527bbd;
  426. }
  427. table.tableblock.frame-topbot {
  428. border-left-style: hidden;
  429. border-right-style: hidden;
  430. }
  431. table.tableblock.frame-sides {
  432. border-top-style: hidden;
  433. border-bottom-style: hidden;
  434. }
  435. table.tableblock.frame-none {
  436. border-style: hidden;
  437. }
  438. th.tableblock.halign-left, td.tableblock.halign-left {
  439. text-align: left;
  440. }
  441. th.tableblock.halign-center, td.tableblock.halign-center {
  442. text-align: center;
  443. }
  444. th.tableblock.halign-right, td.tableblock.halign-right {
  445. text-align: right;
  446. }
  447. th.tableblock.valign-top, td.tableblock.valign-top {
  448. vertical-align: top;
  449. }
  450. th.tableblock.valign-middle, td.tableblock.valign-middle {
  451. vertical-align: middle;
  452. }
  453. th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  454. vertical-align: bottom;
  455. }
  456. /*
  457. * manpage specific
  458. *
  459. * */
  460. body.manpage h1 {
  461. padding-top: 0.5em;
  462. padding-bottom: 0.5em;
  463. border-top: 2px solid silver;
  464. border-bottom: 2px solid silver;
  465. }
  466. body.manpage h2 {
  467. border-style: none;
  468. }
  469. body.manpage div.sectionbody {
  470. margin-left: 3em;
  471. }
  472. @media print {
  473. body.manpage div#toc { display: none; }
  474. }
  475. div.listingblock > div.content {
  476. background: rgb(28, 28, 28);
  477. }
  478. div.listingblock > div > pre > code {
  479. color: rgb(187, 187, 187);
  480. }
  481. </style>
  482. <script type="text/javascript">
  483. /*<![CDATA[*/
  484. var asciidoc = { // Namespace.
  485. /////////////////////////////////////////////////////////////////////
  486. // Table Of Contents generator
  487. /////////////////////////////////////////////////////////////////////
  488. /* Author: Mihai Bazon, September 2002
  489. * http://students.infoiasi.ro/~mishoo
  490. *
  491. * Table Of Content generator
  492. * Version: 0.4
  493. *
  494. * Feel free to use this script under the terms of the GNU General Public
  495. * License, as long as you do not remove or alter this notice.
  496. */
  497. /* modified by Troy D. Hanson, September 2006. License: GPL */
  498. /* modified by Stuart Rackham, 2006, 2009. License: GPL */
  499. // toclevels = 1..4.
  500. toc: function (toclevels) {
  501. function getText(el) {
  502. var text = "";
  503. for (var i = el.firstChild; i != null; i = i.nextSibling) {
  504. if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
  505. text += i.data;
  506. else if (i.firstChild != null)
  507. text += getText(i);
  508. }
  509. return text;
  510. }
  511. function TocEntry(el, text, toclevel) {
  512. this.element = el;
  513. this.text = text;
  514. this.toclevel = toclevel;
  515. }
  516. function tocEntries(el, toclevels) {
  517. var result = new Array;
  518. var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
  519. // Function that scans the DOM tree for header elements (the DOM2
  520. // nodeIterator API would be a better technique but not supported by all
  521. // browsers).
  522. var iterate = function (el) {
  523. for (var i = el.firstChild; i != null; i = i.nextSibling) {
  524. if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
  525. var mo = re.exec(i.tagName);
  526. if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
  527. result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
  528. }
  529. iterate(i);
  530. }
  531. }
  532. }
  533. iterate(el);
  534. return result;
  535. }
  536. var toc = document.getElementById("toc");
  537. if (!toc) {
  538. return;
  539. }
  540. // Delete existing TOC entries in case we're reloading the TOC.
  541. var tocEntriesToRemove = [];
  542. var i;
  543. for (i = 0; i < toc.childNodes.length; i++) {
  544. var entry = toc.childNodes[i];
  545. if (entry.nodeName.toLowerCase() == 'div'
  546. && entry.getAttribute("class")
  547. && entry.getAttribute("class").match(/^toclevel/))
  548. tocEntriesToRemove.push(entry);
  549. }
  550. for (i = 0; i < tocEntriesToRemove.length; i++) {
  551. toc.removeChild(tocEntriesToRemove[i]);
  552. }
  553. // Rebuild TOC entries.
  554. var entries = tocEntries(document.getElementById("content"), toclevels);
  555. for (var i = 0; i < entries.length; ++i) {
  556. var entry = entries[i];
  557. if (entry.element.id == "")
  558. entry.element.id = "_toc_" + i;
  559. var a = document.createElement("a");
  560. a.href = "#" + entry.element.id;
  561. a.appendChild(document.createTextNode(entry.text));
  562. var div = document.createElement("div");
  563. div.appendChild(a);
  564. div.className = "toclevel" + entry.toclevel;
  565. toc.appendChild(div);
  566. }
  567. if (entries.length == 0)
  568. toc.parentNode.removeChild(toc);
  569. },
  570. /////////////////////////////////////////////////////////////////////
  571. // Footnotes generator
  572. /////////////////////////////////////////////////////////////////////
  573. /* Based on footnote generation code from:
  574. * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
  575. */
  576. footnotes: function () {
  577. // Delete existing footnote entries in case we're reloading the footnodes.
  578. var i;
  579. var noteholder = document.getElementById("footnotes");
  580. if (!noteholder) {
  581. return;
  582. }
  583. var entriesToRemove = [];
  584. for (i = 0; i < noteholder.childNodes.length; i++) {
  585. var entry = noteholder.childNodes[i];
  586. if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
  587. entriesToRemove.push(entry);
  588. }
  589. for (i = 0; i < entriesToRemove.length; i++) {
  590. noteholder.removeChild(entriesToRemove[i]);
  591. }
  592. // Rebuild footnote entries.
  593. var cont = document.getElementById("content");
  594. var spans = cont.getElementsByTagName("span");
  595. var refs = {};
  596. var n = 0;
  597. for (i=0; i<spans.length; i++) {
  598. if (spans[i].className == "footnote") {
  599. n++;
  600. var note = spans[i].getAttribute("data-note");
  601. if (!note) {
  602. // Use [\s\S] in place of . so multi-line matches work.
  603. // Because JavaScript has no s (dotall) regex flag.
  604. note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
  605. spans[i].innerHTML =
  606. "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
  607. "' title='View footnote' class='footnote'>" + n + "</a>]";
  608. spans[i].setAttribute("data-note", note);
  609. }
  610. noteholder.innerHTML +=
  611. "<div class='footnote' id='_footnote_" + n + "'>" +
  612. "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
  613. n + "</a>. " + note + "</div>";
  614. var id =spans[i].getAttribute("id");
  615. if (id != null) refs["#"+id] = n;
  616. }
  617. }
  618. if (n == 0)
  619. noteholder.parentNode.removeChild(noteholder);
  620. else {
  621. // Process footnoterefs.
  622. for (i=0; i<spans.length; i++) {
  623. if (spans[i].className == "footnoteref") {
  624. var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
  625. href = href.match(/#.*/)[0]; // Because IE return full URL.
  626. n = refs[href];
  627. spans[i].innerHTML =
  628. "[<a href='#_footnote_" + n +
  629. "' title='View footnote' class='footnote'>" + n + "</a>]";
  630. }
  631. }
  632. }
  633. },
  634. install: function(toclevels) {
  635. var timerId;
  636. function reinstall() {
  637. asciidoc.footnotes();
  638. if (toclevels) {
  639. asciidoc.toc(toclevels);
  640. }
  641. }
  642. function reinstallAndRemoveTimer() {
  643. clearInterval(timerId);
  644. reinstall();
  645. }
  646. timerId = setInterval(reinstall, 500);
  647. if (document.addEventListener)
  648. document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  649. else
  650. window.onload = reinstallAndRemoveTimer;
  651. }
  652. }
  653. asciidoc.install();
  654. /*]]>*/
  655. </script>
  656. </head>
  657. <body class="manpage">
  658. <div id="header">
  659. <h1>
  660. git-footers(1) Manual Page
  661. </h1>
  662. <h2>NAME</h2>
  663. <div class="sectionbody">
  664. <p>git-footers -
  665. Extract meta-information expressed as footers in a commit message.
  666. </p>
  667. </div>
  668. </div>
  669. <div id="content">
  670. <div class="sect1">
  671. <h2 id="_synopsis">SYNOPSIS</h2>
  672. <div class="sectionbody">
  673. <div class="verseblock">
  674. <pre class="content"><em>git footers</em> [--key FOOTER] REF
  675. <em>git footers</em> [--position | --position-ref | --position-num] REF</pre>
  676. <div class="attribution">
  677. </div></div>
  678. </div>
  679. </div>
  680. <div class="sect1">
  681. <h2 id="_description">DESCRIPTION</h2>
  682. <div class="sectionbody">
  683. <div class="paragraph"><p><code>git footers</code> extracts information included in commit messages as "footers",
  684. which are roughly like HTTP headers except they are at the end. For example, a
  685. commit might look like:</p></div>
  686. <div class="literalblock">
  687. <div class="content">
  688. <pre><code>This is a fancy commit message.</code></pre>
  689. </div></div>
  690. <div class="literalblock">
  691. <div class="content">
  692. <pre><code>Cr-Commit-Position: refs/heads/master@{#292272}
  693. Tech-Debt-Introduced: 17 nanoMSOffices</code></pre>
  694. </div></div>
  695. <div class="paragraph"><p><code>git footers</code> knows how to extract this information.</p></div>
  696. <div class="paragraph"><p>Footers are order-independent and can appear more than once. Thus they are
  697. treated as a multimap.</p></div>
  698. </div>
  699. </div>
  700. <div class="sect1">
  701. <h2 id="_options">OPTIONS</h2>
  702. <div class="sectionbody">
  703. <div class="paragraph"><p>If no options are given, all footers are printed, with their names
  704. case-normalized.</p></div>
  705. <div class="dlist"><dl>
  706. <dt class="hdlist1">
  707. --key FOOTER
  708. </dt>
  709. <dd>
  710. <p>
  711. Extract all the headers associated with the given key, and print one per
  712. line. If there are no footers with this key, produces no output and exits
  713. successfully.
  714. </p>
  715. </dd>
  716. <dt class="hdlist1">
  717. --position
  718. </dt>
  719. <dd>
  720. <p>
  721. Extract the Chrome commit position from the footers. This first attempts
  722. to get the value of the <code>Cr-Commit-Position</code> footer. If that doesn&#8217;t exist
  723. then it tries a heuristic based on <code>Git-Svn-Id</code>. Output is in one of the
  724. following forms:
  725. </p>
  726. <div class="literalblock">
  727. <div class="content">
  728. <pre><code>refs/heads/master@{#292272}
  729. refs/branch-heads/branchname</code></pre>
  730. </div></div>
  731. </dd>
  732. <dt class="hdlist1">
  733. --position-num
  734. </dt>
  735. <dd>
  736. <p>
  737. Extracts and prints the Chrome commit position number only (292272 in the
  738. example above). Exits with an error if one cannot be found.
  739. </p>
  740. </dd>
  741. <dt class="hdlist1">
  742. --position-ref
  743. </dt>
  744. <dd>
  745. <p>
  746. Extracts and prints the Chrome commit position ref name only
  747. (<code>ref/heads/master</code> or <code>refs/branch-heads/branchname</code> in the example above).
  748. </p>
  749. </dd>
  750. </dl></div>
  751. </div>
  752. </div>
  753. <div class="sect1">
  754. <h2 id="_example">EXAMPLE</h2>
  755. <div class="sectionbody">
  756. <div class="paragraph"><p></p></div><div class="listingblock"><div class="content"><pre><code><span style="font-weight: bold; color: #ffffff">$ git footers HEAD</span>
  757. Tech-Debt-Introduced: -4 microMSOffices
  758. Tech-Debt-Introduced: 17 microMSOffices
  759. Cr-Commit-Position: refs/heads/master@{#292272}
  760. <span style="font-weight: bold; color: #ffffff">$ git footers --key Tech-Debt-Introduced HEAD</span>
  761. -4 microMSOffices
  762. 17 microMSOffices
  763. <span style="font-weight: bold; color: #ffffff">$ git footers --position HEAD</span>
  764. refs/heads/master@{#292272}
  765. <span style="font-weight: bold; color: #ffffff">$ git footers --position-num HEAD</span>
  766. 292272
  767. <span style="font-weight: bold; color: #ffffff">$ git footers --position-ref HEAD</span>
  768. refs/heads/master
  769. </code></pre></div></div><p><div class="paragraph"></p></div>
  770. </div>
  771. </div>
  772. <div class="sect1">
  773. <h2 id="_see_also">SEE ALSO</h2>
  774. <div class="sectionbody">
  775. <div class="paragraph"><p><a href="git-number.html">git-number(1)</a></p></div>
  776. </div>
  777. </div>
  778. <div class="sect1">
  779. <h2 id="_chromium_depot_tools">CHROMIUM DEPOT_TOOLS</h2>
  780. <div class="sectionbody">
  781. <div class="paragraph"><p>Part of the chromium <a href="depot_tools.html">depot_tools(7)</a> suite. These tools are meant to
  782. assist with the development of chromium and related projects. Download the tools
  783. from <a href="https://chromium.googlesource.com/chromium/tools/depot_tools.git">here</a>.</p></div>
  784. </div>
  785. </div>
  786. </div>
  787. <div id="footnotes"><hr /></div>
  788. <div id="footer">
  789. <div id="footer-text">
  790. Last updated 2019-05-03 10:40:16 EDT
  791. </div>
  792. </div>
  793. </body>
  794. </html>