<?xml version="1.0"?>
<rss version="2.0"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Tyler Cipriani: pages tagged git-abuse</title>
<link>https://tylercipriani.com/tags/git-abuse/</link>
<atom:link href="https://tylercipriani.com/tags/git-abuse/index.rss" rel="self" type="application/rss+xml"/>

<description>Tyler Cipriani</description>
<generator>ikiwiki</generator>
<pubDate>Sat, 01 Jul 2017 00:49:09 +0000</pubDate>
<item>
	<title>(ab)Using Git Notes</title>

	<guid isPermaLink="false">https://tylercipriani.com/blog/2016/08/26/abusing-git-notes/</guid>

	<link>https://tylercipriani.com/blog/2016/08/26/abusing-git-notes/</link>

	<dc:creator>Tyler Cipriani</dc:creator>



	<category>computing</category>

	<category>git</category>

	<category>git-abuse</category>

	<category>vcs</category>


	<pubDate>Fri, 26 Aug 2016 22:35:15 +0000</pubDate>
	<dcterms:modified>2017-07-01T00:49:09Z</dcterms:modified>


	<description>&lt;section id=&quot;flickr&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;Flickr &lt;a href=&quot;https://tylercipriani.com/tags/git-abuse/#flickr&quot;&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I like to post my &lt;a href=&quot;http://photos.tylercipriani.com/&quot;&gt;photos on the internet&lt;/a&gt;. I used to post all of my photos on &lt;a href=&quot;https://www.flickr.com/photos/tylercipriani/&quot;&gt;Flickr&lt;/a&gt;, but that site has been getting &lt;a href=&quot;https://github.com/thcipriani/dotfiles/commit/c2ff9eeedb1c6634982efc940e43335264018269&quot;&gt;worse&lt;/a&gt; and &lt;a href=&quot;https://techcrunch.com/2013/05/20/flickr-gets-a-huge-revamp-with-hi-res-image-filled-ui-new-android-app-and-1tb-of-free-storage/&quot;&gt;worse&lt;/a&gt; and &lt;a href=&quot;https://www.theguardian.com/technology/2016/jul/25/yahoo-moves-next-for-flickr&quot;&gt;worse&lt;/a&gt;. More recently, I’ve been using a static photo gallery generator I &lt;strike&gt;wrote&lt;/strike&gt; hacked together that I (perhaps unfortunately) named &lt;a href=&quot;https://github.com/thcipriani/dotfiles/tree/master/bin/hiraeth&quot;&gt;hiraeth&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Hiraeth is, to put it mildly, missing some features. There are a few reasons that I opted to create hiraeth rather than use something that was already built:&lt;/p&gt;
