Running the Latest Quicksilver Build

There's the latest, and then there's the latest. That is to say, there are frequently some cool updates and new features in pull requests that haven't been merged yet. What if you want to try them out? Here's what I do.

Things I'm assuming you've already done

  1. Fork the Quicksilver repository
  2. Clone the fork to your machine

    % git clone git@github.com:username/Quicksilver.git
    
  3. Add a remote for the official repository1

    % git remote add upstream git://github.com/quicksilver/Quicksilver.git
    

Getting the Latest

Now, to get the good stuff, make sure your master branch is up to date.

% git checkout master
Switched to branch 'master'
% git pull --rebase upstream master
From github.com:quicksilver/Quicksilver
 * branch            master     -> FETCH_HEAD
Current branch master is up to date.

Then start browsing the pull requests. Open one you're interested in and look toward the top. You'll see something like

devuser wants someone to merge 5 commits into quicksilver:master from devuser:featurebranch

You'll want to create a new branch to contain this untested code. GitHub uses the convention of naming this local branch otheruser-branchname, but use whatever makes sense to you if that seems too long.

% git checkout -b devuser-featurebranch master
Switched to a new branch 'devuser-featurebranch'
% git pull https://username@github.com/devuser/Quicksilver.git featurebranch
... stuff comes down ...

Repeat this process for any other pull requests.

Now, create a new branch where you'll merge everything together and start merging things in from the other branches.

% git checkout -b mine master
Switched to a new branch 'mine'
% git merge devuser-featurebranch
... merge stuff ...
% git merge otheruser-otherfeature
... merge stuff ...

Now, while still on the "mine" branch, open the Quicksilver project in Xcode, clean all targets, and build your Frankenstein. (You have backups, right?)

Additional Tips

I make a new "mine" branch almost daily. It's easy to start fresh.

% git checkout master
Switched to branch 'master'
% git branch -D mine
Deleted branch mine (was d6d61ac).
% git checkout -b mine master
Switched to a new branch 'mine'

If additional commits are added to a pull request you were testing, you can update it without starting from scratch. Just switch to that branch and run the same pull command.

% git checkout devuser-featurebranch
Switched to branch 'devuser-featurebranch'
% git pull https://username@github.com/devuser/Quicksilver.git featurebranch
... stuff comes down ...

You can merge this with "mine" again to get the updates there.

Last but Not Least

As long as you're going to the trouble of trying out cutting-edge stuff, please take the time to report and problems by commenting on the pull request on GitHub.


  1. This is for read-only access. If you have read-write like me, your remote will be different. 

blog comments powered by Disqus