Insights on Ruby, Git, jQuery, Cappuccino, WordPress, Debian and OS X. Please subscribe if you find something useful!

git clone & pull without changing directories

Posted: May 19th, 2008 | Author: Jerod | Filed under: Ruby | Tags: , | Comments

If you’re trying to configure git commands in a directory that isn’t pwd, you’ll have to deal with clone and pull a little differently. Clone works like this:

git clone [source location] [destination location]

An example clone into my application’s vendor directory:

git clone git://github.com/rails/rails.git ~/rails/myapp/vendor/rails

Pull works like this:

git --git-dir=/path/to/destination/.git pull

An example pull in the already initiated local rails repository:

git --git-dir=~/rails/myapp/vendor/rails/.git pull

Using these approaches, you can simplify your capistrano recipes. here is an example snippet:

set :rails_source, "git://github.com/rails/rails.git"
 
desc "git the latest rails"
task :git_rails do
  run "mkdir -p #{shared_path}/vendor"
  result = run_and_return "ls #{shared_path}/vendor"
  if result.match(/rails/)
    run "git --git-dir=#{shared_path}/vendor/rails/.git pull"
  else
    run "git clone #{rails_source} #{shared_path}/vendor/rails"
  end
end

See man git-clone and man git-pull for more details.


blog comments powered by Disqus