&lt;ol type=&quot;1&quot;&gt;
&lt;li&gt;I &lt;em&gt;need&lt;/em&gt; to host my own photos now, evidently. The internet has seemingly decided to sell its user-base to the highest bidder, so hosted services are out.&lt;/li&gt;
&lt;li&gt;I think it makes sense to host my photos statically, since they’re static (mostly).&lt;/li&gt;
&lt;li&gt;I really &lt;em&gt;like&lt;/em&gt; the way my &lt;code&gt;~/Pictures&lt;/code&gt; directory is organized—I can find stuff—and I don’t want to mess all that up to generate a crappy website out of my photos.&lt;/li&gt;
&lt;li&gt;I use git-annex to manage my &lt;code&gt;~/Pictures&lt;/code&gt;, which creates…unique challenges :)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hiraeth is invoked like: &lt;code&gt;publish [edited-photo-dir] [output-dir]&lt;/code&gt;. Hiraeth looks for a file named &lt;code&gt;_metadata.yaml&lt;/code&gt; inside the directory of edited photos and uses that to map photo files to photo descriptions and add titles and whatnot to the page. It makes a few different sized thumbnails of each photo, grabs the exif info, and generates some html.&lt;/p&gt;
&lt;p&gt;Hiraeth was designed to look and behave like a static version of Flickr circa 2007. There are still features to add, but there is a base that works in place at least.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;home-pictures&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;Home Pictures &lt;a href=&quot;https://tylercipriani.com/tags/git-abuse/#home-pictures&quot;&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I mange my &lt;code&gt;~/Pictures&lt;/code&gt; directory using &lt;a href=&quot;https://git-annex.branchable.com/&quot;&gt;git-annex&lt;/a&gt; (which I’ve wanted to write something about for a long time). This is mostly amazing and great. Git-annex has a lot of cool features. For instance, in git-annex once you’ve copied files to a remote, it will allow you to “&lt;code&gt;drop&lt;/code&gt;” a file locally to save space. You can still get the file back from the remote any time you rootin’ tootin’ feel like, so nbd. Occasionally, when I’m running out of space on one machine or another, I’ll &lt;code&gt;drop&lt;/code&gt; a bunch of photos.&lt;/p&gt;
&lt;p&gt;The ability to drop a bunch of photos means that hiraeth needs to be able to get photo metadata from a picture without having the file &lt;em&gt;actually&lt;/em&gt; be on disk.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;gerrit&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;Gerrit &lt;a href=&quot;https://tylercipriani.com/tags/git-abuse/#gerrit&quot;&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We use gerrit at work and I genuinely like it.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;rant&amp;gt;&lt;/code&gt; The web-UI is one of the worst interfaces I’ve ever used. The web interface is an unfortunate mix of late-90s, designed-by-engineers, impossibly-option-filled interface mashed together in an unholy union with a fancy-schmancy new-fangled javascripty single-page application. It’s basically a mix of two interface paradigms I hate, yet rarely see in concert: back-button breakage + no design aesthetic whatsoever. &lt;code&gt;&amp;lt;/rant&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HOWEVER&lt;/strong&gt;, The workflow gerrit enforces, the git features it uses, and the beautiful repository history that results makes gerrit a really nice code review system.&lt;/p&gt;
&lt;p&gt;Gerrit is the first system I’ve seen use git-notes.&lt;/p&gt;
&lt;p&gt;Gerrit has a cool feature where it keeps all of the patch review in git-notes:&lt;/p&gt;
&lt;div class=&quot;sourceCode&quot; id=&quot;cb1&quot;&gt;&lt;pre class=&quot;sourceCode bash&quot;&gt;&lt;code class=&quot;sourceCode bash&quot;&gt;&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-1&quot; title=&quot;1&quot;&gt;&lt;span class=&quot;ex&quot;&gt;tyler@taskmaster&lt;/span&gt;:mediawiki-core$ git fetch origin refs/notes/*:refs/notes/*&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-2&quot; title=&quot;2&quot;&gt;&lt;span class=&quot;ex&quot;&gt;remote&lt;/span&gt;: Counting objects: 176401, done&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-3&quot; title=&quot;3&quot;&gt;&lt;span class=&quot;ex&quot;&gt;remote&lt;/span&gt;: Finding sources: 100% (147886/147886)&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-4&quot; title=&quot;4&quot;&gt;&lt;span class=&quot;ex&quot;&gt;remote&lt;/span&gt;: Getting sizes: 100% (1723/1723)&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-5&quot; title=&quot;5&quot;&gt;&lt;span class=&quot;ex&quot;&gt;remote&lt;/span&gt;: Compressing objects: 100% (116810/116810)&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-6&quot; title=&quot;6&quot;&gt;&lt;span class=&quot;ex&quot;&gt;remote&lt;/span&gt;: Total 147886 (delta 120436), &lt;span class=&quot;ex&quot;&gt;reused&lt;/span&gt; 147854 (delta 120434)&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-7&quot; title=&quot;7&quot;&gt;&lt;span class=&quot;ex&quot;&gt;Receiving&lt;/span&gt; objects: 100% (147886/147886), &lt;span class=&quot;ex&quot;&gt;14.91&lt;/span&gt; MiB &lt;span class=&quot;kw&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;ex&quot;&gt;3.01&lt;/span&gt; MiB/s, done.&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-8&quot; title=&quot;8&quot;&gt;&lt;span class=&quot;ex&quot;&gt;Resolving&lt;/span&gt; deltas: 100% (120449/120449), &lt;span class=&quot;kw&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;ex&quot;&gt;.&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-9&quot; title=&quot;9&quot;&gt;&lt;span class=&quot;ex&quot;&gt;From&lt;/span&gt; ssh://gerrit.wikimedia.org:29418/mediawiki/core&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-10&quot; title=&quot;10&quot;&gt; &lt;span class=&quot;ex&quot;&gt;*&lt;/span&gt; [new ref]         refs/notes/commits -&lt;span class=&quot;op&quot;&gt;&amp;gt;&lt;/span&gt; refs/notes/commits&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-11&quot; title=&quot;11&quot;&gt; &lt;span class=&quot;ex&quot;&gt;*&lt;/span&gt; [new ref]         refs/notes/review -&lt;span class=&quot;op&quot;&gt;&amp;gt;&lt;/span&gt; refs/notes/review&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-12&quot; title=&quot;12&quot;&gt;&lt;span class=&quot;ex&quot;&gt;tyler@taskmaster&lt;/span&gt;:mediawiki-core$ ls -l .git/refs/notes&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-13&quot; title=&quot;13&quot;&gt;&lt;span class=&quot;ex&quot;&gt;total&lt;/span&gt; 8&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-14&quot; title=&quot;14&quot;&gt;&lt;span class=&quot;ex&quot;&gt;-rw-r--r--&lt;/span&gt; 1 tyler tyler 41 Aug 28 16:44 commits&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-15&quot; title=&quot;15&quot;&gt;&lt;span class=&quot;ex&quot;&gt;-rw-r--r--&lt;/span&gt; 1 tyler tyler 41 Aug 28 16:44 review&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-16&quot; title=&quot;16&quot;&gt;&lt;span class=&quot;ex&quot;&gt;tyler@taskmaster&lt;/span&gt;:mediawiki-core$ git log --show-notes=review --author=&lt;span class=&quot;st&quot;&gt;&amp;#39;Tyler Cipriani&amp;#39;&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-17&quot; title=&quot;17&quot;&gt; &lt;span class=&quot;ex&quot;&gt;commit&lt;/span&gt; ab131d4be475bf87b0f0a86fa356a2b1a188a673&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-18&quot; title=&quot;18&quot;&gt; &lt;span class=&quot;ex&quot;&gt;Author&lt;/span&gt;: Tyler Cipriani &lt;span class=&quot;op&quot;&gt;&amp;lt;&lt;/span&gt;tcipriani@wikimedia.org&lt;span class=&quot;op&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-19&quot; title=&quot;19&quot;&gt; &lt;span class=&quot;ex&quot;&gt;Date&lt;/span&gt;:   Tue Mar 22 09:08:52 2016 -0700&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-20&quot; title=&quot;20&quot;&gt; &lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-21&quot; title=&quot;21&quot;&gt; &lt;span class=&quot;ex&quot;&gt;Revert&lt;/span&gt; &lt;span class=&quot;st&quot;&gt;&amp;quot;Add link to anon&amp;#39;s user page; remove &amp;quot;&lt;/span&gt;Not logged in&lt;span class=&quot;st&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-22&quot; title=&quot;22&quot;&gt; &lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-23&quot; title=&quot;23&quot;&gt; &lt;span class=&quot;ex&quot;&gt;This&lt;/span&gt; reverts change I049d0671a7050.&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-24&quot; title=&quot;24&quot;&gt; &lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-25&quot; title=&quot;25&quot;&gt; &lt;span class=&quot;ex&quot;&gt;This&lt;/span&gt; change was reverted in the wmf/1.27.0-wmf.17. Since there is no&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-26&quot; title=&quot;26&quot;&gt; &lt;span class=&quot;fu&quot;&gt;clear&lt;/span&gt; consensus, revert in master before branching wmf/1.27.0-wmf.18.&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-27&quot; title=&quot;27&quot;&gt; &lt;span class=&quot;ex&quot;&gt;Bug&lt;/span&gt;: T121793&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-28&quot; title=&quot;28&quot;&gt; &lt;span class=&quot;ex&quot;&gt;Change-Id&lt;/span&gt;: I2dc0f2562c908d4e419d34e80a64065843778f3d&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-29&quot; title=&quot;29&quot;&gt; &lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-30&quot; title=&quot;30&quot;&gt; &lt;span class=&quot;ex&quot;&gt;Notes&lt;/span&gt; (review)&lt;span class=&quot;bu&quot;&gt;:&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-31&quot; title=&quot;31&quot;&gt;     &lt;span class=&quot;ex&quot;&gt;Verified+2&lt;/span&gt;: jenkins-bot&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-32&quot; title=&quot;32&quot;&gt;     &lt;span class=&quot;ex&quot;&gt;Code-Review+2&lt;/span&gt;: Legoktm &lt;span class=&quot;op&quot;&gt;&amp;lt;&lt;/span&gt;legoktm.wikipedia@gmail.com&lt;span class=&quot;op&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-33&quot; title=&quot;33&quot;&gt;     &lt;span class=&quot;ex&quot;&gt;Submitted-by&lt;/span&gt;: jenkins-bot&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-34&quot; title=&quot;34&quot;&gt;     &lt;span class=&quot;ex&quot;&gt;Submitted-at&lt;/span&gt;: Tue, 22 Mar 2016 18:08:27 +0000&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-35&quot; title=&quot;35&quot;&gt;     &lt;span class=&quot;ex&quot;&gt;Reviewed-on&lt;/span&gt;: https://gerrit.wikimedia.org/r/278923&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-36&quot; title=&quot;36&quot;&gt;     &lt;span class=&quot;ex&quot;&gt;Project&lt;/span&gt;: mediawiki/core&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb1-37&quot; title=&quot;37&quot;&gt;     &lt;span class=&quot;ex&quot;&gt;Branch&lt;/span&gt;: refs/heads/master&lt;/a&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This is super cool. You can have, effectively, an offline backup of lots of information you’d usually have to brave the gerrit web-ui to find. Plus, you don’t &lt;em&gt;have to&lt;/em&gt; have this information in your local repo taking up space, it’s only there if you fetch it down.&lt;/p&gt;
&lt;p&gt;There is another project from Google that uses git-notes for review called &lt;a href=&quot;https://github.com/google/git-appraise&quot;&gt;git-appraise&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is the stated use of git-notes in the docs: store extra information about a commit, without changing the SHA1 of the commit by modifying its contents.&lt;/p&gt;
&lt;p&gt;It is, however, noteworthy that you can store a note that points to any object in your repository and not just commit objects.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;exif-data-without-pictures&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;EXIF data without pictures &lt;a href=&quot;https://tylercipriani.com/tags/git-abuse/#exif-data-without-pictures&quot;&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;After some minor testing it seems that I can store all the EXIF info I need about my images in git-notes without &lt;em&gt;actually&lt;/em&gt; having those images on disk; i.e., I can have git-annex drop the actual files and just have broken symlinks that point to where the files live in annex.&lt;/p&gt;
&lt;p&gt;I wrote a &lt;a href=&quot;https://gist.github.com/thcipriani/e56cdef56a98eb0cf7e93dadf94fbdd8&quot;&gt;small bash script&lt;/a&gt; to play with some of these ideas.&lt;/p&gt;
&lt;div class=&quot;sourceCode&quot; id=&quot;cb2&quot;&gt;&lt;pre class=&quot;sourceCode bash&quot;&gt;&lt;code class=&quot;sourceCode bash&quot;&gt;&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-1&quot; title=&quot;1&quot;&gt;&lt;span class=&quot;ex&quot;&gt;tyler@taskmaster&lt;/span&gt;:Pictures$ git photo show fish.jpg&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-2&quot; title=&quot;2&quot;&gt;&lt;span class=&quot;ex&quot;&gt;+&lt;/span&gt; git notes --ref=pictures show d4a9c57715ce63a228577900d1abc027&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-3&quot; title=&quot;3&quot;&gt;&lt;span class=&quot;ex&quot;&gt;error&lt;/span&gt;: No note found for object d4a9c57715ce63a228577900d1abc0273396e8ef.&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-4&quot; title=&quot;4&quot;&gt;&lt;span class=&quot;ex&quot;&gt;tyler@taskmaster&lt;/span&gt;:Pictures$ git photo add fish.jpg&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-5&quot; title=&quot;5&quot;&gt;&lt;span class=&quot;ex&quot;&gt;+&lt;/span&gt; git notes --ref=pictures add -m &lt;span class=&quot;st&quot;&gt;&amp;#39;FileName: fish.jpg&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-6&quot; title=&quot;6&quot;&gt;&lt;span class=&quot;st&quot;&gt;FileTypeExtension: jpg&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-7&quot; title=&quot;7&quot;&gt;&lt;span class=&quot;st&quot;&gt;Make: NIKON CORPORATION&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-8&quot; title=&quot;8&quot;&gt;&lt;span class=&quot;st&quot;&gt;Model: NIKON D610&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-9&quot; title=&quot;9&quot;&gt;&lt;span class=&quot;st&quot;&gt;LensID: AF-S Zoom-Nikkor 24-70mm f/2.8G ED&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-10&quot; title=&quot;10&quot;&gt;&lt;span class=&quot;st&quot;&gt;FocalLength: 62.0 mm&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-11&quot; title=&quot;11&quot;&gt;&lt;span class=&quot;st&quot;&gt;FNumber: 2.8&lt;/span&gt;&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-12&quot; title=&quot;12&quot;&gt;&lt;span class=&quot;st&quot;&gt;ISO: 3200&amp;#39;&lt;/span&gt; d4a9c57715ce63a228577900d1abc027&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-13&quot; title=&quot;13&quot;&gt;&lt;span class=&quot;ex&quot;&gt;+&lt;/span&gt; set +x&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-14&quot; title=&quot;14&quot;&gt;&lt;span class=&quot;ex&quot;&gt;tyler@taskmaster&lt;/span&gt;:Pictures$ git photo show fish.jpg&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-15&quot; title=&quot;15&quot;&gt;&lt;span class=&quot;ex&quot;&gt;+&lt;/span&gt; git notes --ref=pictures show d4a9c57715ce63a228577900d1abc027&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-16&quot; title=&quot;16&quot;&gt;&lt;span class=&quot;ex&quot;&gt;FileName&lt;/span&gt;: fish.jpg&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-17&quot; title=&quot;17&quot;&gt;&lt;span class=&quot;ex&quot;&gt;FileTypeExtension&lt;/span&gt;: jpg&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-18&quot; title=&quot;18&quot;&gt;&lt;span class=&quot;ex&quot;&gt;Make&lt;/span&gt;: NIKON CORPORATION&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-19&quot; title=&quot;19&quot;&gt;&lt;span class=&quot;ex&quot;&gt;Model&lt;/span&gt;: NIKON D610&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-20&quot; title=&quot;20&quot;&gt;&lt;span class=&quot;ex&quot;&gt;LensID&lt;/span&gt;: AF-S Zoom-Nikkor 24-70mm f/2.8G ED&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-21&quot; title=&quot;21&quot;&gt;&lt;span class=&quot;ex&quot;&gt;FocalLength&lt;/span&gt;: 62.0 mm&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-22&quot; title=&quot;22&quot;&gt;&lt;span class=&quot;ex&quot;&gt;FNumber&lt;/span&gt;: 2.8&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-23&quot; title=&quot;23&quot;&gt;&lt;span class=&quot;ex&quot;&gt;ISO&lt;/span&gt;: 3200&lt;/a&gt;
&lt;a class=&quot;sourceLine&quot; id=&quot;cb2-24&quot; title=&quot;24&quot;&gt;&lt;span class=&quot;ex&quot;&gt;+&lt;/span&gt; set +x&lt;/a&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now it seems like it &lt;em&gt;should be&lt;/em&gt; possible to &lt;code&gt;git push origin refs/notes/pictures&lt;/code&gt;, fetch them on the other side, and modify hiraeth to read EXIF from notes when the symlink target doesn’t exist.&lt;/p&gt;
&lt;p&gt;We’ll see how any of that goes in practice :&lt;br /&gt;
&lt;/p&gt;
&lt;/section&gt;
</description>


	<comments>//tylercipriani.com/blog/2016/08/26/abusing-git-notes/#comments</comments>

</item>

</channel>
</rss>
