Removed a catch for an exception that shouldn't be caught and eaten. Fail fast.
Fixed an SVN bug introduced in the last commit by exposing an exception that was caught and eaten before

Basically in a previous changed I removed an exception catch for 'Not a valid URL'. Turns out that the misc.rb is_directory() method relied on the exception being eaten.
This commit adds proper exception catching for this now exposed error message and handles it correctly.
OTWO-579 Use read-only URLs when possible

If the user supplies a read-write Github URL, transparently substitute a
read-only URL. This avoids an unwanted (and unhandled) password prompt.
OTWO-623 Fixes incorrect list of diffs for null git merges

Whenever a git merge commit has a resulting tree identical to its
first parent's tree, the list of diffs should be empty.

However, a bug in our commit parser caused us to return the set of
diffs relative to the second parent, instead of the correct empty list.

I could not invent a method to force `git whatchanged` to do what we
want, so I surrendered, and instead I manually patch the result after
the fact.
OTWO-208 Ignore 'fatal signal 11' from all CVS servers

We have always ignored 'fatal signal 11' when it is returned from
eclipse.org in response to a `cvs ls` command. We do this because
eclipse.org *always* returns this error, even when everything is OK.

As it turns out, more CVS servers than just eclipse.org do this. There
is probably a particular version or configuration of CVS that causes
this.

The result is that many CVS repositories cannot be processed by Ohloh
because we treat these errors as fatal.

Let's simply accept 'fatal signal 11' as standard operating procedure,
and always ignore it when it is returned by `cvs ls`.
OTWO-627 Escape '$' characters in hg filenames
OTWO-840 Removes redundant log query from BzrAdapter.cat_file_parent

This patch allows BzrAdapter to process repositories that include ghost
commits, and should also improve line count performance considerably.

BzrAdapter's cat_file_parent() was needlessly complicated. To determine
the revision ID of a parent commit, we would request the log for that
commit -- using the revision ID! -- and then parse the revision ID from
the resulting log fragment. This work was completely pointless.

Worse, in the case of a ghost commit, the parent commit is not actually
present in the repository. This would cause the log request to fail, and
thus cat_file_parent() would fail.

Ohloh doesn't actually care what the ghost commit contains; we were
trying to read it simply to find its ID (which we already know, and
worse, won't use). By removing the redundant ID lookup, Ohloh can
successfully process repositories that contain ghost commits.

I spent some time trying to create a test repostiory that includes a
ghost commit, but this is rather involved. You can't do it using the bzr
CLI alone. The most common source of ghost commits seems to be some
complex interaction with bzr svn-import.

I manually verified that this fix works with repository `lp:bzr` itself,
which has a ghost commit as a parent of revo 897.
Initial Bazaar XML log parser and basic tests.
Fixed message and token parsing, added basic test.
Fixed processing multiple file elements under one Op element.

Eg
  <modified>
    <file..
    <file..
  <modified>
  should create two diff records.
Updated to include BzrXmlParser.
Adds sample bzr logs for testing.
Fixes duplicate merge commits.
Yields merge commit on </log> tag and not </merge> tag.
Fixes commits and commit_tokens method to use xmllog.
Fixes tests, to accomodate correct branch/merge commit ordering.

Funny business with commit ordering has been fixed by BzrXmlParser.
Now, when we request that Bzr iterate commits in the '--forward' direction,
we correctly get the branch commits *before* the merge that brought them in.
Fixes tests to match xmllog output.
After log parsing, commit messages don't have trailing newline anymore.
Fixes parsing of multi-level nested branch/merge.
Adds bzr_with_nested_branches repository for tests that has two
level nested branching and merging.
Removes debugging code.
Fixes empty log file to be empty xml file.
Replaces systemu with a newer version of open4; uses threads to start reading stdout/err immediately.