<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="generator" content="Asciidoctor 2.0.26"/>
<title>My First Object Walk</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"/>
<style>
/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment the following line when using as a custom stylesheet */
/* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
html{font-family:sans-serif;-webkit-text-size-adjust:100%}
a{background:none}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
b,strong{font-weight:bold}
abbr{font-size:.9em}
abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
dfn{font-style:italic}
hr{height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
audio,video{display:inline-block}
audio:not([controls]){display:none;height:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type=checkbox],input[type=radio]{padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,::before,::after{box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ul.square{list-style-type:square}
ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre).nobreak{word-wrap:normal}
:not(pre).nowrap{white-space:nowrap}
:not(pre).pre-wrap{white-space:pre-wrap}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child{border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
details{margin-left:1.25rem}
details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
details>summary::-webkit-details-marker{display:none}
details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
.listingblock>.content{position:relative}
.listingblock pre>code{display:block}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.prettyprint{background:#f7f7f8}
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
pre.prettyprint li code[data-lang]::before{opacity:1}
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
table.linenotable td.code{padding-left:.75em}
table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
pre.pygments span.linenos{display:inline-block;margin-right:.75em}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>*>tr>*{border-width:1px}
table.grid-cols>*>tr>*{border-width:0 1px}
table.grid-rows>*>tr>*{border-width:1px 0}
table.frame-all{border-width:1px}
table.frame-ends{border-width:1px 0}
table.frame-sides{border-width:0 1px}
table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
li>p:empty:only-child::before{content:"";display:inline-block}
ul.checklist>li>p:first-child{margin-left:-1em}
ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
td.hdlist2{word-wrap:anywhere}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active,#footnotes .footnote a:first-of-type:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background:#00fafa}
.black{color:#000}
.black-background{background:#000}
.blue{color:#0000bf}
.blue-background{background:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background:#fa00fa}
.gray{color:#606060}
.gray-background{background:#7d7d7d}
.green{color:#006000}
.green-background{background:#007d00}
.lime{color:#00bf00}
.lime-background{background:#00fa00}
.maroon{color:#600000}
.maroon-background{background:#7d0000}
.navy{color:#000060}
.navy-background{background:#00007d}
.olive{color:#606000}
.olive-background{background:#7d7d00}
.purple{color:#600060}
.purple-background{background:#7d007d}
.red{color:#bf0000}
.red-background{background:#fa0000}
.silver{color:#909090}
.silver-background{background:#bcbcbc}
.teal{color:#006060}
.teal-background{background:#007d7d}
.white{color:#bfbfbf}
.white-background{background:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]{border-bottom:1px dotted}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#header,#content,#footnotes,#footer{max-width:none}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
</style>
<style>
pre>code {
   display: inline;
}
</style>
</head>
<body class="article">
<div id="header">
<h1>My First Object Walk</h1>
</div>
<div id="content">
<div class="sect1">
<h2 id="_whats_an_object_walk">What&#8217;s an Object Walk?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The object walk is a key concept in Git - this is the process that underpins
operations like object transfer and fsck. Beginning from a given commit, the
list of objects is found by walking parent relationships between commits (commit
X based on commit W) and containment relationships between objects (tree Y is
contained within commit X, and blob Z is located within tree Y, giving our
working tree for commit X something like <code>y/z.txt</code>).</p>
</div>
<div class="paragraph">
<p>A related concept is the revision walk, which is focused on commit objects and
their parent relationships and does not delve into other object types. The
revision walk is used for operations like <code>git</code> <code>log</code>.</p>
</div>
<div class="sect2">
<h3 id="_related_reading">Related Reading</h3>
<div class="ulist">
<ul>
<li>
<p><code>Documentation/user-manual.adoc</code> under "Hacking Git" contains some coverage of
the revision walker in its various incarnations.</p>
</li>
<li>
<p><code>revision.h</code></p>
</li>
<li>
<p><a href="https://eagain.net/articles/git-for-computer-scientists/">Git for Computer Scientists</a>
gives a good overview of the types of objects in Git and what your object
walk is really describing.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_setting_up">Setting Up</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Create a new branch from <code>master</code>.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>git checkout -b revwalk origin/master</pre>
</div>
</div>
<div class="paragraph">
<p>We&#8217;ll put our fiddling into a new command. For fun, let&#8217;s name it <code>git</code> <code>walken</code>.
Open up a new file <code>builtin/walken.c</code> and set up the command handler:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/*
 * "git walken"
 *
 * Part of the "My First Object Walk" tutorial.
 */

#include "builtin.h"
#include "trace.h"

int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo)
{
        trace_printf(_("cmd_walken incoming...\n"));
        return 0;
}</pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
<code>trace_printf</code>(), defined in <code>trace.h</code>, differs from <code>printf</code>() in
that it can be turned on or off at runtime. For the purposes of this
tutorial, we will write <code>walken</code> as though it is intended for use as
a "plumbing" command: that is, a command which is used primarily in
scripts, rather than interactively by humans (a "porcelain" command).
So we will send our debug output to <code>trace_printf</code>() instead.
When running, enable trace output by setting the environment variable <code>GIT_TRACE</code>.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Add usage text and <code>-h</code> handling, like all subcommands should consistently do
(our test suite will notice and complain if you fail to do so).
We&#8217;ll need to include the <code>parse-options.h</code> header.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>#include "parse-options.h"

