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

Closed
wants to merge 4 commits into
from

Conversation

Projects
None yet
2 participants
@ehsan
Contributor

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 hg.mozilla.org/mozilla-central/rev/a537a070dbf40081e1d32321924b6589b271574e, the author is "Ms2ger@gmail.com", which makes hg-git generate a author line like this:

author Ms2ger@gmail.com none@none 123456000 +0000

Which git fails to parse. Another example is this revision http://hg.mozilla.org/mozilla-central/rev/e88d2327e25d600ce326615f682db1d79d2bb10e, where there is no space between the username and the email, which creates an author line like this:

author Ms2ger<Ms2ger@gmail.com <Ms2gerMs2ger@gmail.com 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

This comment has been minimized.

Show comment
Hide comment
@ehsan

ehsan Aug 23, 2011

Contributor

ehsan/hg-git@04a37b4 also fixes another instance of this problem, for commits like https://hg.mozilla.org/mozilla-central/rev/e751acb410d0

Contributor

ehsan commented Aug 23, 2011

ehsan/hg-git@04a37b4 also fixes another instance of this problem, for commits like https://hg.mozilla.org/mozilla-central/rev/e751acb410d0

@ehsan ehsan closed this Aug 23, 2011

@ehsan ehsan reopened this Aug 23, 2011

@durin42

This comment has been minimized.

Show comment
Hide comment
@durin42

durin42 Sep 5, 2011

Collaborator

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 " foo@example.com " 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.

Thanks!

Collaborator

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 " foo@example.com " 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.

Thanks!

@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