<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>
me on twitter
  me on github
  me on linkedin
  me on delicious
  me on flickr
  me on wakoopa


  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
  document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

  try {
    var pageTracker = _gat._getTracker("UA-3052115-1");
    pageTracker._trackPageview();
    } catch(err) {}
</description><title>me on blogging</title><generator>Tumblr (3.0; @darrinholst)</generator><link>http://darrinholst.com/</link><item><title>backup backup backup</title><description>&lt;p&gt;I’ve gone through many variations of my backup strategy since I started storing things digitally. Here is my current setup…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The master copy is stored on my iMac’s local disk.&lt;/li&gt;
&lt;li&gt;Everything except music and dvds are synced with &lt;a title="dropbox" href="http://www.dropbox.com"&gt;dropbox&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Everything is one way synced to external drive 1 via &lt;a title="chronosync" href="http://www.econtechnologies.com/pages/cs/chrono_overview.html"&gt;chronosync&lt;/a&gt; nightly.&lt;/li&gt;
&lt;li&gt;External drive 1 is cloned to external drive 2 via &lt;a title="superduper" href="http://www.shirt-pocket.com/SuperDuper/SuperDuperDescription.html"&gt;superduper&lt;/a&gt; weekly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I just recently switched my offsite backup from s3/jungledisk to dropbox. Dropbox is significantly faster at uploading (at least at my house). Dropbox does this cool thing where if you try to upload a file that is already on their system it won’t actually push the bits, instead it will point to the existing copy or make a duplicate internally at dropbox (not sure what actually happens, but it doesn’t matter the point is that you don’t have to upload that file). The dropbox clients are faster at syncing between machines when compared to jungledisk’s sync feature.&lt;/p&gt;
&lt;p&gt;The one way sync (nothing is deleted) with chronosync is an important piece since if you delete something on one dropboxed client then that deletion is instantly propagated everywhere. So if you decide you don’t want something on one machine and you delete it then it gets deleted on every machine that is using dropbox. Dropbox will soon come with selective sync which I am anxiously awaiting.&lt;/p&gt;
&lt;p&gt;The superduper clone is just a last chance backup incase of disk failures.&lt;/p&gt;
&lt;p&gt;I’m sure this setup will change again, but I’m pretty happy with it for now.&lt;/p&gt;</description><link>http://darrinholst.com/post/413204323</link><guid>http://darrinholst.com/post/413204323</guid><pubDate>Fri, 26 Feb 2010 06:56:32 -0600</pubDate><category>backup</category></item><item><title>changing git commit messages</title><description>&lt;p&gt;Changing your last commit message in a git repository is fairly trivial&lt;/p&gt;
&lt;pre&gt;git commit --amend -m "some other message"&lt;/pre&gt;
&lt;p&gt;but what if you’ve made several commits and want to change a message that’s not the last one? An interactive rebase is one way to do this. First find the commit just before the message you want to change&lt;/p&gt;
&lt;pre&gt;~/Work/repo (master) $ &lt;b&gt;git lg&lt;/b&gt;
* 6119426 - (master) third commit (3 seconds ago by Darrin Holst)
* b6a0a9f - &lt;b&gt;second commit&lt;/b&gt; (23 seconds ago by Darrin Holst)
* &lt;b&gt;e24b57d&lt;/b&gt; - first commit (37 seconds ago by Darrin Holst)
&lt;/pre&gt;
&lt;p&gt;Then start the interactive rebase&lt;/p&gt;
&lt;pre&gt;~/Work/repo (master) $ &lt;b&gt;git rebase --interactive e24b57d&lt;/b&gt;&lt;/pre&gt;
&lt;p&gt;Which will open up your editor with…&lt;/p&gt;
&lt;pre&gt;pick b6a0a9f second commit
pick 6119426 third commit

# Rebase e24b57d..6119426 onto e24b57d
#
# Commands:
#  p, pick = use commit
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
&lt;/pre&gt;
&lt;p&gt;Change “pick” to “edit” for those that you want to edit and save that file&lt;/p&gt;
&lt;pre&gt;&lt;b&gt;edit&lt;/b&gt; b6a0a9f second commit
pick 6119426 third commit

# Rebase e24b57d..6119426 onto e24b57d
#
# Commands:
#  p, pick = use commit
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
&lt;/pre&gt;
&lt;p&gt;Now amend that commit&lt;/p&gt;
&lt;pre&gt;~/Work/repo (master) $ &lt;b&gt;git commit --amend -m "some other message"&lt;/b&gt;&lt;/pre&gt;
&lt;p&gt;Then continue the rebase&lt;/p&gt;
&lt;pre&gt;~/Work/repo (master) $ &lt;b&gt;git rebase --continue&lt;/b&gt;&lt;/pre&gt;
&lt;pre&gt;~/Work/repo (master) $ &lt;b&gt;git lg&lt;/b&gt;
* cec3fba - (master) third commit (2 seconds ago by Darrin Holst)
* c146f90 - some other message (29 seconds ago by Darrin Holst)
* e24b57d - first commit (5 minutes ago by Darrin Holst)
&lt;/pre&gt;
&lt;p&gt;Congratulations, you have just changed history, but remember all the same rules apply for rebasing commits that you’ve pushed to a public repository (hint - don’t do it)&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href="http://twitter.com/rubbish"&gt;@rubbish&lt;/a&gt; and &lt;a href="http://twitter.com/developernotes"&gt;@developernotes&lt;/a&gt; for the info&lt;/p&gt;</description><link>http://darrinholst.com/post/359817782</link><guid>http://darrinholst.com/post/359817782</guid><pubDate>Fri, 29 Jan 2010 10:38:51 -0600</pubDate><category>git</category></item><item><title>git add...all of it damn it</title><description>&lt;p&gt;So we all know that &lt;b&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/b&gt; will add all new and modified files to the index. What about the 50 files you deleted that you also want to stage? git rm 50 times? How about adding the -u option to git add which will stage modified files and also deleted files? The one problem with that is it doesn’t add new files. So if you want to stage all new files, modified files, and deleted files then you’re forced to &lt;b&gt;&lt;code&gt;git add . &amp;&amp; git add -u&lt;/code&gt;&lt;/b&gt;. We can wrap that up into an alias to save some keystrokes…&lt;/p&gt;
&lt;pre&gt;git config --global alias.ad '!git add . &amp;&amp; git add -u'

&lt;/pre&gt;
&lt;p&gt;Now just use &lt;b&gt;&lt;code&gt;git ad&lt;/code&gt;&lt;/b&gt; and everything will be ready to commit&lt;/p&gt;</description><link>http://darrinholst.com/post/234568461</link><guid>http://darrinholst.com/post/234568461</guid><pubDate>Thu, 05 Nov 2009 21:44:00 -0600</pubDate><category>git</category></item><item><title>TextMate not finding your gems?</title><description>&lt;p&gt;If you’ve built ruby yourself and stuck it in /usr/local/bin you may run into a problem where textmate is using the pre-installed version of ruby. That will result in searching for gems in the pre-installed location (wherever that is)&lt;/p&gt;
&lt;p&gt;To fix this add a shell variable called TM_RUBY in the advanced preferences of TM pointing to /usr/local/bin/ruby&lt;/p&gt;</description><link>http://darrinholst.com/post/195012461</link><guid>http://darrinholst.com/post/195012461</guid><pubDate>Wed, 23 Sep 2009 09:34:00 -0500</pubDate><category>ruby</category><category>textmate</category></item><item><title>track git remote branch (note to self)</title><description>&lt;p&gt;&lt;pre&gt;git config branch.master.remote origin
git config branch.master.merge refs/heads/master
&lt;/pre&gt;&lt;/p&gt;</description><link>http://darrinholst.com/post/194932754</link><guid>http://darrinholst.com/post/194932754</guid><pubDate>Wed, 23 Sep 2009 07:12:07 -0500</pubDate><category>git</category></item><item><title>Eclipse vs. IntelliJ</title><description>&lt;p&gt;I’ve been a looong time eclipse user and have tried intellij off and on over that time. I never really got hooked on intellij like some people I know…until recently. I’m not sure why it stuck with me this time, but this post will serve as my list that I can point people to when I get asked “the question”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;IntelliJ - The Good&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Selectable color themes (absolute pain in eclipse)&lt;/li&gt;
&lt;li&gt;Maven works out of the box&lt;/li&gt;
&lt;li&gt;better plugin manager&lt;/li&gt;
&lt;li&gt;better ruby support (which gives me cucumber syntax highlighting)&lt;/li&gt;
&lt;li&gt;when extracting methods, variables, etc. just put your cursor anywhere on the expression and pick which one you want if there are multiple (eclipse has to have the exact expression highlighted)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not too much for now, but I’ll add to it as thing come to me.&lt;/p&gt;</description><link>http://darrinholst.com/post/189037569</link><guid>http://darrinholst.com/post/189037569</guid><pubDate>Tue, 15 Sep 2009 22:14:00 -0500</pubDate><category>ide</category><category>eclipse</category><category>intellij</category></item><item><title>git integration not working in textmate?</title><description>&lt;p&gt;So you installed &lt;a href="http://github.com/ciaran/projectplus"&gt;projectplus&lt;/a&gt; or the git bundle for textmate and it doesn’t work? Try setting a TM_GIT shell variable (located in the advanced properties) to /usr/local/git/bin/git.&lt;/p&gt;</description><link>http://darrinholst.com/post/163898980</link><guid>http://darrinholst.com/post/163898980</guid><pubDate>Sat, 15 Aug 2009 22:16:26 -0500</pubDate><category>git</category><category>textmate</category></item><item><title>svn:externals in git?</title><description>&lt;p&gt;For all the benefits git has over svn, I found one thing that I was missing…svn:externals. There are a few suggesstions that you come across when searching around on this topic, one being git subprojects and another being git submodules.&lt;/p&gt;
&lt;p&gt;I couldn’t find (read lost desire) a whole lot on subprojects, but from what I got out of it is you just do a git clone of your external project in whatever directory of your  project. I tried that, committed, and pushed, but when I cloned it back just the directory was there…no files. Granted, I didn’t spend a lot of time on this, but if it were as easy as clone, commit, push then I guess everyone would be using it.&lt;/p&gt;
&lt;p&gt;Git submodules are a little more involved and require extra commands after a clone…git submodule update. Also, these modules are bound to a specific commit where I wanted the latest (like how svn:externals work). Too much work.&lt;/p&gt;
&lt;p&gt;So it appears, unless I’m missing something, that git doesn’t have a 100% replacement for svn:externals.&lt;/p&gt;
&lt;p&gt;In my case I don’t care about the history of the external repo being in my repo, I just want the latest in there. Also, the external repo I need is relatively small so duplication between repos is not an issue. Finally, I don’t need to change or push to the external repo from the local one.&lt;/p&gt;
&lt;p&gt;So I ended up with a sync job that runs every hour that looks like this…&lt;/p&gt;
&lt;pre&gt;#!sh&lt;br/&gt;&lt;br/&gt;function sync_project() {&lt;br/&gt;  rm -rf $1&lt;br/&gt;  git clone ssh://git-server/$1.git&lt;br/&gt;  cd $1&lt;br/&gt;  rm -rf local/path/external-project&lt;br/&gt;  mkdir -p local/path&lt;br/&gt;  cp -R ../external-project local/path&lt;br/&gt;  rm -rf `/bin/find . -type d -name .svn`&lt;br/&gt;  git add .&lt;br/&gt;  git add -u&lt;br/&gt;  git commit -m "auto sync"&lt;br/&gt;  git push origin master&lt;br/&gt;  cd ..&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;rm -rf external-project&lt;br/&gt;svn co http://svn/external-project&lt;br/&gt;sync_project "my-project"&lt;br/&gt;sync_project "my-other-project"&lt;/pre&gt;

&lt;p&gt;You’ll notice that my external project comes from svn, this can easily be replaced with whatever scm it’s in.&lt;/p&gt;</description><link>http://darrinholst.com/post/162307644</link><guid>http://darrinholst.com/post/162307644</guid><pubDate>Thu, 13 Aug 2009 16:26:00 -0500</pubDate><category>git</category><category>svn</category></item><item><title>git pull with uncommitted files</title><description>&lt;p&gt;Suppose for whatever reason you need to pull in changes from a remote repository and you have uncommitted files that you don’t want to commit. Git won’t let you do that if it needs to merge changes to one of your uncommitted files. Try this…&lt;/p&gt;
&lt;p&gt;git stash&lt;/p&gt;
&lt;p&gt;git pull&lt;/p&gt;
&lt;p&gt;git stash pop&lt;/p&gt;</description><link>http://darrinholst.com/post/161315325</link><guid>http://darrinholst.com/post/161315325</guid><pubDate>Wed, 12 Aug 2009 10:01:00 -0500</pubDate><category>git</category></item></channel></rss>
