<?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>Excursus &#187; git</title>
	<atom:link href="http://markelikalderon.com/category/version-control/git/feed/" rel="self" type="application/rss+xml" />
	<link>http://markelikalderon.com</link>
	<description>Philosophy and Text</description>
	<lastBuildDate>Tue, 27 Dec 2011 23:01:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Colored Word Differences in Git</title>
		<link>http://markelikalderon.com/2010/09/04/colored-word-differences-in-git/</link>
		<comments>http://markelikalderon.com/2010/09/04/colored-word-differences-in-git/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 13:22:58 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=672</guid>
		<description><![CDATA[Being able to view diffs is an essential part of the workflow in keeping your LaTeX documents under version control. (You are using a version control system, right?) One limitation of diff software is that they tend to display line differences. Since paragraphs in LaTeX tend to be long lines, multiple differences within a paragraph [...]]]></description>
			<content:encoded><![CDATA[<p>Being able to view diffs is an essential part of the workflow in keeping your LaTeX documents under version control. (You are using a version control system, right?) One limitation of diff software is that they tend to display <em>line differences</em>. Since paragraphs in LaTeX tend to be long lines, multiple differences within a paragraph are not marked. If you are using <a href="http://git-scm.com/" title="Git - Fast Version Control System">Git</a> for version control, here is a quick tip. <code>git diff</code> comes with the option <code>--color-words</code>. This option highlights <em>word differences</em>. <code>git diff</code> defaults to the <code>less</code> pager. While <code>git diff --color-words</code> highlights word differences, <code>less</code> does not, by default, wrap long lines. However, you can invoke the <code>-S</code> option within <code>less</code> to wrap long lines. So, for a quick LaTeX-friendly diff within <code>git</code> try:</p>

<pre class="textmate-source"><span class="source source_shell">$ git diff --color-words</span></pre>

<p>followed by <code>-S</code> in the subsequent <code>less</code> pager.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2010/09/04/colored-word-differences-in-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git Users Survey 2009</title>
		<link>http://markelikalderon.com/2009/07/17/git-users-survey-2009/</link>
		<comments>http://markelikalderon.com/2009/07/17/git-users-survey-2009/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 20:11:46 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=660</guid>
		<description><![CDATA[The Git Users Survey 2009 is out. If you are a Git user, take the time to fill it out.]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.survs.com/survey?id=2PIMZGU0&amp;channel=Q0EKJ3NF54">Git Users Survey 2009</a> is out. If you are a Git user, take the time to fill it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2009/07/17/git-users-survey-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flashbake or Git Gateway Technology?</title>
		<link>http://markelikalderon.com/2009/05/14/flashbake-or-git-gateway-technology/</link>
		<comments>http://markelikalderon.com/2009/05/14/flashbake-or-git-gateway-technology/#comments</comments>
		<pubDate>Thu, 14 May 2009 01:55:37 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[Text]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=656</guid>
		<description><![CDATA[Flashbake aims to bring version control to writers&#8212;or at least writers who have harnessed the power of plain text. Flahsbake is a simplified front end to Git that runs in the background automatically committing changes and recording various ambient information as you write (such as what you were listening to when the commit was made). [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com/commandline/flashbake/tree/master">Flashbake</a> aims to bring version control to writers&#8212;or at least writers who have harnessed <a href="http://markelikalderon.com/blog/blog/2006/10/25/plain-text/">the power of plain text</a>. Flahsbake is a simplified front end to <a href="http://git-scm.com/" title="Git - Fast Version Control System">Git</a> that runs in the background automatically committing changes and recording various ambient information as you write (such as what you were listening to when the commit was made).</p>

<p>Written by <a href="http://github.com/commandline">commandline</a> (aka Thomas Gideon) at the request (behest?) of <a href="http://craphound.com/">Cory Doctorow</a>, Flahsbake was meant to address the problem of retaining an archival record of the production of digital texts. <a href="http://craphound.com/?p=2171">Cory Doctorow</a> explains:</p>

<blockquote>
  <p>I was prompted to do this after discussions with several digital archivists who complained that, prior to the computerized era, writers produced a series complete drafts on the way to publications, complete with erasures, annotations, and so on. These are archival gold, since they illuminate the creative process in a way that often reveals the hidden stories behind the books we care about. By contrast, many writers produce only a single (or a few) digital files that are modified right up to publication time, without any real systematic records of the interim states between the first bit of composition and the final draft.</p>
</blockquote>

<p>The problem is genuine, I have written about it <a href="http://markelikalderon.com/blog/2008/03/29/archival-formats-the-third-way/">before</a>. Moreover, I agree that version control has a role to play in its solution. However, I have doubts about the utility of Flashbake. It&#8217;s simplicity is its virtue, but it is <em>too</em> simple. No commit messages? A record of ambient information is no real substitute. And Flahsbake&#8217;s users are supposed to be geeky enough to use a command line tool, but not geeky enough to master the following simplified workflow?:</p>

<pre class="textmate-source"><span class="source source_shell">$ git init
$ git add mynovel.txt
$ git commit -m <span class="string string_quoted string_quoted_double string_quoted_double_shell"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell">"</span>initial commit<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell">"</span></span>
write write write
$ git commit -a -m <span class="string string_quoted string_quoted_double string_quoted_double_shell"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell">"</span>new commit message<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell">"</span></span></span></pre>

<p>I am not sure I get it. Still, any version control is better than none. And maybe Flahsbake will function as a Git gateway technology. If you are interested in a less puzzled reaction to Flashbake see the Lifehacker <a href="http://lifehacker.com/5232049/flashbake-automates-version-control-for-nerdy-writers">article</a>. But if you want to be a really nerdy writer, just use Git neat.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2009/05/14/flashbake-or-git-gateway-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dirty Prompts</title>
		<link>http://markelikalderon.com/2009/01/16/dirty-prompts/</link>
		<comments>http://markelikalderon.com/2009/01/16/dirty-prompts/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 02:47:47 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[UNIX]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=616</guid>
		<description><![CDATA[Playing with your bash prompt can seem like nothing more than an idle diversion. It is an idle diversion, it is just the &#8220;nothing more&#8221; bit that I would argue with. In a previous post I discussed how the bash prompt can reflect what git branch you are on. Now that&#8217;s useful. Seriously. But what [...]]]></description>
			<content:encoded><![CDATA[<p>Playing with your bash prompt can seem like nothing more than an idle diversion. It <em>is</em> an idle diversion, it is just the &#8220;nothing more&#8221; bit that I would argue with. In a previous <a href="http://markelikalderon.com/blog/2008/06/11/bash-prompt-redux/">post</a> I discussed how the bash prompt can reflect what git branch you are on. Now that&#8217;s useful. Seriously. But what about the &#8220;dirty state&#8221; of the branch&#8212;whether or not there is any uncommitted changes. I have gotten into the habit of running <code>git status</code> before I do anything in large part to check the dirty status of the branch. Couldn&#8217;t this reflex be automated? And reflected in the bash prompt? Yes, yes it can. Inspired by this <a href="http://www.simplisticcomplexity.com/2008/03/13/show-your-git-branch-name-in-your-prompt/">post</a> and <a href="http://henrik.nyh.se/2008/12/git-dirty-prompt">this</a>, I decided to update my bash prompt once again.</p>

<script src="http://gist.github.com/47772.js"></script>

<p>Here is a screenshot illustrating the clean and then dirty state of the development branch.</p>

<a href="http://markelikalderon.com/wp-content/uploads/2009/01/dirty_prompt.jpg"><img src="http://markelikalderon.com/wp-content/uploads/2009/01/dirty_prompt.jpg" alt="Dirty prompt" title="dirty_prompt" width="505" height="343" class="size-full wp-image-620" /></a>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2009/01/16/dirty-prompts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gist-ing from TextMate</title>
		<link>http://markelikalderon.com/2008/11/26/gist-ing-from-textmate/</link>
		<comments>http://markelikalderon.com/2008/11/26/gist-ing-from-textmate/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 17:40:58 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[Text]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=584</guid>
		<description><![CDATA[Well that didn&#8217;t take long. In an earlier post, I remarked that with command line support for Gist, the git powered pastebin service, TextMate support for Gist was now within reach. There is now a gist command in the GitHub bundle. You can either post private or public gists. The gist that figured in the [...]]]></description>
			<content:encoded><![CDATA[<p>Well <a href="http://github.com/blog/233-gist-support-for-textmate">that</a> didn&#8217;t take long. In an earlier <a href="http://markelikalderon.com/blog/2008/10/11/command-line-gist/">post</a>, I remarked that with command line support for Gist, the git powered pastebin service, <a href="http://macromates.com/">TextMate</a> support for Gist was now within reach. There is now a gist command in the <a href="http://github.com/drnic/github-tmbundle/tree/master">GitHub bundle</a>. You can either post private or public gists. The gist that figured in the previous <a href="http://markelikalderon.com/blog/2008/11/23/latex-todo/">post</a> was posted from within TextMate.</p>

<p>To install the GitHub bundle do the following:</p>

<pre class="textmate-source"><span class="source source_shell">$ sudo gem install git
$ cd <span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/<span class="string string_quoted string_quoted_double string_quoted_double_shell"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell">"</span>Library/Application Support/TextMate/Bundles/<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell">"</span></span>
$ git clone git://github.com/drnic/github-tmbundle.git <span class="string string_quoted string_quoted_double string_quoted_double_shell"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell">"</span>GitHub.tmbundle<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell">"</span></span>
$ osascript -e <span class="string string_quoted string_quoted_single string_quoted_single_shell"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell">'</span>tell app "TextMate" to reload bundles<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell">'</span></span></span></pre>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/11/26/gist-ing-from-textmate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Command Line Gist</title>
		<link>http://markelikalderon.com/2008/10/11/command-line-gist/</link>
		<comments>http://markelikalderon.com/2008/10/11/command-line-gist/#comments</comments>
		<pubDate>Sat, 11 Oct 2008 15:49:19 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=552</guid>
		<description><![CDATA[As I posted earlier, gist is a Git powered pastebin service. Very handy. Handier still would be a command line interface to gist. Thanks to Github&#8217;s own Chris Wanstrath, aka defunkt, a command line interface with gist is now a reality. To install: curl http://github.com/defunkt/gist/tree/master%2Fgist.rb?raw=true &#62; gist &#38;&#38; chmod 755 gist &#38;&#38; sudo mv gist [...]]]></description>
			<content:encoded><![CDATA[<p>As I <a href="http://markelikalderon.com/blog/2008/07/22/the-gist-of-latex/">posted</a> earlier, <a href="http://gist.github.com/">gist</a> is a <a href="http://git.or.cz/" title="Git - Fast Version Control System">Git</a> powered <a href="http://en.wikipedia.org/wiki/Pastebin">pastebin</a> service. Very handy. Handier still would be a command line interface to gist. Thanks to <a href="http://github.com/" title="Secure Git hosting and collaborative development &mdash; GitHub">Github</a>&#8217;s own Chris Wanstrath, aka defunkt, a command line interface with gist is now a <a href="http://github.com/defunkt/gist/tree/master">reality</a>.</p>

<p>To install:</p>

<pre class="textmate-source"><span class="source source_shell">curl http://github.com/defunkt/gist/tree/master%2Fgist.rb?raw=true <span class="keyword keyword_operator keyword_operator_redirect keyword_operator_redirect_shell">&gt;</span> gist <span class="keyword keyword_operator keyword_operator_list keyword_operator_list_shell">&amp;&amp;</span>
chmod 755 gist <span class="keyword keyword_operator keyword_operator_list keyword_operator_list_shell">&amp;&amp;</span>
sudo mv gist /usr/local/bin/gist</span></pre>

<p>Some usage examples:</p>

<pre class="textmate-source"><span class="source source_shell">cat file.txt <span class="keyword keyword_operator keyword_operator_pipe keyword_operator_pipe_shell">|</span> gist
echo hi <span class="keyword keyword_operator keyword_operator_pipe keyword_operator_pipe_shell">|</span> gist
gist 1234 <span class="keyword keyword_operator keyword_operator_redirect keyword_operator_redirect_shell">&gt;</span> something.txt</span></pre>

<p>Using gist from within <a href="http://macromates.com/" title="TextMate — The Missing Editor for Mac OS X">TextMate</a> should now be trivial.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/10/11/command-line-gist/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Great Wall of China</title>
		<link>http://markelikalderon.com/2008/10/10/great-wall-of-china/</link>
		<comments>http://markelikalderon.com/2008/10/10/great-wall-of-china/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 01:08:30 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=549</guid>
		<description><![CDATA[China has blocked access to GitHub. See here]]></description>
			<content:encoded><![CDATA[<p>China has blocked access to GitHub. See <a href="http://groups.google.com/group/github/browse_thread/thread/1d2852ef3a49f3c1/1d07fe64eb2a7eca?show_docid=1d07fe64eb2a7eca">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/10/10/great-wall-of-china/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git Survey</title>
		<link>http://markelikalderon.com/2008/09/01/git-survey/</link>
		<comments>http://markelikalderon.com/2008/09/01/git-survey/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 08:56:48 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=524</guid>
		<description><![CDATA[The annual Git survey is out. If you are a Git user, here is a chance to give the maintainers your feedback.]]></description>
			<content:encoded><![CDATA[<p>The annual <a href="http://www.survs.com/survey?id=M3PIVU72&amp;channel=2WXE4BVTW8">Git survey</a> is out. If you are a Git user, here is a chance to give the maintainers your feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/09/01/git-survey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pushing and Tracking Remote Branches with Git</title>
		<link>http://markelikalderon.com/2008/08/26/pushing-and-tracking-remote-branches-with-git/</link>
		<comments>http://markelikalderon.com/2008/08/26/pushing-and-tracking-remote-branches-with-git/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 21:46:31 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/blog/2008/08/26/pushing-and-tracking-remote-branches-with-git/</guid>
		<description><![CDATA[I write at home and at work, so it is natural for me to use a remote repository to keep track of my work&#8212;even with Git. Distributed version control may not force this workflow on you the way subversion does, but the cool thing about Git is that it doesn&#8217;t force any particular workflow&#8212;it can [...]]]></description>
			<content:encoded><![CDATA[<p>I write at home and at work, so it is natural for me to use a remote repository to keep track of my work&#8212;even with <a href="http://git.or.cz/" title="Git - Fast Version Control System">Git</a>. Distributed version control may not force this workflow on you the way subversion does, but the cool thing about Git is that it doesn&#8217;t force any particular workflow&#8212;it can be adapted to your needs.</p>

<p>The best thing about Git is branching. However, there is a hiccup in pushing a branch to a remote repository that always makes me pause when doing it. So this post is nothing earth shattering. Just a brain dump in the hope that the procedure will become hardwired so that I don&#8217;t have to anxiously glance at a man page each time a create a remote branch.</p>

<p>Creating a branch in your local repository is easy enough:</p>

<pre class="textmate-source"><span class="source source_shell">$ git branch <span class="keyword keyword_operator keyword_operator_redirect keyword_operator_redirect_shell">&lt;</span>local branch name<span class="keyword keyword_operator keyword_operator_redirect keyword_operator_redirect_shell">&gt;</span></span></pre>

<p>And pushing the branch to the remote repository is easy as well:</p>

<pre class="textmate-source"><span class="text text_plain"><span class="meta meta_paragraph meta_paragraph_text">$ git push origin &lt;local branch name&gt;</span></span></pre>

<p>So what&#8217;s the problem? The problem is that your local branch isn&#8217;t automatically tracking the remote branch. You could edit the git config, but that is a hassle. There is an easier way, though. You can delete the local branch a create a new local branch from the remote one. Fortunately, this can be done in a line:</p>

<pre class="textmate-source"><span class="text text_plain"><span class="meta meta_paragraph meta_paragraph_text">$ git branch -f &lt;local branch name&gt; origin/&lt;remote branch name&gt;</span></span></pre>

<p>The key is the <code>-f</code> option&#8212;it forces the creation of a new branch even if one of that name already exists. And the second argument specifies the remote branch from which the local branch is created. Creating a new local branch in this way causes it to automatically track the remote branch, so that you can, for example, use <code>git pull</code> without further arguments.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/08/26/pushing-and-tracking-remote-branches-with-git/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Post Commit Hooks</title>
		<link>http://markelikalderon.com/2008/08/12/post-commit-hooks/</link>
		<comments>http://markelikalderon.com/2008/08/12/post-commit-hooks/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 13:46:43 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=494</guid>
		<description><![CDATA[Commit hooks, scripts run when you commit to your repository, can be handy and are readily adaptable to a variety of workflows. Here is a quick and dirty post commit hook that I use for my dotfiles, remind files, and my todo list. These are kept in lightweight git repositories. Moreover, I want to push [...]]]></description>
			<content:encoded><![CDATA[<p>Commit hooks, scripts run when you commit to your repository, can be handy and are readily adaptable to a variety of workflows. Here is a quick and dirty post commit hook that I use for my dotfiles, remind files, and my todo list. These are kept in lightweight git repositories. Moreover, I want to push any changes that are committed immediately. Easily done:</p>

<pre class="textmate-source"><span class="source source_shell">$ cd my_git_repository
$ echo <span class="string string_quoted string_quoted_single string_quoted_single_shell"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell">'</span>git push<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell">'</span></span> <span class="keyword keyword_operator keyword_operator_redirect keyword_operator_redirect_shell">&gt;</span> .git/hooks/post-commit
$ chmod 755 .git/hooks/post-commit</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/08/12/post-commit-hooks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keeping your LaTeX Preamble in a Git Submodule</title>
		<link>http://markelikalderon.com/2008/07/31/keeping-your-latex-preamble-in-a-git-submodule/</link>
		<comments>http://markelikalderon.com/2008/07/31/keeping-your-latex-preamble-in-a-git-submodule/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 02:58:07 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[Markup]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=481</guid>
		<description><![CDATA[One of the much vaunted conceptual advantages of structural markup is the separation of form and content. In LaTeX, the preamble determines the the form of the document, how it is to be typeset, while the main body determines the content of the document and should contain only structural markup, markup that specifies the logical [...]]]></description>
			<content:encoded><![CDATA[<p>One of the much vaunted conceptual advantages of structural markup is the separation of form and content. In <a href="http://www.latex-project.org/" title="LaTeX project: LaTeX &ndash; A document preparation system">LaTeX</a>, the preamble determines the the form of the document, how it is to be typeset, while the main body determines the content of the document and should contain only structural markup, markup that specifies the logical structure of the content.</p>

<p>As I explained in an earlier <a href="http://markelikalderon.com/blog/2008/07/22/the-gist-of-latex/">post</a>, it is useful to independently maintain any LaTeX preambles you may have in version control. Independently, that is, of your present LaTeX project. The rationale is simple. If you discover some heretofore overlooked need requiring a change to the preamble, it would be useful if this change were made available to any other LaTeX document that uses that preamble.</p>

<p>Here is how to do this with <a href="http://git.or.cz/" title="Git - Fast Version Control System">Git</a> and Git submodules. (Something similar could be achieved with <a href="http://subversion.tigris.org/" title="subversion.tigris.org">Subversion</a> and Subversion externals.)</p>

<p>First, let&#8217;s create a Git repository for our LaTeX project:</p>

<pre class="textmate-source"><span class="source source_shell"><span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span> $ mkdir myproject
<span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span> $ cd <span class="keyword keyword_operator keyword_operator_pipe keyword_operator_pipe_shell">!</span>$
<span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/myproject $ touch mytex.tex
<span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/myproject $ git init
Initialized empty Git repository <span class="keyword keyword_control keyword_control_shell">in</span> /Users/markelikalderon/myproject/.git/
<span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/myproject $ git add .
<span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/myproject $ git commit -m <span class="string string_quoted string_quoted_double string_quoted_double_shell"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell">"</span>Initial commit<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell">"</span></span></span></pre>

<p><code>mytex.tex</code> is just an empty file so far. Here is the template LaTeX file that I am currently using:</p>

<pre class="textmate-source"><span class="text text_tex text_tex_latex"><span class="comment comment_line comment_line_percentage comment_line_percentage_directive comment_line_percentage_directive_texshop comment_line_percentage_directive_texshop_tex">%!TEX TS-program = xelatex </span>
<span class="comment comment_line comment_line_percentage comment_line_percentage_directive comment_line_percentage_directive_texshop comment_line_percentage_directive_texshop_tex">%!TEX TS-options = -output-driver="xdvipdfmx -q -E"</span>
<span class="comment comment_line comment_line_percentage comment_line_percentage_directive comment_line_percentage_directive_texshop comment_line_percentage_directive_texshop_tex">%!TEX encoding = UTF-8 Unicode</span>
<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span>
</span><span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span>  my_title
</span><span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span>
</span><span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span>  Created by my_name on date.
</span><span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span>  Copyright (c) year. All rights reserved.
</span><span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span>
</span>
<span class="meta meta_preamble meta_preamble_latex"><span class="keyword keyword_control keyword_control_preamble keyword_control_preamble_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>documentclass</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">[</span><span class="variable variable_parameter variable_parameter_latex">12pt</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">]</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">article</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span> 

<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> Definitions
</span><span class="storage storage_type storage_type_function storage_type_function_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>newcommand</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>mykeywords</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{}</span></span> 
<span class="storage storage_type storage_type_function storage_type_function_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>newcommand</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>myauthor</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{}</span></span> 
<span class="storage storage_type storage_type_function storage_type_function_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>newcommand</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>mytitle</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{}</span></span>
<span class="storage storage_type storage_type_function storage_type_function_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>newcommand</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>mybib</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{}</span></span>

<span class="meta meta_include meta_include_latex"><span class="keyword keyword_control keyword_control_include keyword_control_include_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>input</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">preamble/preamble</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span>

<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span>%% BEGIN DOCUMENT
</span><span class="meta meta_function meta_function_begin-document meta_function_begin-document_latex"><span class="support support_function support_function_be support_function_be_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>begin</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="variable variable_parameter variable_parameter_function variable_parameter_function_latex">document</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span>

<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> Title Page
</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>maketitle</span>
<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> \begin{abstract} % optional
</span><span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> \end{abstract} 
</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>vskip</span><span class="meta meta_space-after-command meta_space-after-command_latex"> </span>2em <span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>hrule</span><span class="meta meta_space-after-command meta_space-after-command_latex"> </span>height 0.4pt <span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>vskip</span><span class="meta meta_space-after-command meta_space-after-command_latex"> </span>2em
<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> \epigraph{text of epigraph}{\textsc{author of epigraph}} % optional; make sure to uncomment \usepackage{epigraph}
</span>
<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> Layout Settings
</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>setlength</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>parindent</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{</span>1em<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span>

<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> Main Content
</span>


<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> Bibligography
</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>bibliographystyle</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span>plainnat<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span> 
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>bibliography</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>mybib</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span> 

<span class="meta meta_function meta_function_end-document meta_function_end-document_latex"><span class="support support_function support_function_be support_function_be_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>end</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="variable variable_parameter variable_parameter_function variable_parameter_function_latex">document</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span></span></pre>

<p>A couple of observations about this. First, I am assuming that the included preamble is called <code>preamble.tex</code> and is in a subdirectory called <code>preamble</code>. This is required since we will be keeping our preamble in a Git submodule, and submodules are always subdirectories of the superproject. Second, I have defined some commands, <code>\mytitle</code>, <code>\myauthor</code>, etc. Basically these are all the elements of the preamble that could change from one LaTeX project to another. (So, in the preamble, we have <code>\title{\mytitle}</code>.) This was done to generalize the preamble so it can remain constant from project to project. Also, with a template, it is useful to pull, in this way, all the bits you would need to fill in to the top of the document so that you don&#8217;t need to hunt through the code. Once you have added content to <code>mytex.tex</code>, you will, of course, need to  commit these changes.</p>

<p>Next we want to push to a remote repository. I will assume that your remote repository is hosted by GitHub (they provide free accounts for publically availbale repositories). So create a repository, &#8220;myproject&#8221;, on GitHub and then:</p>

<pre class="textmate-source"><span class="source source_shell"><span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/myproject $ git remote add origin git@github.com:myname/myproject.com
<span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/myproject $ git push origin master</span></pre>

<p>(where &#8220;myname&#8221; is your GitHub username).</p>

<p>Now for something mysterious, but it&#8217;s required for Git submodules to work. We are going to delete our local Git repository and clone the remote repository:</p>

<pre class="textmate-source"><span class="source source_shell"><span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/myproject $ cd ..
<span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span> $ rm -rf myproject/
<span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span> $ git clone git@github.com:myname/myproject.com</span></pre>

<p>Now we are going to create a Git submodule. Your preamble, call it <code>preamble.tex</code>, needs to be in a git repository. For the sake of illustration, we will use <a href="http://gist.github.com/835">the preamble I am hosting on GitHub</a>:</p>

<pre class="textmate-source"><span class="text text_tex text_tex_latex"><span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> Packages
</span><span class="meta meta_preamble meta_preamble_latex"><span class="keyword keyword_control keyword_control_preamble keyword_control_preamble_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>usepackage</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">geometry</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span> <span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>geometry</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span>a4paper<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span> 
<span class="meta meta_preamble meta_preamble_latex"><span class="keyword keyword_control keyword_control_preamble keyword_control_preamble_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>usepackage</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">url</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span>
<span class="meta meta_preamble meta_preamble_latex"><span class="keyword keyword_control keyword_control_preamble keyword_control_preamble_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>usepackage</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">pdfsync</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span> 
<span class="meta meta_preamble meta_preamble_latex"><span class="keyword keyword_control keyword_control_preamble keyword_control_preamble_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>usepackage</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">txfonts</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span>
<span class="meta meta_preamble meta_preamble_latex"><span class="keyword keyword_control keyword_control_preamble keyword_control_preamble_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>usepackage</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">color</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>definecolor</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span>gray<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{</span>rgb<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{</span>0.459,0.438,0.471<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span>
<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> \usepackage{setspace}
</span><span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> \doublespace % Uncomment for doublespacing if necessary
</span><span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> \usepackage{epigraph} % optional
</span> 
<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> XeTeX
</span><span class="meta meta_preamble meta_preamble_latex"><span class="keyword keyword_control keyword_control_preamble keyword_control_preamble_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>usepackage</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">[</span><span class="variable variable_parameter variable_parameter_latex">cm-default</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">]</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">fontspec</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span>
<span class="meta meta_preamble meta_preamble_latex"><span class="keyword keyword_control keyword_control_preamble keyword_control_preamble_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>usepackage</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">xltxtra,xunicode</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>defaultfontfeatures</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span>Scale=MatchLowercase,Mapping=tex-text<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>setmainfont</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span>Hoefler Text<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>setsansfont</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span>Gill Sans<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>setmonofont</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span>Inconsolata<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span>
 
<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> Section Formatting
</span><span class="meta meta_preamble meta_preamble_latex"><span class="keyword keyword_control keyword_control_preamble keyword_control_preamble_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>usepackage</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">[</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">]</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">titlesec</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>titleformat</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>section</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span><span class="punctuation punctuation_definition punctuation_definition_brackets punctuation_definition_brackets_tex">[</span>hang<span class="punctuation punctuation_definition punctuation_definition_brackets punctuation_definition_brackets_tex">]</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>fontsize</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span>14<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{</span>14<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>scshape</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>S</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>thesection</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{</span>.5em<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{}{}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>titleformat</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>subsection</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span><span class="punctuation punctuation_definition punctuation_definition_brackets punctuation_definition_brackets_tex">[</span>hang<span class="punctuation punctuation_definition punctuation_definition_brackets punctuation_definition_brackets_tex">]</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>fontsize</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span>12<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{</span>12<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>scshape</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>S</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>thesubsection</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{</span>.5em<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{}{}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>titleformat</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>subsubsection</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span><span class="punctuation punctuation_definition punctuation_definition_brackets punctuation_definition_brackets_tex">[</span>hang<span class="punctuation punctuation_definition punctuation_definition_brackets punctuation_definition_brackets_tex">]</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>fontsize</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span>12<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{</span>12<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>scshape</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>S</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>thesubsubsection</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{</span>.5em<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}{}{}</span></span>
 
<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> Headers and Footers
</span><span class="meta meta_preamble meta_preamble_latex"><span class="keyword keyword_control keyword_control_preamble keyword_control_preamble_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>usepackage</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">fancyhdr</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>pagestyle</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span>fancy<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>pagenumbering</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span>arabic<span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>lhead</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>thepage</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>chead</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{}</span></span>
<span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>rhead</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>itshape</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>nouppercase</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>leftmark</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span>
 
<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> Bibliography
</span><span class="meta meta_preamble meta_preamble_latex"><span class="keyword keyword_control keyword_control_preamble keyword_control_preamble_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>usepackage</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">[</span><span class="variable variable_parameter variable_parameter_latex">round</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">]</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">natbib</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span> 
 
<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> Title Information
</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>title</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>mytitle</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span> <span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> For thanks comment this line and uncomment the line below
</span><span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span>\title{\mytitle\thanks{}}% 
</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>author</span><span class="meta meta_group meta_group_braces meta_group_braces_tex"><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">{</span><span class="support support_function support_function_general support_function_general_tex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_tex">\</span>myauthor</span><span class="punctuation punctuation_section punctuation_section_group punctuation_section_group_tex">}</span></span> 
<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> \date{} % Leave blank for no date, comment out for most recent date
</span> 
<span class="comment comment_line comment_line_percentage comment_line_percentage_tex"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_tex">%</span> PDF Stuff
</span><span class="meta meta_preamble meta_preamble_latex"><span class="keyword keyword_control keyword_control_preamble keyword_control_preamble_latex"><span class="punctuation punctuation_definition punctuation_definition_function punctuation_definition_function_latex">\</span>usepackage</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">[</span><span class="variable variable_parameter variable_parameter_latex">plainpages=false, pdfpagelabels, bookmarksnumbered, backref, pdftitle={\mytitle}, pagebackref, pdfauthor={\myauthor}, pdfkeywords={\mykeywords}, xetex, dvipdfmx, colorlinks=true, citecolor=gray, linkcolor=gray, urlcolor=gray</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">]</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_latex">{</span><span class="support support_class support_class_latex">hyperref</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_latex">}</span></span> 
</span></pre>

<p>Here is what we need to do to create the submodule:</p>

<pre class="textmate-source"><span class="source source_shell"><span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span> $ cd myproject/
<span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/myproject $ git submodule add git://gist.github.com/835.git preamble
<span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/myproject $ git submodule init
<span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/myproject $ git submodule update</span></pre>

<p>Now, if we want to make a change to our preamble and make it available to all our LaTeX projects that use that particular preamble, you need only commit these changes to the Git repository where your preamble lives.</p>

<p>For more information about git submodules, see this <a href="http://git.or.cz/gitwiki/GitSubmoduleTutorial">tutorial</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/07/31/keeping-your-latex-preamble-in-a-git-submodule/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git Resource</title>
		<link>http://markelikalderon.com/2008/07/25/git-resource/</link>
		<comments>http://markelikalderon.com/2008/07/25/git-resource/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 00:42:29 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=467</guid>
		<description><![CDATA[Scott Chacon is maintaining this site, a useful compendium of git resources.]]></description>
			<content:encoded><![CDATA[<p>Scott Chacon is maintaining <a href="http://git-scm.com/">this site</a>, a useful compendium of git resources.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/07/25/git-resource/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Gist of LaTeX</title>
		<link>http://markelikalderon.com/2008/07/22/the-gist-of-latex/</link>
		<comments>http://markelikalderon.com/2008/07/22/the-gist-of-latex/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 13:46:20 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[Markup]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/blog/2008/07/22/the-gist-of-latex/</guid>
		<description><![CDATA[GitHub has just launched Gist, a Git driven pastebin service. It is very handy to have a lightweight public (or private) repository. From the GitHub blog (see also here), Bryan Liles demos Gist: BryanL demos Gist: A Super Hot Pastebin from Bryan Liles on Vimeo. In the spirit of sharing, I have posted my LaTeX [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com/" title="Secure Git hosting and collaborative development &mdash; GitHub">GitHub</a> has just launched <a href="http://www.gistworld.com/" title="">Gist</a>, a Git driven <a href="http://en.wikipedia.org/wiki/Pastebin">pastebin</a> service. It is very handy to have a lightweight public (or private) repository. From the GitHub <a href="http://github.com/blog/119-intro-to-gist-video">blog</a> (see also <a href="http://github.com/blog/118-here-s-the-gist-of-it">here</a>), Bryan Liles demos Gist:</p>

<p><object width="400" height="300">   <param name="allowfullscreen" value="true" />   <param name="allowscriptaccess" value="always" />   <param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1381658&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" />   <embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1381658&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><br /><a href="http://www.vimeo.com/1381658?pg=embed&#038;sec=1381658">BryanL demos Gist: A Super Hot Pastebin</a> from <a href="http://www.vimeo.com/user472736?pg=embed&#038;sec=1381658">Bryan Liles</a> on <a href="http://vimeo.com?pg=embed&#038;sec=1381658">Vimeo</a>.</p>

<p>In the spirit of <a href="http://markelikalderon.com/blog/2008/06/17/gitting-bibtex/">sharing</a>, I have posted my <a href="http://gist.github.com/835">LaTeX preamble and associated files</a>. Feel free to download or clone these files, or better yet, post your own!</p>

<p>It is useful to independently maintain any LaTeX preambles you may use. Suppose, for example, you discover some need and make a corresponding change to your preamble. You might want that change available to some of your other LaTeX documents. Next time I will explain how to do this with include statements and git submodules.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/07/22/the-gist-of-latex/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cornerstone</title>
		<link>http://markelikalderon.com/2008/07/01/cornerstone/</link>
		<comments>http://markelikalderon.com/2008/07/01/cornerstone/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 00:49:05 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[Hybrid Application]]></category>
		<category><![CDATA[Mercurial]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/blog/2008/07/01/cornerstone/</guid>
		<description><![CDATA[Previewing at 1.0, Cornerstone, a GUI Subversion front end has been released. Daring Fireball, as ever, with the wry commentary: It strikes me as an odd coincidence that two serious Subversion clients would debut at a time when many developers are starting to switch away from Subversion to distributed revision control systems such as Git [...]]]></description>
			<content:encoded><![CDATA[<p>Previewing at 1.0, <a href="http://www.zennaware.com/cornerstone/">Cornerstone</a>, a GUI <a href="http://subversion.tigris.org/" title="subversion.tigris.org">Subversion</a> front end has been released.</p>

<p><a href="http://daringfireball.net/" title="Daring Fireball">Daring Fireball</a>, as ever, with the wry commentary:</p>

<blockquote>
  <p>It strikes me as an odd coincidence that two serious Subversion clients would debut at a time when many developers are starting to switch away from Subversion to distributed revision control systems such as <a href="http://git.or.cz/" title="Git - Fast Version Control System">Git</a> and <a href="http://www.selenic.com/mercurial/" title="Mercurial - Mercurial">Mercurial</a>.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/07/01/cornerstone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Viva La Revolución</title>
		<link>http://markelikalderon.com/2008/06/29/viva-la-revolucion/</link>
		<comments>http://markelikalderon.com/2008/06/29/viva-la-revolucion/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 21:24:44 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[Academic Publishing]]></category>
		<category><![CDATA[BibTeX]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/blog/2008/06/29/viva-la-revolucion/</guid>
		<description><![CDATA[Kieran Healey has followed my lead and posted his sociology BibTeX files on GitHub. I could only be happier if someone forked me. C&#8217;mon, baby, fork me, fork me! Update Kieran posts about it here.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kieranhealy.org/blog/">Kieran Healey</a> has followed <a href="http://markelikalderon.com/blog/2008/06/17/gitting-bibtex/">my lead</a> and <a href="http://github.com/kjhealy/socbibs/tree/master">posted</a> his sociology <a href="http://www.bibtex.org/" title="BibTeX">BibTeX</a> files on <a href="http://github.com/" title="Secure Git hosting and collaborative development &mdash; GitHub">GitHub</a>. I could only be happier if someone forked me. C&#8217;mon, baby, fork me, fork me!</p>

<p><strong>Update</strong> Kieran posts about it <a href="http://orgtheory.wordpress.com/2008/06/29/git-bibs/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/06/29/viva-la-revolucion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gitting BibTeX</title>
		<link>http://markelikalderon.com/2008/06/17/gitting-bibtex/</link>
		<comments>http://markelikalderon.com/2008/06/17/gitting-bibtex/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 21:15:32 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[BibTeX]]></category>
		<category><![CDATA[Bibliography]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/blog/2008/06/17/gitting-bibtex/</guid>
		<description><![CDATA[Academics tend to be pretty good at sharing resources. For example, most publish their research online. This is really helpful since it can take a year or two after submission to finally see its way into print. One useful thing that academics share, though less often than their research, is their bibliographies. LaTeX is predominant [...]]]></description>
			<content:encoded><![CDATA[<p>Academics tend to be pretty good at sharing resources. For example, most publish their research online. This is really helpful since it can take a year or two after submission to finally see its way into print.</p>

<p>One useful thing that academics share, though less often than their research, is their bibliographies. <a href="http://www.latex-project.org/" title="LaTeX project: LaTeX &ndash; A document preparation system">LaTeX</a> is predominant in academia, though not universally so. So many of these online bibliographies are <a href="http://www.bibtex.org/" title="BibTeX">BibTeX</a> files. See <a href="http://individual.utoronto.ca/benj/">Benj Hellie</a>&#8217;s <a href="http://individual.utoronto.ca/benj/mind.bib">BibTeX file</a> as an example.</p>

<p>Sometimes, these have been converted to HTML. Sometimes, as in Benj&#8217;s case, the author simply posts the text file (BibTeX is a flat file database kept in plain text). This has some limitations. One problem is that the author has to periodically export to HTML, and even if he is posting the text file, it still needs to be uploaded to the server. Unlikely that this is done after each change to the bibliography.</p>

<p>From the users side, there are problems too. Suppose I have downloaded Benj&#8217;s BibTeX file. Some time passes, and I want to take advantage of Benj&#8217;s hard work. Some of the entries I already have, some are new. Some of the new entries may overlap with entries that I have made independently. Manually merging this material can be a pain, even with <a href="http://markelikalderon.com/blog/2007/02/15/diff-programs-diffed/">diff</a> tools.</p>

<p>All of this would be a lot easier if academics used distributed version control to share their bibliographies. Suppose the distributed version control system in question is <a href="http://git.or.cz/" title="Git - Fast Version Control System">Git</a>. When an author makes a change to his bibliography, then all he need do is to commit the change and push to the remote repository:</p>

<pre class="textmate-source"><span class="source source_shell">$ git commit mybibtexfile.bib
$ git push</span></pre>

<p>From the users side, to download the bibliography all he need do is clone the git repository:</p>

<pre class="textmate-source"><span class="source source_shell">$ git clone git@github.com:PhilGeek/bib.git</span></pre>

<p>After that, fetching and merging new changes is easy as:</p>

<pre class="textmate-source"><span class="source source_shell">$ git pull</span></pre>

<p>Well, I am putting my money where my mouth is and publishing my BibTeX file in an open Git repository hosted at <a href="http://github.com/" title="Secure Git hosting and collaborative development &mdash; GitHub">GitHub</a>&#8212;<a href="http://github.com/PhilGeek/bib/tree/master">http://github.com/PhilGeek/bib/tree/master</a>. To clone this repository:</p>

<pre class="textmate-source"><span class="source source_shell">$ git clone git@github.com:PhilGeek/bib.git</span></pre>

<p>Even if you are not a Git user and are shy about adopting new technology, the file can be viewed and downloaded <a href="http://github.com/PhilGeek/bib/tree/master/Philosophy.bib">here</a>.</p>

<p>There is not as much in it as there should be. Before becoming a plain text Geek, I kept my bibliography in <a href="http://www.endnote.com/" title="EndNote - Bibliographies Made Easy">EndNote</a>. Unfortunately, my EndNote file, a proprietary binary format, became corrupted before I could convert it to BibTeX. Yet another cautionary tale speaking in favor of the <a href="http://markelikalderon.com/blog/2006/10/25/plain-text/">Power of Plain Text</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/06/17/gitting-bibtex/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Bash Prompt Redux</title>
		<link>http://markelikalderon.com/2008/06/11/bash-prompt-redux/</link>
		<comments>http://markelikalderon.com/2008/06/11/bash-prompt-redux/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 19:09:14 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[UNIX]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/blog/2008/06/11/bash-prompt-redux/</guid>
		<description><![CDATA[OK, so you know a meeting is boring when you would rather redo your bash prompt. (And, yes, as a consequence, I have come to appreciate the point of running a headless meeting.) I wanted my bash prompt to tell me a number of things: Who am I? Where am I? Which branch of a [...]]]></description>
			<content:encoded><![CDATA[<p>OK, so you know a meeting is boring when you would rather <a href="http://markelikalderon.com/blog/2007/11/24/full-paths-and-the-multiline-shell-prompt/">redo</a> your bash prompt. (And, yes, as a consequence, I have come to appreciate the point of running a headless meeting.) I wanted my bash prompt to tell me a number of things:</p>

<ol>
<li>Who am I?</li>
<li>Where am I?</li>
<li>Which branch of a <a href="http://git.or.cz/" title="Git - Fast Version Control System">Git</a> repository am I on?</li>
</ol>

<p>I wanted color. I wanted a multiline prompt. I wanted it all!</p>

<p>Actually it was pretty easy. Here it is, explanation to follow:</p>

<pre class="textmate-source"><span class="source source_shell">source <span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/.git-completion.sh

<span class="storage storage_modifier storage_modifier_shell">export</span> PS1=<span class="string string_quoted string_quoted_single string_quoted_single_shell"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell">'</span>\[\e[0;32m\]\w\[\e[1;33m\]$(__git_ps1 "(%s)")\[\e[0m\]\n\u $ <span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell">'</span></span></span></pre>

<p>The first line loads .git-completion.sh a script distributed with Git that provides autocompletion for Git. Cool! But it also provides the function at work in:</p>

<pre class="textmate-source"><span class="source source_shell"><span class="string string_interpolated string_interpolated_dollar string_interpolated_dollar_shell"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell">$(</span>__git_ps1 <span class="string string_quoted string_quoted_double string_quoted_double_shell"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell">"</span> (%s)<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell">"</span></span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell">)</span></span></span></pre>

<p>This will display the branch currently checked out when you are in a Git repository.</p>

<p>The characters:</p>

<pre class="textmate-source"><span class="source source_shell"><span class="constant constant_character constant_character_escape constant_character_escape_shell">\[</span> <span class="constant constant_character constant_character_escape constant_character_escape_shell">\]</span></span></pre>

<p>wrap nonprinting characters, in this case, the color codes:</p>

<pre class="textmate-source"><span class="source source_shell"><span class="constant constant_character constant_character_escape constant_character_escape_shell">\e</span>[0<span class="keyword keyword_operator keyword_operator_list keyword_operator_list_shell">;</span>32m
<span class="constant constant_character constant_character_escape constant_character_escape_shell">\e</span>[1<span class="keyword keyword_operator keyword_operator_list keyword_operator_list_shell">;</span>33m
<span class="constant constant_character constant_character_escape constant_character_escape_shell">\e</span>[1<span class="keyword keyword_operator keyword_operator_list keyword_operator_list_shell">;</span>33m</span></pre>

<p>Finally:</p>

<pre class="textmate-source"><span class="source source_shell"><span class="constant constant_character constant_character_escape constant_character_escape_shell">\w</span>
<span class="constant constant_character constant_character_escape constant_character_escape_shell">\n</span>
<span class="constant constant_character constant_character_escape constant_character_escape_shell">\u</span></span></pre>

<p>gives you the name of the current directory, a new line, and your user name, respectively.</p>

<p>Well a picture is worth a thousand words:
<img src="http://markelikalderon.com/wp-content/uploads/2008/06/bash-prompt.png" alt="Bash Prompt" /></p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/06/11/bash-prompt-redux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrating from Subversion to Git</title>
		<link>http://markelikalderon.com/2008/06/05/migrating-from-subversion-to-git/</link>
		<comments>http://markelikalderon.com/2008/06/05/migrating-from-subversion-to-git/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 00:43:48 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[Text]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=407</guid>
		<description><![CDATA[Having decided to try out Git, I was excited to learn that Git could interface with Subversion repositories via git-svn. git-svn provides a bidirectional flow of changesets from a branch of a Subversion repository and any number of branches in a Git repository. The problem that I soon encountered should be evident from this description&#8212;you [...]]]></description>
			<content:encoded><![CDATA[<p>Having decided to try out <a href="http://git.or.cz/" title="Git - Fast Version Control System">Git</a>, I was excited to learn that Git could interface with <a href="http://subversion.tigris.org/" title="subversion.tigris.org">Subversion</a> repositories via <a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html">git-svn</a>. git-svn provides a bidirectional flow of changesets from a branch of a Subversion repository and any number of branches in a Git repository. The problem that I soon encountered should be evident from this description&#8212;you inherit the limitations of the Subversion repository. A rewrite of a paper for the <a href="http://www.ejp.dept.shef.ac.uk/" title="European Journal of Philosophy Web Page">European Journal of Philosophy</a> provided the opportunity to start a Git repository and work purely with Git. This was a revealing exercise that allowed me to shed some habits engrained from being a long-time Subversion user.</p>

<p>I am now in the process of transitioning my work over to Git. One salient difference is that, with Subversion, I kept all my mission-critical text files in a single structured directory; Git, however, wants to find relationships among everything in the repository, so it is important to keep unrelated projects in different repositories. (Fortunately setting up Git repositories is a snap.) This is important to bear in mind when migrating from Subversion. If, like me, you maintained a single Subversion repository with separate subdirectories for each of your projects, you need to migrate each of these into separate Git repositories.</p>

<p>Here is how I began my migration.</p>

<p>I decided to start with my <a href="http://www.roaringpenguin.com/products/remind" title="Remind | Roaring Penguin">remind</a> files:</p>

<pre class="textmate-source"><span class="source source_shell">$ mkdir -p /tmp/remind
$ cd <span class="keyword keyword_operator keyword_operator_pipe keyword_operator_pipe_shell">!</span>$
$ git-svn clone http://markelikalderon.com/svn/TheHub/Remind --no-metadata</span></pre>

<p>The command:</p>

<pre class="textmate-source"><span class="text text_plain"><span class="meta meta_paragraph meta_paragraph_text">git-svn clone</span></span></pre>

<p>calls init, which creates a new Git repository, and fetch, which fetches the contents and history of the directory. git-svn clone takes the options of both init and fetch. One useful option is &#8211;no-metadata which strips out the no longer needed Subversion metadata.</p>

<p>Now I needed to configure my new Git repository. I began by creating a file and opening it in my text editor, <a href="http://macromates.com/" title="TextMate — The Missing Editor for Mac OS X">TextMate</a>:</p>

<pre class="textmate-source"><span class="source source_shell">$ touch <span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/users.txt <span class="keyword keyword_operator keyword_operator_list keyword_operator_list_shell">&amp;&amp;</span> mate <span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/users.txt</span></pre>

<p>I then added the following to users.txt:</p>

<pre class="textmate-source"><span class="text text_plain"><span class="meta meta_paragraph meta_paragraph_text">kalderon PhilGeek &lt;eli@markelikalderon.com&gt;</span></span></pre>

<p>&#8216;kalderon&#8217; being my Subversion user name and &#8216;PhilGeek&#8217; being my Git user name. There should be one line each with this syntax for each of the users. Now I was ready to configure git:</p>

<pre class="textmate-source"><span class="source source_shell">% git config svn.authorsfile <span class="keyword keyword_operator keyword_operator_tilde keyword_operator_tilde_shell">~</span>/users.txt</span></pre>

<p>The final step is to clone this new Git repository to rid ourselves of any remaining svn cruft. I created a new <a href="http://github.com/" title="Secure Git hosting and collaborative development &mdash; GitHub">GitHub</a> project and then within the Git repository:</p>

<pre class="textmate-source"><span class="source source_shell">$ git remote add origin git@github.com:PhilGeek/remind.git
$ git push origin master</span></pre>

<p>Finally, I cloned the remote repository into the directory where my remind files were to live locally and deleted the /tmp/remind directory.</p>

<p>Not too bad. But you might consider automating the process with a shell or ruby script, if this needs doing several times over.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/06/05/migrating-from-subversion-to-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chacon Git Tech Talk</title>
		<link>http://markelikalderon.com/2008/06/02/chacon-git-tech-talk/</link>
		<comments>http://markelikalderon.com/2008/06/02/chacon-git-tech-talk/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 13:07:08 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/blog/2008/06/02/chacon-git-tech-talk/</guid>
		<description><![CDATA[Scott Chacon, author of the very nice Peepcode title Git Internals, Source Code Control and Beyond, has given a Git Tech Talk at RailsConf 2008: RailsConf 2008 Git Talk by Scot Chacon Video from daniel wanja on Vimeo. The slides of his talk are also available.]]></description>
			<content:encoded><![CDATA[<p>Scott Chacon, author of the very nice <a href="http://peepcode.com/" title="Screencast Tutorials | PeepCode Screencasts for Ruby on Rails Developers">Peepcode</a> title <em>Git Internals, Source Code Control and Beyond</em>, has given a Git Tech Talk at RailsConf 2008:</p>

<p><object width="400" height="300">   <param name="allowfullscreen" value="true" />   <param name="allowscriptaccess" value="always" />   <param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1099027&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" />   <embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1099027&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><br /><a href="http://www.vimeo.com/1099027?pg=embed&#038;sec=1099027">RailsConf 2008 Git Talk by Scot Chacon Video</a> from <a href="http://www.vimeo.com/user507500?pg=embed&#038;sec=1099027">daniel wanja</a> on <a href="http://vimeo.com?pg=embed&#038;sec=1099027">Vimeo</a>.</p>

<p>The slides of his talk are also <a href="http://www.gitcasts.com/git-talk">available</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/06/02/chacon-git-tech-talk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open in Git Gui</title>
		<link>http://markelikalderon.com/2008/05/26/open-in-git-gui/</link>
		<comments>http://markelikalderon.com/2008/05/26/open-in-git-gui/#comments</comments>
		<pubDate>Mon, 26 May 2008 21:29:21 +0000</pubDate>
		<dc:creator>Mark Eli Kalderon</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://markelikalderon.com/?p=400</guid>
		<description><![CDATA[OpenInGitGui is an AppleScript droplet that allows you to open Git-Gui from the Finder. Install it in /Applications/Scripts (create the Scripts directory if it does not already exist), and drag the icon to the toolbar of your Finder. Select a folder containing your git repository and click the Git icon. Sounds easy. It is. Though [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://markelikalderon.com/wp-content/uploads/2008/05/git-logo.jpg" alt="Git Logo" /></p>

<p><a href="http://code.google.com/p/git-osx-installer/wiki/OpenInGitGui" title="OpenInGitGui - git-osx-installer - Google Code">OpenInGitGui</a> is an AppleScript droplet that allows you to open Git-Gui from the Finder. Install it in /Applications/Scripts (create the Scripts directory if it does not already exist), and drag the icon to the toolbar of your Finder. Select a folder containing your git repository and click the Git icon.</p>

<p>Sounds easy. It is. Though I had some troubles getting it to work. The droplet assumes that git-gui is in /usr/local/git/bin (where the <a href="http://code.google.com/p/git-osx-installer/" title="git-osx-installer - Google Code">git-osx-installer</a> puts it). Installing git from source, however, places git-gui in /usr/local/bin. One could modify the AppleScript source but only the binary droplet is distributed, and a soft link results in an error. So make a hard link:</p>

<pre><code>sudo mkdir -p /usr/local/git/bin/
cd /usr/local/bin/
sudo ln git-gui /usr/local/git/bin/
</code></pre>

<p>The only remaining annoyance is that the droplet opens a scratch terminal. This could be avoided with the appropriate AppleScript call. Again, it would be nice if the source and not just the binary was provided.</p>
]]></content:encoded>
			<wfw:commentRss>http://markelikalderon.com/2008/05/26/open-in-git-gui/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