...

int cmd_walken(int argc, const char **argv, const char *prefix)
{
        const char * const walken_usage[] = {
                N_("git walken"),
                NULL,
        };
        struct option options[] = {
                OPT_END()
        };

        argc = parse_options(argc, argv, prefix, options, walken_usage, 0);

        ...
}</pre>
</div>
</div>
<div class="paragraph">
<p>Also add the relevant line in <code>builtin.h</code> near <code>cmd_version</code>():</p>
</div>
<div class="listingblock">
<div class="content">
<pre>int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo);</pre>
</div>
</div>
<div class="paragraph">
<p>Include the command in <code>git.c</code> in <code>commands</code>[] near the entry for <code>version</code>,
maintaining alphabetical ordering:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>{ "walken", cmd_walken, RUN_SETUP },</pre>
</div>
</div>
<div class="paragraph">
<p>Add an entry for the new command in the both the Make and Meson build system,
before the entry for <code>worktree</code>:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>In the <code>Makefile</code>:</p>
</li>
</ul>
</div>
<div class="listingblock">
<div class="content">
<pre>...
BUILTIN_OBJS += builtin/walken.o
...</pre>
</div>
</div>
<div class="ulist">
<ul>
<li>
<p>In the <code>meson.build</code> file:</p>
</li>
</ul>
</div>
<div class="listingblock">
<div class="content">
<pre>builtin_sources = [
   ...
  'builtin/walken.c',
   ...
]</pre>
</div>
</div>
<div class="paragraph">
<p>Build and test out your command, without forgetting to ensure the <code>DEVELOPER</code>
flag is set, and with <code>GIT_TRACE</code> enabled so the debug output can be seen:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ echo DEVELOPER=1 &gt;&gt;config.mak
$ make
$ GIT_TRACE=1 ./bin-wrappers/git walken</pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
For a more exhaustive overview of the new command process, take a look at
<code>Documentation/MyFirstContribution.adoc</code>.
</td>
</tr>
</table>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
A reference implementation can be found at
<a href="https://github.com/nasamuffin/git/tree/revwalk" class="bare">https://github.com/nasamuffin/git/tree/revwalk</a>.
</td>
</tr>
</table>
</div>
<div class="sect2">
<h3 id="_struct_rev_cmdline_info"><code>struct</code> <code>rev_cmdline_info</code></h3>
<div class="paragraph">
<p>The definition of <code>struct</code> <code>rev_cmdline_info</code> can be found in <code>revision.h</code>.</p>
</div>
<div class="paragraph">
<p>This struct is contained within the <code>rev_info</code> struct and is used to reflect
parameters provided by the user over the CLI.</p>
</div>
<div class="paragraph">
<p><code>nr</code> represents the number of <code>rev_cmdline_entry</code> present in the array.</p>
</div>
<div class="paragraph">
<p><code>alloc</code> is used by the <code>ALLOC_GROW</code> macro. Check <code>alloc.h</code> - this variable is
used to track the allocated size of the list.</p>
</div>
<div class="paragraph">
<p>Per entry, we find:</p>
</div>
<div class="paragraph">
<p><code>item</code> is the object provided upon which to base the object walk. Items in Git
can be blobs, trees, commits, or tags. (See <code>Documentation/gittutorial-2.adoc</code>.)</p>
</div>
<div class="paragraph">
<p><code>name</code> is the object ID (OID) of the object - a hex string you may be familiar
with from using Git to organize your source in the past. Check the tutorial
mentioned above towards the top for a discussion of where the OID can come
from.</p>
</div>
<div class="paragraph">
<p><code>whence</code> indicates some information about what to do with the parents of the
specified object. We&#8217;ll explore this flag more later on; take a look at
<code>Documentation/revisions.adoc</code> to get an idea of what could set the <code>whence</code>
value.</p>
</div>
<div class="paragraph">
<p><code>flags</code> are used to hint the beginning of the revision walk and are the first
block under the #include`s <code>in</code> `revision.<code>h</code>. The most likely ones to be set in
the <code>rev_cmdline_info</code> are <code>UNINTERESTING</code> and <code>BOTTOM</code>, but these same flags
can be used during the walk, as well.</p>
</div>
</div>
<div class="sect2">
<h3 id="_struct_rev_info"><code>struct</code> <code>rev_info</code></h3>
<div class="paragraph">
<p>This one is quite a bit longer, and many fields are only used during the walk
by <code>revision.c</code> - not configuration options. Most of the configurable flags in
<code>struct</code> <code>rev_info</code> have a mirror in <code>Documentation/rev-list-options.adoc</code>. It&#8217;s a
good idea to take some time and read through that document.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_basic_commit_walk">Basic Commit Walk</h2>
<div class="sectionbody">
<div class="paragraph">
<p>First, let&#8217;s see if we can replicate the output of <code>git</code> <code>log</code> <code>--oneline</code>. We&#8217;ll
refer back to the implementation frequently to discover norms when performing
an object walk of our own.</p>
</div>
<div class="paragraph">
<p>To do so, we&#8217;ll first find all the commits, in order, which preceded the current
commit. We&#8217;ll extract the name and subject of the commit from each.</p>
</div>
<div class="paragraph">
<p>Ideally, we will also be able to find out which ones are currently at the tip of
various branches.</p>
</div>
<div class="sect2">
<h3 id="_setting_up_2">Setting Up</h3>
<div class="paragraph">
<p>Preparing for your object walk has some distinct stages.</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Perform default setup for this mode, and others which may be invoked.</p>
</li>
<li>
<p>Check configuration files for relevant settings.</p>
</li>
<li>
<p>Set up the <code>rev_info</code> struct.</p>
</li>
<li>
<p>Tweak the initialized <code>rev_info</code> to suit the current walk.</p>
</li>
<li>
<p>Prepare the <code>rev_info</code> for the walk.</p>
</li>
<li>
<p>Iterate over the objects, processing each one.</p>
</li>
</ol>
</div>
<div class="sect3">
<h4 id="_default_setups">Default Setups</h4>
<div class="paragraph">
<p>Before examining configuration files which may modify command behavior, set up
default state for switches or options your command may have. If your command
utilizes other Git components, ask them to set up their default states as well.
For instance, <code>git</code> <code>log</code> takes advantage of <code>grep</code> and <code>diff</code> functionality, so
its <code>init_log_defaults</code>() sets its own state (<code>decoration_style</code>) and asks
<code>grep</code> and <code>diff</code> to initialize themselves by calling each of their
initialization functions.</p>
</div>
</div>
<div class="sect3">
<h4 id="_configuring_from_gitconfig">Configuring From .<code>gitconfig</code></h4>
<div class="paragraph">
<p>Next, we should have a look at any relevant configuration settings (i.e.,
settings readable and settable from <code>git</code> <code>config</code>). This is done by providing a
callback to <code>repo_config</code>(); within that callback, you can also invoke methods
from other components you may need that need to intercept these options. Your
callback will be invoked once per each configuration value which Git knows about
(global, local, worktree, etc.).</p>
</div>
<div class="paragraph">
<p>Similarly to the default values, we don&#8217;t have anything to do here yet
ourselves; however, we should call <code>git_default_config</code>() if we aren&#8217;t calling
any other existing config callbacks.</p>
</div>
<div class="paragraph">
<p>Add a new function to <code>builtin/walken.c</code>.
We&#8217;ll also need to include the <code>config.h</code> header:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>#include "config.h"

...

static int git_walken_config(const char *var, const char *value,
                             const struct config_context *ctx, void *cb)
{
        /*
         * For now, we don't have any custom configuration, so fall back to
         * the default config.
         */
        return git_default_config(var, value, ctx, cb);
}</pre>
</div>
</div>
<div class="paragraph">
<p>Make sure to invoke <code>repo_config</code>() with it in your <code>cmd_walken</code>():</p>
</div>
<div class="listingblock">
<div class="content">
<pre>int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo)
{
        ...

        repo_config(repo, git_walken_config, NULL);

        ...
}</pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="_setting_up_rev_info">Setting Up <code>rev_info</code></h4>
<div class="paragraph">
<p>Now that we&#8217;ve gathered external configuration and options, it&#8217;s time to
initialize the <code>rev_info</code> object which we will use to perform the walk. This is
typically done by calling <code>repo_init_revisions</code>() with the repository you intend
to target, as well as the <code>prefix</code> argument of <code>cmd_walken</code> and your <code>rev_info</code>
struct.</p>
</div>
<div class="paragraph">
<p>Add the <code>struct</code> <code>rev_info</code> and the <code>repo_init_revisions</code>() call.
We&#8217;ll also need to include the <code>revision.h</code> header:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>#include "revision.h"

...

int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo)
{
        /* This can go wherever you like in your declarations.*/
        struct rev_info rev;
        ...

        /* This should go after the repo_config() call. */
        repo_init_revisions(repo, &amp;rev, prefix);

        ...
}</pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="_tweaking_rev_info_for_the_walk">Tweaking <code>rev_info</code> For the Walk</h4>
<div class="paragraph">
<p>We&#8217;re getting close, but we&#8217;re still not quite ready to go. Now that <code>rev</code> is
initialized, we can modify it to fit our needs. This is usually done within a
helper for clarity, so let&#8217;s add one:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>static void final_rev_info_setup(struct rev_info *rev)
{
        /*
         * We want to mimic the appearance of `git log --oneline`, so let's
         * force oneline format.
         */
        get_commit_format("oneline", rev);

        /* Start our object walk at HEAD. */
        add_head_to_pending(rev);
}</pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
<div class="paragraph">
<p>Instead of using the shorthand <code>add_head_to_pending</code>(), you could do
something like this:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>        struct setup_revision_opt opt;

        memset(&amp;opt, 0, sizeof(opt));
        opt.def = "HEAD";
        opt.revarg_opt = REVARG_COMMITTISH;
        setup_revisions(argc, argv, rev, &amp;opt);</pre>
