Naming consistency in README file
Use GitHub's `archive` URL for SHA1

To compensate for
https://github.com/mxcl/homebrew/commit/174acd649c19dbc83f34a6a9e95bdc137b1a2a1b,
we need to use the archive URL, rather than the tarball one so that we
calculate the correct SHA1 when generating the Homebrew formula.
Fix WebMock reset phase in Minitest::Test

Without it, requests stubs from one test could influence the outcome of
another test.
Enable `am` applying patches from private repos

Fetch the patch using GitHub's API instead of curl.

Fixes #397
Explicitly declare we're using GitHub API v3 when fetching patches

This shields us from future changes to GitHub's API
Rewrite `hub am` to get rid of usage of curl altogether

With patches now fetched from GitHub's API, it was awkward to keep
fetching raw gists using curl. This makes it so patches from gists are
fetched using the API as well.
Don't test the case when a gist contains multiple blobs

When GitHub's gist API payload gets deserialized in Ruby, the file list
gets converted to a hash. Since hashes are unsorted in Ruby 1.8, we
can't predict which file will get picked as the "first file". Therefore,
avoid making such a test.

This means that applying patches from gists that have multiple files in
them will have unpredictable results on Ruby 1.8.
Update GitHub project URL in standalone build
Use `--disable-gems` in hub shebang if current Ruby supports it

Since hub doesn't have any gem dependencies, skipping RubyGems speeds up
execution.
Bake detailed version information into standalone executable

Sine some people will be building hub from a branch in git (typically
master) between releases, it will be useful for both them and me to know
which exact version they built from.

This makes it so that `hub version` will display detailed version info:
- the last tag
- number of commits since that tag
- the commit SHA at the time of the build

Example:

    $ rake hub
    $ ./hub version
    hub version 1.10.6-116-gd784af9
Have fakebin error messages go to stderr

Fixes silencing such errors in tests
Add test for standalone script that verifies it's valid Ruby

Execute the `hub version` command to confirm that the standalone script
doesn't have any syntax or load error, and that it can execute a simple
command that shells out to git.
Reimplement CGI and URI modules for loading speed

Simply requiring "cgi" takes ~4 ms, while "uri" can take ~18 ms on Ruby
2.0.0, because loading either module results in Ruby interpreter having
to parse a huge amount of code, most of which is not needed for our
purposes.

For instance, we only use `CGI.escape` and `CGI.unescape`, and this
change provides a small replacement module that loads fast.

This also provides a lightweight URI::HTTP replacement that's able to
parse simple URLs. For the purpose of representing URLs of git remote
and handling API communication, this should be enough.
Fix stubbing that CGI & URI modules are loaded in Ruby 2.0.0

Simply adding e.g. "uri.rb" to $LOADED_FEATURES ($") does the job in all
Rubies prior to 2.0.0. However, 2.0 will happily load "uri.rb" from
stdlib when a next `require "uri"` ocurrs, seemingly ignoring the state
of $".

I have NO IDEA how immediately trying to `require` works here, but it
does the job of preventing the actual load of "uri.rb" immediately and
in the future as well.
Speed up hub execution in cukes by skipping RubyGems
Speed up load time by avoiding loading YAML

Due to its sheer size, requiring YAML takes ~21 ms on Ruby 2.0.0. To
handle hub's very simple config format, we won't need most of YAML's
features, so we can afford to reimplement YAML just for the syntax we
need to support the existing config format.
Avoid loading FileUtils; reimplement `mkdir_p`

Loading FileUtils can take more than 10 ms on Ruby 2.0.0, making the
require extremely wasteful for the purpose of just using a single method.
Include head SHA in version info if tags are not available

When building hub from a git repository, the detailed version
information will get built into the executable courtesy of
`git describe --tags`. However, if tags are not available in the
git repo--for instance, in the case of Homebrew install from git--this
at least embeds the current SHA in version information.
Merge branch 'backport-master' into 1.10
Update History