<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sexy Sexy Penguins &#187; git</title>
	<atom:link href="http://sexysexypenguins.com/tag/git/feed/" rel="self" type="application/rss+xml" />
	<link>http://sexysexypenguins.com</link>
	<description>I love the smell of &#34;Free Software&#34; in the morning</description>
	<lastBuildDate>Thu, 26 Aug 2010 16:36:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>SLLUG Daytime: Git this Wednesday!</title>
		<link>http://sexysexypenguins.com/2010/01/11/sllug-daytime-git-this-wednesday/</link>
		<comments>http://sexysexypenguins.com/2010/01/11/sllug-daytime-git-this-wednesday/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 21:35:50 +0000</pubDate>
		<dc:creator>herlo</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Guru]]></category>
		<category><![CDATA[LUGs]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[daytime]]></category>
		<category><![CDATA[sllug]]></category>

		<guid isPermaLink="false">http://sexysexypenguins.com/?p=642</guid>
		<description><![CDATA[Just so you are aware, we are holding the SLLUG Daytime Meeting this month. As usual, come from 11:30am-1pm at BetaLoftSLC (357 W 200 S #201)  - http://betaloftslc.com This month, I thought I would share a basic git introduction.  In my opinion, the best Source Control Management (SCM) system out right now.  I&#8217;ve been using [...]]]></description>
			<content:encoded><![CDATA[<p>Just so you are aware, we are holding the SLLUG Daytime Meeting this month.</p>
<p>As usual, come from 11:30am-1pm at BetaLoftSLC (357 W 200 S #201)  -<a href="http://betaloftslc.com/" target="_blank"> http://betaloftslc.com</a></p>
<p>This month, I thought I would share a basic git introduction.  In my opinion, the best Source Control Management (SCM) system out right now.  I&#8217;ve been using it for nigh on a year and I have converted a few systems over to it from svn.  This is more of a work session than a presentation, so come on down and learn how to use git.  It is recommended that you bring your laptops with you as that will benefit more if you do.</p>
<h3>Some suggested topics I can cover:</h3>
<ul>
<li>Local and remote git repositories (different workflows and other fun stuff)</li>
<li>Using git-svn to &#8216;convert&#8217; from svn</li>
<li>Comparing Distributed Revision Control with Traditional (non-distributed) Revision Control</li>
<li>Git hooks, why they are valuable and when to use them</li>
<li>Other basic git discussions</li>
</ul>
<p>See you all there.</p>
<p>Cheers,</p>
<p>Herlo</p>
]]></content:encoded>
			<wfw:commentRss>http://sexysexypenguins.com/2010/01/11/sllug-daytime-git-this-wednesday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git Hooks: Making the awesomest RCS ever even better!</title>
		<link>http://sexysexypenguins.com/2009/09/30/git-hooks-making-the-awesomest-rcs-evar-even-bettar/</link>
		<comments>http://sexysexypenguins.com/2009/09/30/git-hooks-making-the-awesomest-rcs-evar-even-bettar/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 01:35:39 +0000</pubDate>
		<dc:creator>herlo</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Guru]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[hooks]]></category>

		<guid isPermaLink="false">http://sexysexypenguins.com/?p=618</guid>
		<description><![CDATA[Over the past month or so, I&#8217;ve been really digging into git.  It&#8217;s quite the revision control system (RCS) and has some seriously awesome tools to do just about anything with your data.  My latest project has been around my semi-new job at Backcountry.com as a Senior Linux Administrator.  Essentially, my entire job right now [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past month or so, I&#8217;ve been really digging into git.  It&#8217;s quite the revision control system (RCS) and has some seriously awesome tools to do just about anything with your data.  My latest project has been around my semi-new job at <a href="http://Backcountry.com">Backcountry.com</a> as a Senior Linux Administrator.  Essentially, my entire job right now is to automate and make our infrastructure idempotent.  I am tasked with setting up cobbler, puppet, koji and other tools that will make our infrastructure more agile and scalable.</p>
<p>To do this, I&#8217;ve been using a centralized git repository using gitosis and gitweb.  Because it&#8217;s behind the Backcountry firewalls, there is no easy way to share our repository data.  However, there are some great git repos at <a href="http://github.com">github</a>, which I highly recommend.</p>
<p>Anyway, we do the hub-and-spoke model with our git repositories.  Meaning that we have a central repository where much of the data is stored so everyone can get access.  Of course, though, most people clone these repositories and work on the code where they choose.  Because we have several people pushing puppet data to our repository, which has been on subversion until 2 weeks ago, I am keen on making sure the puppet code we push to the central repo is at least syntactically valid.</p>
<h3>Git Hooks: The skinny</h3>
<p>Essentially, the key here is to understand is that git, like many other popular revision control systems is distributed.  This means that many people keep repos locally and push to the central repository after many many commits (or just one or two).  Git keeps the history in a clean way and all of the commits are pushed and tracked.  Essentially, we need some way to validate the data coming in from an outside source.  Enter <a href="http://www.kernel.org/pub/software/scm/git/docs/githooks.html">git hooks</a>.</p>
<p>There are several git hooks, but three that are quite critical to this scenario; <em>pre-commit</em>, <em>pre-receive</em> and <em>post-receive</em>.</p>
<p>The first, pre-commit is specific to the repository where the commit is taking place, such that a validation of the puppet syntax here is useful to help the person writing the puppet rules.</p>
<p>Next is post-receive which is generally useful for sending out emails after a successful push.  It would list the files and the diff of each in an email to those who wish to know about the commit.</p>
<p>And finally, the least documented of the bunch; the one with the least amount of examples, pre-receive.  The pre-receive hook has some really awesome power, but without knowing the git commands backward and forward, it can be very frustrating to get working.</p>
<h3>The value of the pre-receive hook</h3>
<p>Whenever a push is made to the centralized repository, you don&#8217;t just want to let any willy nilly commit crawl in there.  You can&#8217;t trust that the author of the commits did his part to validate the code.  So you need to at least do some basic checks.  That is what the pre-receive hook does.  In the following example, I am parsing files that end in &#8216;.pp&#8217; with puppet syntax validation as you would do from the command line.</p>
<pre>
<pre>#!/bin/bash

while read old_sha1 new_sha1 refname anothervalue ; do
    list=$(git show --pretty="format:" --name-only $new_sha1 | grep -e ".pp$")
    for tmpfile in ${list}; do
        git show ${new_sha1}:${tmpfile} | puppet --color=false --confdir=/tmp --vardir=/tmp --parseonly --ignoreimport
        if [ "$?" -ne "0" ]; then exit 1; fi
    done
done

exit $?</pre>
</pre>
<p>The above script, placed in a bare repository at hooks/pre-receive with the execute (+x) bit turned on, will get a list of files that end in &#8216;.pp&#8217; and run the puppet validator for the newest commit in the push.  Essentially, I can validate someone else&#8217;s puppet code in just a few seconds and return a failure if it doesn&#8217;t succeed.  With git hooks, a failure means no commit/push/etc will actually happen.</p>
<p>I sure hope this helps someone else to understand pre-receive hooks as well as git hooks in general.  If you have any helpful suggestions or comments, those are most welcome as well.</p>
<p>Cheers,</p>
<p>Herlo</p>
]]></content:encoded>
			<wfw:commentRss>http://sexysexypenguins.com/2009/09/30/git-hooks-making-the-awesomest-rcs-evar-even-bettar/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Succumbing to the pressure</title>
		<link>http://sexysexypenguins.com/2008/04/12/succumbing-to-the-pressure/</link>
		<comments>http://sexysexypenguins.com/2008/04/12/succumbing-to-the-pressure/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 01:31:01 +0000</pubDate>
		<dc:creator>herlo</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Guru]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[banana]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[make]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://fedora-tutorials.com/?p=234</guid>
		<description><![CDATA[My T60p. [clints@herlo-lap ~]$ history&#124;awk &#8216;{a[$2]++ } END{for(i in a){print a[i] &#8221; &#8221; i}}&#8217;&#124;sort -rn&#124;head 144 svn 144 cd 108 ls 104 ./manage.py 101 ssh 69 su 43 screen 26 vim 25 rm 15 ping [clints@thor ~]$ history&#124;awk &#8216;{a[$2]++ } END{for(i in a){print a[i] &#8221; &#8221; i}}&#8217;&#124;sort -rn&#124;head 266 git 260 make 71 cd 57 [...]]]></description>
			<content:encoded><![CDATA[<p>My T60p.</p>
<p>[clints@herlo-lap ~]$ history|awk &#8216;{a[$2]++ } END{for(i in a){print a[i] &#8221; &#8221; i}}&#8217;|sort -rn|head<br />
144 svn<br />
144 cd<br />
108 ls<br />
104 ./manage.py<br />
101 ssh<br />
69 su<br />
43 screen<br />
26 vim<br />
25 rm<br />
15 ping</p>
<p>[clints@thor ~]$ history|awk &#8216;{a[$2]++ } END{for(i in a){print a[i] &#8221; &#8221; i}}&#8217;|sort -rn|head<br />
266 git<br />
260 make<br />
71 cd<br />
57 ls<br />
55 vim<br />
55 rt<br />
26 rm<br />
19 bin/send-patch<br />
18 grep<br />
16 bin/validate</p>
<p>I guess I love RCS&#8217;.</p>
<p>Cheers,</p>
<p>Herlo</p>
]]></content:encoded>
			<wfw:commentRss>http://sexysexypenguins.com/2008/04/12/succumbing-to-the-pressure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCaLE 6x: I&#8217;m Here &#8211; Saturday in Review</title>
		<link>http://sexysexypenguins.com/2008/02/10/scale-6x-im-here-saturday-in-review/</link>
		<comments>http://sexysexypenguins.com/2008/02/10/scale-6x-im-here-saturday-in-review/#comments</comments>
		<pubDate>Sun, 10 Feb 2008 09:45:35 +0000</pubDate>
		<dc:creator>herlo</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[scale]]></category>

		<guid isPermaLink="false">http://fedora-tutorials.com/2008/02/10/scale-6x-im-here-saturday-in-review/</guid>
		<description><![CDATA[Just left Jono Bacon&#8217;s presentation on &#8220;The future of the Linux Desktop&#8221;. He&#8217;s quite an awesome presenter. Afterward, I went down to the exhibit floor and got to say hi to Tom Callaway and actually met Thomas Chung from the Fedora Project. Both of these guys have such exuberance and joy, I love being part [...]]]></description>
			<content:encoded><![CDATA[<p>Just left Jono Bacon&#8217;s presentation on &#8220;The future of the Linux Desktop&#8221;.  He&#8217;s quite an awesome presenter.  Afterward, I went down to the exhibit floor and got to say hi to Tom Callaway and actually met Thomas Chung from the Fedora Project.  Both of these guys have such exuberance and joy, I love being part of the fedora project.</p>
<p>The next presentation was &#8216;ifdown -a Now! Becoming productive offline&#8217;, by Don Marti.  It was awesome!  He spent a bit of time talking about git, ikiwiki, blosxom, OfflineIMAP, Mairix and some ssh config rules to help productivity.  There is some definite things that will help me become more productive with these tools.</p>
<p>The next presentation I attended was the video codecs presentation, but what was being discussed was stuff I&#8217;d already learned.  So I headed over to &#8217;10 Years of GNOME&#8217;, with Ken VanDine (also the creator of Foresight Linux).  GNOME features are definitely getting cooler, and discussions about Gimmie and the OpenSuse SLAB menu were held.  Ken wants to see more involvement in the GNOME project, called GNOME Love.  If you love GNOME, they&#8217;re making it easy to share the GNOME Love.</p>
<p>I was able to catch the last half of the Second Life presentation as its always been a curiosity to me.  I&#8217;m thinking of actually running it and seeing what its all about.  Thanks Liana!</p>
<p>At the end of the day, I skipped the reception in favor of a spirited talk with the folks from BakBone, then spent time talking with the organizers of SCaLE and was able to chat with the developer for the conference management system here.  Looks like they&#8217;re open sourcing there django app too, so we might be able to work with them too.</p>
<p>Tom Callaway was in the Fedora BoF, so I was required to go by that at 8pm and annoy him.  Turned out, I spent the next 3+ hours discussing everything from PulseAudio, RPMS, RHCE and PackageKit to Obama, Iraq and Ron Paul and the value system of patents in our nation.  It was a great evening.</p>
<p>Its time to sleep and another day of SCaLE will be upon us.  See you all then&#8230;</p>
<p>Cheers,</p>
<p>Herlo</p>
]]></content:encoded>
			<wfw:commentRss>http://sexysexypenguins.com/2008/02/10/scale-6x-im-here-saturday-in-review/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
