Improve hg-git's author/committer parsing to match what git expects #230

wants to merge 4 commits into


None yet

2 participants


I found out about this problem when converting Mozilla's hg repository to git.

The way that git parses the author/commiter lines is that it looks for the first less-than character, and expects that to start the email address, and then it looks for the next greater-than character, and it then expects everything following that character to be parsed as a date.

hg-git's output doesn't completely match that expectation. For example, for this revision, the author is "", which makes hg-git generate a author line like this:

author none@none 123456000 +0000

Which git fails to parse. Another example is this revision, where there is no space between the username and the email, which creates an author line like this:

author Ms2ger 123456000 +0000

And you can see how that would confuse git!

With the fixes in this pull request, hg-git can generate better commit objects, that git can actually deal with. I managed to convert the entire hg history of mozilla-central to git with these patches.


ehsan@04a37b4 also fixes another instance of this problem, for commits like

@ehsan ehsan closed this Aug 23, 2011
@ehsan ehsan reopened this Aug 23, 2011

Can you add some tests for this? I'm hesitant to pull this without corresponding tests. I'm also skeptical of the correctness of get_valid_git_username_email() - couldn't that fail if the username was something like " " or some other broken thing?

When you're ready, I'd greatly prefer patches mailed to the hg-git Google Group - it's easier for me to review and apply them there than on a pull request here.


@durin42 durin42 closed this Sep 5, 2011
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment