<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>has_many :thoughts: Tag git</title>
    <link>http://blog.kineticweb.com/articles/tag/git</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Musings from a Ruby on Rails development team</description>
    <item>
      <title>Upgrading Git on Mac OS X</title>
      <description>&lt;p&gt;We recently switched to git based capistrano deployments and I quickly found out that these weren&amp;#8217;t working from my MacBook Pro. I noticed that my git version was a few behind my coworker&amp;#8217;s, so I figured it was time to upgrade.&lt;/p&gt;


	&lt;p&gt;Following &lt;a href="http://blog.kineticweb.com/articles/2007/10/30/compiling-git-for-mac-os-x-leopard-10-5"&gt;Justin&amp;#8217;s original git compilation instructions&lt;/a&gt;, I downloaded and compiled the latest Git version, 1.6.2 like so:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;curl -O http://kernel.org/pub/software/scm/git/git-1.6.2.tar.gz
tar jxvf git-1.6.2.tar.gz
cd git-1.6.2
make prefix=/usr/local all
make prefix=/usr/local test &amp;amp;&amp;amp; echo $?
sudo make prefix=/usr/local install&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;When the compile was done, it gave me output like this:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;!! You have installed git-* commands to new gitexecdir.
!! Old version git-* commands still remain in bindir.
!! Mixing two versions of Git will lead to problems.
!! Please remove old version commands in bindir now.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Thanks to &lt;a href="https://wincent.com/wiki/Updating_to_Git_1.6.0.1"&gt;this nice posting&lt;/a&gt;, I discovered this always happens when you upgrade to 1.6 and above. Git now only puts the main git binary and a few others in your /usr/local/bin and it tucks the rest away elsewhere. That meant that all the other zillion binaries needed to be deleted from my bin. I simply did:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;cd /usr/local/bin/
ls -latr | grep git&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Which gave me an ordered list of all the git binaries installed. The ones at the end all had today&amp;#8217;s date on them, so I knew those were the new versions. The rest I could whack. The ones I could keep were &lt;code&gt;git-upload-pack&lt;/code&gt;, &lt;code&gt;git-upload-archive&lt;/code&gt;, &lt;code&gt;git-receive-pack&lt;/code&gt;, &lt;code&gt;git&lt;/code&gt;, &lt;code&gt;git-shell&lt;/code&gt;, &lt;code&gt;git-cvsserver&lt;/code&gt;, and &lt;code&gt;gitk&lt;/code&gt;. The rest I removed like so:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;sudo rm git-var git-update-server-info git-unpack-file git-ssh-upload git-ssh-push git-ssh-pull git-ssh-fetch git-show-index git-send-pack git-peek-remote git-patch-id git-pack-redundant git-mktree git-mktag git-merge-tree git-merge-recursive git-merge-index git-local-fetch git-index-pack git-imap-send git-http-push git-http-fetch git-hash-object git-fetch-pack git-fast-import git-daemon git-convert-objects git-bisect git-write-tree git-whatchanged git-verify-tag git-verify-pack git-update-ref git-update-index git-unpack-objects git-tar-tree git-tag git-symbolic-ref git-svnimport git-svn git-submodule git-stripspace git-status git-stash git-show-ref git-show-branch git-show git-shortlog git-sh-setup git-send-email git-runstatus git-rm git-revert git-rev-parse git-rev-list git-reset git-rerere git-request-pull git-repo-config git-repack git-remote git-relink git-reflog git-rebase--interactive git-rebase git-read-tree git-quiltimport git-push git-pull git-prune-packed git-prune git-parse-remote git-pack-refs git-pack-objects git-name-rev git-mv git-mergetool git-merge-subtree git-merge-stupid git-merge-resolve git-merge-ours git-merge-one-file git-merge-octopus git-merge-file git-merge-base git-merge git-mailsplit git-mailinfo git-ls-tree git-ls-remote git-ls-files git-lost-found git-log git-instaweb git-init-db git-init git-gui git-grep git-get-tar-commit-id git-gc git-fsck-objects git-fsck git-format-patch git-for-each-ref git-fmt-merge-msg git-filter-branch git-fetch--tool git-fetch git-diff-tree git-diff-index git-diff-files git-diff git-describe git-cvsimport git-cvsexportcommit git-count-objects git-config git-commit-tree git-commit git-clone git-clean git-citool git-cherry-pick git-cherry git-checkout-index git-checkout git-check-ref-format git-check-attr git-cat-file git-bundle git-branch git-blame git-archive git-archimport git-apply git-annotate git-am git-add--interactive git-add gitjour&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Then I just had to go back and install the manpages for the new version like so:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;curl -O http://kernel.org/pub/software/scm/git/git-manpages-1.6.2.tar.bz2
sudo tar xjv -C /usr/local/man -f git-manpages-1.6.2.tar.bz2&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;And, low and behold, I was now running git 1.6.2! What&amp;#8217;s more, my capistrano deployments work now.&lt;/p&gt;</description>
      <pubDate>Sat, 07 Mar 2009 08:11:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:04202962-c370-463c-8dd6-e2acb98f6ea2</guid>
      <author>Colin A. Bartlett</author>
      <link>http://blog.kineticweb.com/articles/2009/03/07/upgrading-git-on-mac-os-x</link>
      <category>git</category>
      <category>mac</category>
      <category>OSX</category>
    </item>
    <item>
      <title>Workflow, Github Global Pull Requests</title>
      <description>&lt;p&gt;Just got this question and thought I'd make a blog post out of it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;why would someone want me to pull his changes into MY fork of this project?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This happens all the time, and usually for popular projects. There are a few reasons which lead themselves nicely into a discussion on Git[hub] distributed workflows.&lt;/p&gt;

&lt;h2&gt;The Short Answer&lt;/h2&gt;

&lt;p&gt;Git's &lt;em&gt;distributed&lt;/em&gt; architecture can ensure that no single entity is the "central repository". Thus when someone feels they have important changes that all the forks and mirrors should utilize, they send out a global pull request to all or some of the forks on Github.&lt;/p&gt;

&lt;h2&gt;An Even Shorter Answer&lt;/h2&gt;

&lt;p&gt;It's a personal preference, one of Git's many available workflows. &lt;/p&gt;

&lt;h2&gt;Hardcore Forking&lt;/h2&gt;

&lt;p&gt;Personally, I have never worked that way on Github. I have done two things in maintaining forks.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fork fork&lt;/strong&gt;; my fork is an entirely separate entity with a separate development cycle and process (or even end result)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Support fork&lt;/strong&gt;; my fork is a fork of the "sanctioned" main repo, and I am doing support work for the main project I will pull request to the "gate keeper" of that project (the main author or project maintainer).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now if I really felt something was of urgency to all the forks I might do a global pull request if the main repo author didn't like my commit, he's gone AWOL and/or I still felt it was important (security, etc).&lt;/p&gt;

&lt;p&gt;Otherwise, fork maintainers should have a &lt;strong&gt;local branch for tracking&lt;/strong&gt; every other remote repository of other fork maintainer's. This is what I do to track only people I think have good commits that I can pull and include into my fork repo. Branches in this respect provide the links to other "node" repositories in the distributed glory which is Git.&lt;/p&gt;

&lt;p&gt;Git suggests in their man pages and docs that you make the development decision to only pull in new commits, and never pushing out. Tracking remote repos demonstrates the beauty of following this workflow of "pull only".  &lt;/p&gt;

&lt;h2&gt;Just Pull It&lt;/h2&gt;

&lt;p&gt;For shits and giggles lets build an example to demonstrate why "pull only" might be such a great idea for distributed project development. &lt;/p&gt;

&lt;p&gt;I can think of no better example than Roy Fielding and the &lt;a href="http://www.ietf.org/"&gt;IETF&lt;/a&gt;'s &lt;a href="http://tools.ietf.org/html/rfc2616"&gt;HTTP standard&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypermedia information systems. It is a generic, stateless, protocol which can be used for many tasks beyond its use for hypertext...&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We are going to map the following HTTP technologies to git fetching commands.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;git-push maps to &lt;a href="http://is.gd/53P"&gt;Comet&lt;/a&gt;, &lt;em&gt;a neologism to describe a web application model in which a long-held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;git-pull maps to &lt;a href="http://is.gd/lepq"&gt;Ajax&lt;/a&gt;, &lt;em&gt;an acronym which describes a web browser technology capable of requesting only the content that needs to be updated, thus drastically reducing bandwidth usage and load time.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Comet, in general, uses the web server to push updates to the browser when they are available. Handy at times but breaks the HTTP protocol. It requires the server-side to maintain a connection and known state as the server needs to know whom the client is and where to send the new data. As we all know that's not very efficient in the grand scheme of HTTP. State is tough to keep synchronized. It limits the ease of going on and offline, as well as the client moving around across the internet (changing IPs, etc).&lt;/p&gt;

&lt;p&gt;In contrast Ajax requests are much lighter. The client maintains when to request new content. Thus making a decision of how to handle the content, what it is and where it's coming from. When you are only doing git-pull you are choosing what to add and where to add it. There is more control over your own repository.&lt;/p&gt;

&lt;h2&gt;Summing it all Up&lt;/h2&gt;

&lt;p&gt;In a distributed environment everyone becomes the gate keeper to their own repository. &lt;/p&gt;

&lt;p&gt;This is great for open source projects because the code is always kept free from central dictatorship. &lt;/p&gt;

&lt;p&gt;Power is gained through this autonomous workflow when you allow anyone, at any moment, to add changes and bug fixes to the project or pull down someone else's updates for review and merging.&lt;/p&gt;</description>
      <pubDate>Sat, 28 Feb 2009 12:14:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ff8a6bc1-30f2-4360-8f5d-6198dd82bbc2</guid>
      <author>Justin Reagor</author>
      <link>http://blog.kineticweb.com/articles/2009/02/28/workflow-github-global-pull-requests</link>
      <category>git</category>
      <category>scm</category>
      <category>OpenSource</category>
    </item>
    <item>
      <title>A &amp;quot;Squash&amp;quot; WorkFlow in Git</title>
      <description>&lt;p&gt;By using Git, our workflows and environments are becoming much cleaner, there&amp;#8217;s no denying that. I just wanted to post a quick note on how &amp;#8220;squashing&amp;#8221;, and more specifically interactive Git rebase, can extend that as well.&lt;/p&gt;


	&lt;p&gt;If your using Git you can squash tiny commits into a &amp;#8220;lump sum&amp;#8221; commit. This way you have the benefit of smaller commits while releasing only the real &lt;strong&gt;meat&lt;/strong&gt; of changes your working on.&lt;/p&gt;


	&lt;p&gt;Its a tad dangerous messing with rebase, since it rewrites history, so try to learn how to do it on a separate test branch.&lt;/p&gt;


	&lt;p&gt;Personally, I&amp;#8217;m trying to work this into my workflow by switching back to my master branch, merging down tiny changes from the other &amp;#8220;working&amp;#8221; branch, squashing them together, then pushing up (or others pulling down) or switching back to continue working/create a new branch for new functionality&amp;#8230; whatever&amp;#8230;.&lt;/p&gt;


	&lt;p&gt;Plenty of people have blogged about this, so I&amp;#8217;m not going to demonstrate how to do it, but here&amp;#8217;s a link for learning more about it&amp;#8230;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://blog.madism.org/index.php/2007/09/09/138-git-awsome-ness-git-rebase-interactive"&gt;git awsome-ness [git rebase&amp;#8212;interactive]&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;As usual, check the Git &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html"&gt;rebase manual page&lt;/a&gt; for more info&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Sat, 02 Aug 2008 13:04:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:76e85236-24b0-47da-bb85-050c82de2056</guid>
      <author>Justin Reagor</author>
      <link>http://blog.kineticweb.com/articles/2008/08/02/a-squash-workflow-in-git</link>
      <category>git</category>
      <category>rebase</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Soar with Merb-Core and Merb-More (0.9)</title>
      <description>&lt;p&gt;I haven&amp;#8217;t been around in awhile, frankly because I&amp;#8217;ve had my own things to attend to&amp;#8230; but I&amp;#8217;ve felt somewhat ashamed that I&amp;#8217;ve left my kind Kinetic audience a float.  So here is another &amp;#8220;Up and Running&amp;#8221; treat. Cloning Merb-core and -more, from Git[hub] to dummy project.&lt;/p&gt;


	&lt;p&gt;&lt;em&gt;&lt;span class="caps"&gt;BTW&lt;/span&gt;, it should be any day now for the official 0.9 release. Rumors have it that Ezra will be releasing it at ActsAsConference.&lt;/em&gt;&lt;/p&gt;


	&lt;h3&gt;Preperation&lt;/h3&gt;


	&lt;p&gt;Your going to want to remove any old gems in the following list, as you will be installing trunk versions in this tutorial.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;merb (&amp;lt; 0.9)
merb_datamapper (&amp;lt; 0.9)
merb_helpers (&amp;lt; 0.9)
datamapper (&amp;lt; 0.3.0)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;You can go ahead and gem install the following. I&amp;#8217;ve listed the version numbers I use currently.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;sqlite3-ruby (1.2.1)
data_objects (0.2.0)
do_sqlite3 (0.2.3)
do_mysql(0.2.2)
rack (0.2.0)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Along with the regular Merb dependencies listed in the &lt;span class="caps"&gt;API&lt;/span&gt;.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;# gem install mongrel json json_pure erubis mime-types rspec hpricot mocha rubigen haml markaby mailfactory Ruby2Ruby -y&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Thats a lotta gems right? Well, taking a closer look you should have most of these already&amp;#8230; and if you don&amp;#8217;t you should.&lt;/p&gt;


	&lt;h3&gt;Installing Git&lt;/h3&gt;


	&lt;p&gt;&lt;a href="http://blog.kineticweb.com/articles/2007/10/30/compiling-git-for-mac-os-x-leopard-10-5"&gt;You installed it already&lt;/a&gt;, otherwise&amp;#8230; &lt;span class="caps"&gt;EPIC FAIL&lt;/span&gt;!&lt;/p&gt;


	&lt;h3&gt;You DO have a Github account&lt;/h3&gt;


	&lt;p&gt;If you have a Github account, you&amp;#8217;ll most likely want to fork merb-core and merb-more so you have your own fork&amp;#8217;s to mess about with. If you find anything interesting you can always submit a bug/patch and help the wonderful Merb team out! Or start building some new framework forked from Merb. Either way&amp;#8230;&lt;/p&gt;


	&lt;p&gt;To do this, login to Github and&amp;#8230;&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;http://github.com/wycats/merb-core/fork
http://github.com/wycats/merb-more/fork
http://github.com/wycats/merb-plugins/fork&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;You&amp;#8217;ll then want to clone these like the next section&amp;#8230;&lt;/p&gt;


	&lt;h3&gt;You &lt;span class="caps"&gt;DON&lt;/span&gt;&amp;#8217;T have a Github account&lt;/h3&gt;


	&lt;p&gt;If you don&amp;#8217;t have an account yet for Github you&amp;#8217;ll still need Git installed like I noted above. From within a fresh directory in Terminal run the following commands.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;# git clone git://github.com/wycats/merb-core.git
# git clone git://github.com/wycats/merb-more.git
# git clone git://github.com/wycats/merb-plugins.git&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;h3&gt;Installing these Git forks/clones&lt;/h3&gt;


	&lt;p&gt;Simply enter the directories &amp;#8220;&lt;em&gt;merb-core&lt;/em&gt;&amp;#8221; and &amp;#8220;&lt;em&gt;merb-more&lt;/em&gt;&amp;#8221; and run&amp;#8230;&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;# sudo rake install&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;You&amp;#8217;ll also want to do this under &amp;#8220;&lt;em&gt;merb-plugins/merb_datamapper&lt;/em&gt;&amp;#8221; and &amp;#8220;&lt;em&gt;merb-plugins/merb_helpers&lt;/em&gt;&amp;#8221;. Including any others in &amp;#8220;&lt;em&gt;merb-plugins&lt;/em&gt;&amp;#8221; you would like installed.&lt;/p&gt;


	&lt;h3&gt;Installing Datamapper Trunk&lt;/h3&gt;


	&lt;p&gt;Currently, Datamapper is still under &lt;span class="caps"&gt;SVN&lt;/span&gt;. I&amp;#8217;m positive this will change in the near future. But for now&amp;#8230;&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;# svn co http://datamapper.rubyforge.org/svn/trunk/ data_mapper&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Then simply go into the data_mapper/ directory created and do&amp;#8230;&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;# sudo rake install&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;h3&gt;Merb-gen is your Friend?&lt;/h3&gt;


	&lt;p&gt;I&amp;#8217;ve just recently discovered that they&amp;#8217;ve changed, yet again, the default way of creating a new Merb project. I guess because &amp;#8220;&lt;em&gt;merb -g&lt;/em&gt;&amp;#8221; or &amp;#8220;&lt;em&gt;merb&lt;/em&gt;&amp;#8221; was getting annoying, so &amp;#8220;&lt;em&gt;merb-gen [projectname]&lt;/em&gt;&amp;#8221; is some how much simpler. You also use this to generate models/controllers/resources/etc&amp;#8230; :/&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m going to take another guess and say this is somehow based on the project directory no longer needing to conform to a certain structure like Rails. I&amp;#8217;ve heard this, but I haven&amp;#8217;t tested it out for fact&amp;#8230; so let me know your experiences.&lt;/p&gt;


	&lt;p&gt;Either way&amp;#8230;&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;# merb-gen lovely-app&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;h3&gt;Going into Toshi Station to pick up some power converters&lt;/h3&gt;


	&lt;p&gt;This is where it starts to get exciting. The fruit of our labors dance in unison to form a euphoric aura called &amp;#8220;0.9&amp;#8221;... not so fast though.&lt;/p&gt;


	&lt;p&gt;1. If your not already, make sure your in the &amp;#8220;&lt;em&gt;lovely-app/&lt;/em&gt;&amp;#8221; project directory.&lt;/p&gt;


	&lt;p&gt;2. Open up &amp;#8220;&lt;em&gt;config/init.rb&lt;/em&gt;&amp;#8221; and uncomment&amp;#8230;&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;use_orm :datamapper&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Rspec should be your testing framework by default.&lt;/p&gt;


	&lt;p&gt;3. Back in your shell, run&amp;#8230;&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;# rake --tasks&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;4. This should auto-generate &amp;#8220;&lt;em&gt;config/database.sample.yml&lt;/em&gt;&amp;#8220;&lt;/p&gt;


	&lt;p&gt;5. Overwrite the entire thing with the following, and save as &amp;#8220;&lt;em&gt;config/database.yml&lt;/em&gt;&amp;#8221;...&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;---
:development: &amp;amp;build
  :adapter: sqlite3
  :database: db/dev.db

:test:
  &amp;lt;&amp;lt;: *build
  :database: db/test.db

:production:
  :adapter: mysql
  :database: lovely_app
  :username: root
  :password: &amp;quot;&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;6. Your going to now want to create those sqlite databases. If not both just db/dev.db.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;# mkdir db/
# sqlite3 db/dev.db
SQLite version 3.5.1
Enter &amp;quot;.help&amp;quot; for instructions
sqlite&amp;gt; .databases
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /Users/bionicebonics/lovely-app/db/dev.db                     
sqlite&amp;gt; .quit&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;You should be able to run a successful &amp;#8220;&lt;em&gt;rake&amp;#8212;tasks&lt;/em&gt;&amp;#8221; if you did everything correctly. You may also want to test and see if you can run the daemon, and pull up a browser window. Run &amp;#8220;&lt;em&gt;merb&lt;/em&gt;&amp;#8221; by itself from Merb.root or project root directory.&lt;/p&gt;


	&lt;p&gt;In short, just start hacking! Reference the &lt;span class="caps"&gt;API&lt;/span&gt; for help, not me.&lt;/p&gt;


	&lt;h3&gt;The Sugar&lt;/h3&gt;


	&lt;p&gt;You should now have a base process for exploring Merb 0.9 development.&lt;/p&gt;


	&lt;h3&gt;The Salt&lt;/h3&gt;


	&lt;p&gt;If for some weird reason your getting errors running &amp;#8220;merb&amp;#8221;, make sure you removed any old versions of Merb &amp;lt;= 0.5.x.&lt;/p&gt;


	&lt;p&gt;Also try uninstalling merb-core and reinstalling it from a new Git clone of the main repo. I had to do this for some odd reason whilst running through this tutorial.&lt;/p&gt;


	&lt;h3&gt;Shameless Kinetic/PhillyOnRails&lt;/h3&gt;


	&lt;p&gt;Colin will be giving a talk on Merb at our local &lt;a href="http://www.phillyonrails.org/"&gt;PhillyOnRails Users Group&lt;/a&gt;, so stay tuned for info on that.&lt;/p&gt;


	&lt;h2&gt;Update&lt;/h2&gt;


	&lt;p&gt;Gotta love Merb integrating &lt;a href="http://rack.rubyforge.org/"&gt;Rack/WSGI&lt;/a&gt;!&lt;/p&gt;


	&lt;p&gt;Following a few discussions on the &lt;a href="http://code.macournoyer.com/thin/"&gt;Thin webserver&lt;/a&gt; mailing list, I just tried Merb on Thin&amp;#8230; this is working out excellent! I&amp;#8217;ve also heard that Ezra just got 2200 req/sec using Thin.&lt;/p&gt;


	&lt;p&gt;If you would like to explore the possibilities of this incredibly fast setup, simply do&amp;#8230;&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;# sudo gem install thin
# cd lovely-app
# merb -a thin&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;This will load Merb on Thin. If you don&amp;#8217;t know about Thin, I&amp;#8217;m not going to sit here and explain it. I&amp;#8217;m just not like that. You&amp;#8217;ll have to &lt;span class="caps"&gt;FOFY&lt;/span&gt;, &lt;a href="http://code.macournoyer.com/thin/doc/files/README.html"&gt;find-out-for-yourself&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Sat, 09 Feb 2008 01:31:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:96a186fc-4aef-4504-9955-8be244d9b63e</guid>
      <author>Justin Reagor</author>
      <link>http://blog.kineticweb.com/articles/2008/02/09/soar-with-merb-core-and-merb-more-0-9</link>
      <category>merb</category>
      <category>git</category>
      <category>tutorial</category>
      <category>thin</category>
      <category>rack</category>
    </item>
    <item>
      <title>Hosting Git Repo's [cross post]</title>
      <description>&lt;p&gt;Just to not let my adoring Git followers down, since I have yet to write my next Git article&amp;#8230; Garry Dolley over at http://scie.nti.st has an excellent article on &lt;a href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way"&gt;Hosting Git repositories, The Easy (and Secure) Way&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Now I understand he uses Python, but lets face it, so does Git. Also, its only an excuse some Rubyists use for not learning that wonderful sister language.&lt;/p&gt;


	&lt;p&gt;Enjoy, and let me know your success/failures&amp;#8230; or just never visit this site and keep reading our wonderful articles through NetNewsWire or what-have-you.&lt;/p&gt;</description>
      <pubDate>Wed, 14 Nov 2007 08:33:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d71ed12f-7335-44ff-9e16-20ef97a1694a</guid>
      <author>Justin Reagor</author>
      <link>http://blog.kineticweb.com/articles/2007/11/14/hosting-git-repos-cross-post</link>
      <category>git</category>
      <category>hosting</category>
      <category>python</category>
    </item>
    <item>
      <title>Compiling Git for Mac OS X Leopard (10.5)</title>
      <description>&lt;p&gt;The following is the exact compilation steps I took for compiling Git onto the new retail version of Leopard. Definitely a big change since my previous article on installing in Tiger (next to pre-installed &lt;span class="caps"&gt;SVN&lt;/span&gt;, bye bye &lt;span class="caps"&gt;CVS&lt;/span&gt;!)...&lt;/p&gt;


&lt;strong&gt;Commands&lt;/strong&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;curl -O http://surfnet.dl.sourceforge.net/sourceforge/expat/expat-2.0.1.tar.gz
tar zxvf expat-2.0.1.tar.gz 
cd expat-2.0.1
./configure --prefix=/usr/local
make
make check
sudo make install
cd ..

curl -O http://kernel.org/pub/software/scm/git/git-1.5.3.4.tar.bz2
tar jxvf git-1.5.3.4.tar.bz2
cd git-1.5.3.4
make prefix=/usr/local all
make prefix=/usr/local test &amp;amp;&amp;amp; echo $?
sudo make prefix=/usr/local install
cd ..