</div>
</div>
<div class="paragraph">
<p>Using a <code>setup_revision_opt</code> gives you finer control over your walk&#8217;s starting
point.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Then let&#8217;s invoke <code>final_rev_info_setup</code>() after the call to
<code>repo_init_revisions</code>():</p>
</div>
<div class="listingblock">
<div class="content">
<pre>int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo)
{
        ...

        final_rev_info_setup(&amp;rev);

        ...
}</pre>
</div>
</div>
<div class="paragraph">
<p>Later, we may wish to add more arguments to <code>final_rev_info_setup</code>(). But for
now, this is all we need.</p>
</div>
</div>
<div class="sect3">
<h4 id="_preparing_rev_info_for_the_walk">Preparing <code>rev_info</code> For the Walk</h4>
<div class="paragraph">
<p>Now that <code>rev</code> is all initialized and configured, we&#8217;ve got one more setup step
before we get rolling. We can do this in a helper, which will both prepare the
<code>rev_info</code> for the walk, and perform the walk itself. Let&#8217;s start the helper
with the call to <code>prepare_revision_walk</code>(), which can return an error without
dying on its own:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>static void walken_commit_walk(struct rev_info *rev)
{
        if (prepare_revision_walk(rev))
                die(_("revision walk setup failed"));
}</pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
<code>die</code>() prints to <code>stderr</code> and exits the program. Since it will print to
<code>stderr</code> it&#8217;s likely to be seen by a human, so we will localize it.
</td>
</tr>
</table>
</div>
</div>
<div class="sect3">
<h4 id="_performing_the_walk">Performing the Walk!</h4>
<div class="paragraph">
<p>Finally! We are ready to begin the walk itself. Now we can see that <code>rev_info</code>
can also be used as an iterator; we move to the next item in the walk by using
<code>get_revision</code>() repeatedly. Add the listed variable declarations at the top and
the walk loop below the <code>prepare_revision_walk</code>() call within your
<code>walken_commit_walk</code>():</p>
</div>
<div class="listingblock">
<div class="content">
<pre>#include "pretty.h"

...

