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
- Fork the Quicksilver repository
Clone the fork to your machine
% git clone firstname.lastname@example.org:username/Quicksilver.git
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
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://email@example.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?)
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://firstname.lastname@example.org/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.
This is for read-only access. If you have read-write like me, your remote will be different. ↩