curl -O http://www.kernel.org/pub/software/scm/git/git-manpages-1.5.3.4.tar.bz2
sudo tar xjv -C /usr/local/man -f git-manpages-1.5.3.4.tar.bz2&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;You may need to adjust your default &lt;span class="caps"&gt;MANPATH&lt;/span&gt; environment variable. You can either apply something along the lines of&amp;#8230;&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;export MANPATH=&amp;quot;/usr/local/man:$MANPATH&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;...to your .bash_login, profile or what have you. Or you can look into editing /private/etc/man.conf (or un-tar the manpages into a directory in your &lt;span class="caps"&gt;MANPATH&lt;/span&gt; already).&lt;/p&gt;


	&lt;p&gt;Also, no need to fiddle around with &lt;span class="caps"&gt;SVN&lt;/span&gt; bindings for Perl, or whatever the problem was with &lt;em&gt;git-svn&lt;/em&gt; before.&lt;/p&gt;


	&lt;p&gt;You may also wish to surf our past articles hear on this blog for upgrading Git. The upgrading should be identical on Leopard.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Next Time&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;My next article will cover developing outside of a traditional distributed Git environment. Using Git to manage personal branching/merging/local copies, then committing to a main &lt;span class="caps"&gt;SVN&lt;/span&gt; repo. Happy hacking.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Oct 2007 23:48:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:0cdaff9a-4cd2-4455-a510-9ec2e01d93c2</guid>
      <author>Justin Reagor</author>
      <link>http://blog.kineticweb.com/articles/2007/10/30/compiling-git-for-mac-os-x-leopard-10-5</link>
      <category>git</category>
      <category>scm</category>
      <category>OSX</category>
      <category>leopard</category>
      <trackback:ping>http://blog.kineticweb.com/articles/trackback/74</trackback:ping>
    </item>
    <item>
      <title>Updates on Git use in Mac OS X (Tiger)</title>
      <description>&lt;p&gt;Note: This article is still on using Git under Tiger (10.4.10, respectively)... Until I have time to run down to the Apple store tomorrow and do a nice clean install of Leopard onto my Macbook, I will not have the appropriate means of writing a proper article on Git use under 10.5.&lt;/p&gt;


	&lt;p&gt;This is for anyone that reads this blog, and used my previous article on compiling Git. I left the proper Git tutorials to the behmouth of external articles out there, on using Git as Rails project/deployment &lt;span class="caps"&gt;SCM&lt;/span&gt;. I&amp;#8217;m also a firm believer in &lt;span class="caps"&gt;DIY&lt;/span&gt;, and the same applies to learning new things. Nobody ever taught me a damn subject (completely) in person on anything I use day-to-day&amp;#8230; so &lt;span class="caps"&gt;DIY&lt;/span&gt; and&amp;#8230;&lt;/p&gt;


&lt;div style="text-align:center;margin:10px;"&gt;
&lt;a href="http://git.or.cz/" target="_blank"&gt;&lt;img src="http://git.or.cz/git-logo.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Welcome to the wonderful world of Git folks!&lt;/strong&gt;
&lt;/div&gt;

	&lt;p&gt;Since my last article, actually a day ago, Geoffrey Grosenbach over at &lt;a href="http://www.peepcode.com"&gt;Peepcode Screencasts&lt;/a&gt; released &lt;a href="http://peepcode.com/products/git"&gt;Video 015, on Git&lt;/a&gt;. This should really, visually, help out those that are really having problems crasping the simple things in Git. There are other &lt;a href="http://blog.nbwd.co.uk/2007/8/16/using-git-for-rails-development"&gt;numerous&lt;/a&gt; &lt;a href="http://scie.nti.st/2007/9/4/capistrano-2-0-with-git-shared-repository"&gt;advances&lt;/a&gt; in &lt;a href="http://cheat.errtheblog.com/s/gitsvn/"&gt;using&lt;/a&gt; Git with your Rails applications. So I&amp;#8217;ll keep things &lt;span class="caps"&gt;DRY&lt;/span&gt; here&amp;#8230;&lt;/p&gt;


	&lt;p&gt;One thing I will update you with though, a quick and simple way to update your source compiled installation of Git, by using Git&amp;#8217;s repository itself.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;# git clone git://git.kernel.org/pub/scm/git/git.git
# cd git
# make configure
# ./configure --prefix=/usr/local
# make all doc
# sudo make install install-doc&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;You will now have a completely refreshed version of Git on your system.&lt;/p&gt;


	&lt;p&gt;Take note, Grosenbach mentions the benefits of having a compiled version of Git on your system. He does not, however, give more than a quick mention that it may be slightly difficult gathering up the proper dependency chain onto your system. That was what my previous article was for.&lt;/p&gt;


	&lt;p&gt;Enjoy, and let me know how things go for you&amp;#8230; justin_at_kineticweb.com.&lt;/p&gt;</description>
      <pubDate>Thu, 25 Oct 2007 23:46:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:00613e8c-c07f-49d8-ab44-75debc11d631</guid>
      <author>Justin Reagor</author>
      <link>http://blog.kineticweb.com/articles/2007/10/25/updates-on-git-use-in-mac-os-x-tiger</link>
      <category>git</category>
      <category>scm</category>
      <category>svn</category>
      <category>capistrano</category>
      <trackback:ping>http://blog.kineticweb.com/articles/trackback/70</trackback:ping>
    </item>
  </channel>
</rss>