static void walken_commit_walk(struct rev_info *rev)
{
        struct commit *commit;
        struct strbuf prettybuf = STRBUF_INIT;

        ...

        while ((commit = get_revision(rev))) {
                strbuf_reset(&amp;prettybuf);
                pp_commit_easy(CMIT_FMT_ONELINE, commit, &amp;prettybuf);
                puts(prettybuf.buf);
        }
        strbuf_release(&amp;prettybuf);
}</pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
<code>puts</code>() prints a <code>char*</code> to <code>stdout</code>. Since this is the part of the
command we expect to be machine-parsed, we&#8217;re sending it directly to stdout.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Give it a shot.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ make
$ ./bin-wrappers/git walken</pre>
</div>
</div>
<div class="paragraph">
<p>You should see all of the subject lines of all the commits in
your tree&#8217;s history, in order, ending with the initial commit, "Initial revision
of "git", the information manager from hell". Congratulations! You&#8217;ve written
your first revision walk. You can play with printing some additional fields
from each commit if you&#8217;re curious; have a look at the functions available in
<code>commit.h</code>.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_adding_a_filter">Adding a Filter</h3>
<div class="paragraph">
<p>Next, let&#8217;s try to filter the commits we see based on their author. This is
equivalent to running <code>git</code> <code>log</code> <code>--author=</code><em>&lt;pattern&gt;</em>. We can add a filter by
modifying <code>rev_info.grep_filter</code>, which is a <code>struct</code> <code>grep_opt</code>.</p>
</div>
<div class="paragraph">
<p>First some setup. Add <code>grep_config</code>() to <code>git_walken_config</code>():</p>
</div>
<div class="listingblock">
<div class="content">
<pre>static int git_walken_config(const char *var, const char *value,
                             const struct config_context *ctx, void *cb)
{
        grep_config(var, value, ctx, cb);
        return git_default_config(var, value, ctx, cb);
}</pre>
</div>
</div>
<div class="paragraph">
<p>Next, we can modify the <code>grep_filter</code>. This is done with convenience functions
found in <code>grep.h</code>. For fun, we&#8217;re filtering to only commits from folks using a
<code>gmail.com</code> email address - a not-very-precise guess at who may be working on
Git as a hobby. Since we&#8217;re checking the author, which is a specific line in the
header, we&#8217;ll use the <code>append_header_grep_pattern</code>() helper. We can use
the <code>enum</code> <code>grep_header_field</code> to indicate which part of the commit header we want
to search.</p>
</div>
<div class="paragraph">
<p>In <code>final_rev_info_setup</code>(), add your filter line:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>static void final_rev_info_setup(int argc, const char **argv,
                const char *prefix, struct rev_info *rev)
{
        ...

        append_header_grep_pattern(&amp;rev-&gt;grep_filter, GREP_HEADER_AUTHOR,
                "gmail");
        compile_grep_patterns(&amp;rev-&gt;grep_filter);

        ...
}</pre>
</div>
</div>
<div class="paragraph">
<p><code>append_header_grep_pattern</code>() adds your new "gmail" pattern to <code>rev_info</code>, but
it won&#8217;t work unless we compile it with <code>compile_grep_patterns</code>().</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
If you are using <code>setup_revisions</code>() (for example, if you are passing a
<code>setup_revision_opt</code> instead of using <code>add_head_to_pending</code>()), you don&#8217;t need
to call <code>compile_grep_patterns</code>() because <code>setup_revisions</code>() calls it for you.
</td>
</tr>
</table>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
We could add the same filter via the <code>append_grep_pattern</code>() helper if we
wanted to, but <code>append_header_grep_pattern</code>() adds the <code>enum</code> <code>grep_context</code> and
<code>enum</code> <code>grep_pat_token</code> for us.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_changing_the_order">Changing the Order</h3>
<div class="paragraph">
<p>There are a few ways that we can change the order of the commits during a
revision walk. Firstly, we can use the <code>enum</code> <code>rev_sort_order</code> to choose from some
typical orderings.</p>
</div>
<div class="paragraph">
<p><code>topo_order</code> is the same as <code>git</code> <code>log</code> <code>--topo-order</code>: we avoid showing a parent
before all of its children have been shown, and we avoid mixing commits which
are in different lines of history. (<code>git</code> <code>help</code> <code>log</code>'s section on <code>--topo-order</code>
has a very nice diagram to illustrate this.)</p>
</div>
<div class="paragraph">
<p>Let&#8217;s see what happens when we run with <code>REV_SORT_BY_COMMIT_DATE</code> as opposed to
<code>REV_SORT_BY_AUTHOR_DATE</code>. Add the following:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>static void final_rev_info_setup(int argc, const char **argv,
                const char *prefix, struct rev_info *rev)
{
        ...

        rev-&gt;topo_order = 1;
        rev-&gt;sort_order = REV_SORT_BY_COMMIT_DATE;

        ...
}</pre>
</div>
</div>
<div class="paragraph">
<p>Let&#8217;s output this into a file so we can easily diff it with the walk sorted by
author date.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ make
$ ./bin-wrappers/git walken &gt; commit-date.txt</pre>
</div>
</div>
<div class="paragraph">
<p>Then, let&#8217;s sort by author date and run it again.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>static void final_rev_info_setup(int argc, const char **argv,
                const char *prefix, struct rev_info *rev)
{
        ...

        rev-&gt;topo_order = 1;
        rev-&gt;sort_order = REV_SORT_BY_AUTHOR_DATE;

        ...
}</pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre>$ make
$ ./bin-wrappers/git walken &gt; author-date.txt</pre>
</div>
</div>
<div class="paragraph">
<p>Finally, compare the two. This is a little less helpful without object names or
dates, but hopefully we get the idea.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ diff -u commit-date.txt author-date.txt</pre>
</div>
</div>
<div class="paragraph">
<p>This display indicates that commits can be reordered after they&#8217;re written, for
example with <code>git</code> <code>rebase</code>.</p>
</div>
<div class="paragraph">
<p>Let&#8217;s try one more reordering of commits. <code>rev_info</code> exposes a <code>reverse</code> flag.
Set that flag somewhere inside of <code>final_rev_info_setup</code>():</p>
</div>
<div class="listingblock">
<div class="content">
<pre>static void final_rev_info_setup(int argc, const char **argv, const char *prefix,
                struct rev_info *rev)
{
        ...

        rev-&gt;reverse = 1;

        ...
}</pre>
</div>
</div>
<div class="paragraph">
<p>Run your walk again and note the difference in order. (If you remove the grep
pattern, you should see the last commit this call gives you as your current
HEAD.)</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_basic_object_walk">Basic Object Walk</h2>
<div class="sectionbody">
<div class="paragraph">
<p>So far we&#8217;ve been walking only commits. But Git has more types of objects than
that! Let&#8217;s see if we can walk <em>all</em> objects, and find out some information
about each one.</p>
</div>
<div class="paragraph">
<p>We can base our work on an example. <code>git</code> <code>pack-objects</code> prepares all kinds of
objects for packing into a bitmap or packfile. The work we are interested in
resides in <code>builtin/pack-objects.c:get_object_list</code>(); examination of that
function shows that the all-object walk is being performed by
<code>traverse_commit_list</code>() or <code>traverse_commit_list_filtered</code>(). Those two
functions reside in <code>list-objects.c</code>; examining the source shows that, despite
the name, these functions traverse all kinds of objects. Let&#8217;s have a look at
the arguments to <code>traverse_commit_list</code>().</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>struct</code> <code>rev_info</code> <code>*revs</code>: This is the <code>rev_info</code> used for the walk. If
its <code>filter</code> member is not <code>NULL</code>, then <code>filter</code> contains information for
how to filter the object list.</p>
</li>
<li>
<p><code>show_commit_fn</code> <code>show_commit</code>: A callback which will be used to handle each
individual commit object.</p>
</li>
<li>
<p><code>show_object_fn</code> <code>show_object</code>: A callback which will be used to handle each
non-commit object (so each blob, tree, or tag).</p>
</li>
<li>
<p><code>void</code> <code>*show_data</code>: A context buffer which is passed in turn to <code>show_commit</code>
and <code>show_object</code>.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>In addition, <code>traverse_commit_list_filtered</code>() has an additional parameter:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>struct</code> <code>oidset</code> <code>*omitted</code>: A linked-list of object IDs which the provided
filter caused to be omitted.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>It looks like these methods use callbacks we provide instead of needing us
to call it repeatedly ourselves. Cool! Let&#8217;s add the callbacks first.</p>
</div>
<div class="paragraph">
<p>For the sake of this tutorial, we&#8217;ll simply keep track of how many of each kind
of object we find. At file scope in <code>builtin/walken.c</code> add the following
tracking variables:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>static int commit_count;
static int tag_count;
static int blob_count;
static int tree_count;</pre>
</div>
</div>
<div class="paragraph">
<p>Commits are handled by a different callback than other objects; let&#8217;s do that
one first:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>static void walken_show_commit(struct commit *cmt, void *buf)
{
        commit_count++;
}</pre>
</div>
</div>
<div class="paragraph">
<p>The <code>cmt</code> argument is fairly self-explanatory. But it&#8217;s worth mentioning that
the <code>buf</code> argument is actually the context buffer that we can provide to the
traversal calls - <code>show_data</code>, which we mentioned a moment ago.</p>
</div>
<div class="paragraph">
<p>Since we have the <code>struct</code> <code>commit</code> object, we can look at all the same parts that
we looked at in our earlier commit-only walk. For the sake of this tutorial,
though, we&#8217;ll just increment the commit counter and move on.</p>
</div>
<div class="paragraph">
<p>The callback for non-commits is a little different, as we&#8217;ll need to check
which kind of object we&#8217;re dealing with:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>static void walken_show_object(struct object *obj, const char *str, void *buf)
{
        switch (obj-&gt;type) {
        case OBJ_TREE:
                tree_count++;
                break;
        case OBJ_BLOB:
                blob_count++;
                break;
        case OBJ_TAG:
                tag_count++;
                break;
        case OBJ_COMMIT:
                BUG("unexpected commit object in walken_show_object\n");
        default:
                BUG("unexpected object type %s in walken_show_object\n",
                        type_name(obj-&gt;type));
        }
}</pre>
</div>
</div>
<div class="paragraph">
<p>Again, <code>obj</code> is fairly self-explanatory, and we can guess that <code>buf</code> is the same
context pointer that <code>walken_show_commit</code>() receives: the <code>show_data</code> argument
to <code>traverse_commit_list</code>() and <code>traverse_commit_list_filtered</code>(). Finally,
<code>str</code> contains the name of the object, which ends up being something like
<code>foo.txt</code> (blob), <code>bar/baz</code> (tree), or <code>v1.2.3</code> (tag).</p>
</div>
<div class="paragraph">
<p>To help assure us that we aren&#8217;t double-counting commits, we&#8217;ll include some
complaining if a commit object is routed through our non-commit callback; we&#8217;ll
also complain if we see an invalid object type. Since those two cases should be
unreachable, and would only change in the event of a semantic change to the Git
codebase, we complain by using <code>BUG</code>() - which is a signal to a developer that
the change they made caused unintended consequences, and the rest of the
codebase needs to be updated to understand that change. <code>BUG</code>() is not intended
to be seen by the public, so it is not localized.</p>
</div>
<div class="paragraph">
<p>Our main object walk implementation is substantially different from our commit
walk implementation, so let&#8217;s make a new function to perform the object walk. We
can perform setup which is applicable to all objects here, too, to keep separate
from setup which is applicable to commit-only walks.</p>
</div>
<div class="paragraph">
<p>We&#8217;ll start by enabling all types of objects in the <code>struct</code> <code>rev_info</code>.  We&#8217;ll
also turn on <code>tree_blobs_in_commit_order</code>, which means that we will walk a
commit&#8217;s tree and everything it points to immediately after we find each commit,
as opposed to waiting for the end and walking through all trees after the commit
history has been discovered. With the appropriate settings configured, we are
ready to call <code>prepare_revision_walk</code>().</p>
</div>
<div class="listingblock">
<div class="content">
<pre>static void walken_object_walk(struct rev_info *rev)
{
        rev-&gt;tree_objects = 1;
        rev-&gt;blob_objects = 1;
        rev-&gt;tag_objects = 1;
        rev-&gt;tree_blobs_in_commit_order = 1;

        if (prepare_revision_walk(rev))
                die(_("revision walk setup failed"));

        commit_count = 0;
        tag_count = 0;
        blob_count = 0;
        tree_count = 0;</pre>
</div>
</div>
<div class="paragraph">
<p>Let&#8217;s start by calling just the unfiltered walk and reporting our counts.
Complete your implementation of <code>walken_object_walk</code>().
We&#8217;ll also need to include the <code>list-objects.h</code> header.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>#include "list-objects.h"

...

        traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);

        printf("commits %d\nblobs %d\ntags %d\ntrees %d\n", commit_count,
                blob_count, tag_count, tree_count);
}</pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
This output is intended to be machine-parsed. Therefore, we are not
sending it to <code>trace_printf</code>(), and we are not localizing it - we need scripts
to be able to count on the formatting to be exactly the way it is shown here.
If we were intending this output to be read by humans, we would need to localize
it with <code>_</code>().
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Finally, we&#8217;ll ask <code>cmd_walken</code>() to use the object walk instead. Discussing
command line options is out of scope for this tutorial, so we&#8217;ll just hardcode
a branch we can change at compile time. Where you call <code>final_rev_info_setup</code>()
and <code>walken_commit_walk</code>(), instead branch like so:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>        if (1) {
                add_head_to_pending(&amp;rev);
                walken_object_walk(&amp;rev);
        } else {
                final_rev_info_setup(argc, argv, prefix, &amp;rev);
                walken_commit_walk(&amp;rev);
        }</pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
