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

wants to merge 4 commits into


None yet

2 participants

ehsan commented Aug 22, 2011

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 commented Aug 23, 2011

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
durin42 commented Sep 5, 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