For simplicity, we&#8217;ve avoided all the filters and sorts we applied in
<code>final_rev_info_setup</code>() and simply added <code>HEAD</code> to our pending queue. If you
want, you can certainly use the filters we added before by moving
<code>final_rev_info_setup</code>() out of the conditional and removing the call to
<code>add_head_to_pending</code>().
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Now we can try to run our command! It should take noticeably longer than the
commit walk, but an examination of the output will give you an idea why. Your
output should look similar to this example, but with different counts:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Object walk completed. Found 55733 commits, 100274 blobs, 0 tags, and 104210 trees.</pre>
</div>
</div>
<div class="paragraph">
<p>This makes sense. We have more trees than commits because the Git project has
lots of subdirectories which can change, plus at least one tree per commit. We
have no tags because we started on a commit (<code>HEAD</code>) and while tags can point to
commits, commits can&#8217;t point to tags.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
You will have different counts when you run this yourself! The number of
objects grows along with the Git project.
</td>
</tr>
</table>
</div>
<div class="sect2">
<h3 id="_adding_a_filter_2">Adding a Filter</h3>
<div class="paragraph">
<p>There are a handful of filters that we can apply to the object walk laid out in
<code>Documentation/rev-list-options.adoc</code>. These filters are typically useful for
operations such as creating packfiles or performing a partial clone. They are
defined in <code>list-objects-filter-options.h</code>. For the purposes of this tutorial we
will use the "tree:1" filter, which causes the walk to omit all trees and blobs
which are not directly referenced by commits reachable from the commit in
<code>pending</code> when the walk begins. (<code>pending</code> is the list of objects which need to
be traversed during a walk; you can imagine a breadth-first tree traversal to
help understand. In our case, that means we omit trees and blobs not directly
referenced by <code>HEAD</code> or <code>HEAD</code>'s history, because we begin the walk with only
<code>HEAD</code> in the <code>pending</code> list.)</p>
</div>
<div class="paragraph">
<p>For now, we are not going to track the omitted objects, so we&#8217;ll replace those
parameters with <code>NULL</code>. For the sake of simplicity, we&#8217;ll add a simple
build-time branch to use our filter or not. Preface the line calling
<code>traverse_commit_list</code>() with the following, which will remind us which kind of
walk we&#8217;ve just performed:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>        if (0) {
                /* Unfiltered: */
                trace_printf(_("Unfiltered object walk.\n"));
        } else {
                trace_printf(
                        _("Filtered object walk with filterspec 'tree:1'.\n"));

                parse_list_objects_filter(&amp;rev-&gt;filter, "tree:1");
        }
        traverse_commit_list(rev, walken_show_commit,
                             walken_show_object, NULL);</pre>
</div>
</div>
<div class="paragraph">
<p>The <code>rev-</code>&gt;<code>filter</code> member is usually built directly from a command
line argument, so the module provides an easy way to build one from a string.
Even though we aren&#8217;t taking user input right now, we can still build one with
a hardcoded string using <code>parse_list_objects_filter</code>().</p>
</div>
<div class="paragraph">
<p>With the filter spec "tree:1", we are expecting to see <em>only</em> the root tree for
each commit; therefore, the tree object count should be less than or equal to
the number of commits. (For an example of why that&#8217;s true: <code>git</code> <code>commit</code> <code>--revert</code>
points to the same tree object as its grandparent.)</p>
</div>
</div>
<div class="sect2">
<h3 id="_counting_omitted_objects">Counting Omitted Objects</h3>
<div class="paragraph">
<p>We also have the capability to enumerate all objects which were omitted by a
filter, like with <code>git</code> <code>log</code> <code>--filter=</code><em>&lt;spec&gt;</em> <code>--filter-print-omitted</code>. To do this,
change <code>traverse_commit_list</code>() to <code>traverse_commit_list_filtered</code>(), which is
able to populate an <code>omitted</code> list.  Asking for this list of filtered objects
may cause performance degradations, however, because in this case, despite
filtering objects, the possibly much larger set of all reachable objects must
be processed in order to populate that list.</p>
</div>
<div class="paragraph">
<p>First, add the <code>struct</code> <code>oidset</code> and related items we will use to iterate it:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>#include "oidset.h"

...

static void walken_object_walk(
        ...

        struct oidset omitted;
        struct oidset_iter oit;
        struct object_id *oid = NULL;
        int omitted_count = 0;
        oidset_init(&amp;omitted, 0);

        ...</pre>
</div>
</div>
<div class="paragraph">
<p>Replace the call to <code>traverse_commit_list</code>() with
<code>traverse_commit_list_filtered</code>() and pass a pointer to the <code>omitted</code> oidset
defined and initialized above:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>        ...

                traverse_commit_list_filtered(rev,
                        walken_show_commit, walken_show_object, NULL, &amp;omitted);

        ...</pre>
</div>
</div>
<div class="paragraph">
<p>Then, after your traversal, the <code>oidset</code> traversal is pretty straightforward.
Count all the objects within and modify the print statement:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>        /* Count the omitted objects. */
        oidset_iter_init(&amp;omitted, &amp;oit);

        while ((oid = oidset_iter_next(&amp;oit)))
                omitted_count++;

        printf("commits %d\nblobs %d\ntags %d\ntrees %d\nomitted %d\n",
                commit_count, blob_count, tag_count, tree_count, omitted_count);</pre>
</div>
</div>
<div class="paragraph">
<p>By running your walk with and without the filter, you should find that the total
object count in each case is identical. You can also time each invocation of
the <code>walken</code> subcommand, with and without <code>omitted</code> being passed in, to confirm
to yourself the runtime impact of tracking all omitted objects.</p>
</div>
</div>
<div class="sect2">
<h3 id="_changing_the_order_2">Changing the Order</h3>
<div class="paragraph">
<p>Finally, let&#8217;s demonstrate that you can also reorder walks of all objects, not
just walks of commits. First, we&#8217;ll make our handlers chattier - modify
<code>walken_show_commit</code>() and <code>walken_show_object</code>() to print the object as they
go:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>#include "hex.h"

...

static void walken_show_commit(struct commit *cmt, void *buf)
{
        trace_printf("commit: %s\n", oid_to_hex(&amp;cmt-&gt;object.oid));
        commit_count++;
}

static void walken_show_object(struct object *obj, const char *str, void *buf)
{
        trace_printf("%s: %s\n", type_name(obj-&gt;type), oid_to_hex(&amp;obj-&gt;oid));

        ...
}</pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
Since we will be examining this output directly as humans, we&#8217;ll use
<code>trace_printf</code>() here. Additionally, since this change introduces a significant
number of printed lines, using <code>trace_printf</code>() will allow us to easily silence
those lines without having to recompile.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>(Leave the counter increment logic in place.)</p>
</div>
<div class="paragraph">
<p>With only that change, run again (but save yourself some scrollback):</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ GIT_TRACE=1 ./bin-wrappers/git walken 2&gt;&amp;1 | head -n 10</pre>
</div>
</div>
<div class="paragraph">
<p>Take a look at the top commit with <code>git</code> <code>show</code> and the object ID you printed; it
should be the same as the output of <code>git</code> <code>show</code> <code>HEAD</code>.</p>
</div>
<div class="paragraph">
<p>Next, let&#8217;s change a setting on our <code>struct</code> <code>rev_info</code> within
<code>walken_object_walk</code>(). Find where you&#8217;re changing the other settings on <code>rev</code>,
such as <code>rev-</code>&gt;<code>tree_objects</code> and <code>rev-</code>&gt;<code>tree_blobs_in_commit_order</code>, and add the
<code>reverse</code> setting at the bottom:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>        ...

        rev-&gt;tree_objects = 1;
        rev-&gt;blob_objects = 1;
        rev-&gt;tag_objects = 1;
        rev-&gt;tree_blobs_in_commit_order = 1;
        rev-&gt;reverse = 1;

        ...</pre>
</div>
</div>
<div class="paragraph">
<p>Now, run again, but this time, let&#8217;s grab the last handful of objects instead
of the first handful:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ make
$ GIT_TRACE=1 ./bin-wrappers/git walken 2&gt;&amp;1 | tail -n 10</pre>
</div>
</div>
<div class="paragraph">
<p>The last commit object given should have the same OID as the one we saw at the
top before, and running <code>git</code> <code>show</code> <em>&lt;oid&gt;</em> with that OID should give you again
the same results as <code>git</code> <code>show</code> <code>HEAD</code>. Furthermore, if you run and examine the
first ten lines again (with <code>head</code> instead of <code>tail</code> like we did before applying
the <code>reverse</code> setting), you should see that now the first commit printed is the
initial commit, <code>e83c5163</code>.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_wrapping_up">Wrapping Up</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Let&#8217;s review. In this tutorial, we:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Built a commit walk from the ground up</p>
</li>
<li>
<p>Enabled a grep filter for that commit walk</p>
</li>
<li>
<p>Changed the sort order of that filtered commit walk</p>
</li>
<li>
<p>Built an object walk (tags, commits, trees, and blobs) from the ground up</p>
</li>
<li>
<p>Learned how to add a filter-spec to an object walk</p>
</li>
<li>
<p>Changed the display order of the filtered object walk</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2025-06-30 16:59:08 -0700
</div>
</div>
</body>
</html>