GitHub Rejects Multiple-Authors Commits

UPDATE: GitHub replied to my inquiry (that was fast!). It appears the FreeSWITCH repository has some corrupted commits. The command “git fsck” indicates an error as well with a couple of commits with multiple authors. GitHub seems to be performing (rightly so) verification on push.

I am a fan of GitHub and that made it even more shocking for me when I found out that it seems GitHub has problems accepting git commits with multiple authors in it.

Have a look at this commit from the FreeSWITCH repository:

The commit looks pretty harmless in itself, but using git cat-file or git show you can see that there are 2 authors:

moy@sigchld test_clone (test_clone) 
$ git cat-file -p 487128950df6ee433c131b5feaafe81ee86629f4
tree 070633dfc3ea352dfb1094822f477111e519a9ca
parent cde20f6fe68523d9416d2fed72435a8ba880a269
author Travis Cross  1395382322 +0000
author Anthony Minessale  1394747953 +0500
committer Travis Cross  1395665690 +0000

Use the system version of APR / APR-util if possible

Autodetect whether the system libapr / libaprutil has our
necessary modifications and use it if it does.

And surprisingly, GitHub barfs when pushing a branch that contains that commit:

moy@sigchld test_clone-2.0.2 (test_branch) 
$ git push moy test_branch
Counting objects: 14905, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3345/3345), done.
remote: error: object 487128950df6ee433c131b5feaafe81ee86629f4:invalid format - expected 'committer' line
remote: fatal: Error in object
error: pack-objects died of signal 13
error: failed to push some refs to ''

Every other git server I’ve tried (gitlab, gitolite, stash) accepts the commit. It would seem GitHub has some sort of hook that is not expecting two author lines one after the other and it’s expecting a “committer” instead right after the first author.

I’ve sent a support note to GitHub, hopefully they’ll fix this one.

This entry was posted in git. Bookmark the permalink.

2 Responses to GitHub Rejects Multiple-Authors Commits

  1. Moises Silva says:

    Thanks for the clarification Michael, that’s exactly what I learned after digging further into this and seeing the response from github

  2. Michael Haggerty says:

    Git itself doesn’t allow commits with multiple authors, as you will see if you run `git fsck` on your repository:

    $ git fsck
    Checking object directories: 100% (256/256), done.
    error in commit 487128950df6ee433c131b5feaafe81ee86629f4: invalid format – expected ‘committer’ line
    error in commit 8574988c3a378b4d5861ecaeb0e958657635703b: invalid format – expected ‘committer’ line
    Checking objects: 100% (251031/251031), done.

    It might be that some Git commands accidentally work with these invalid commits, but others will fail. For example, if you rebase that commit, the second author will be lost.

    So I think this is a case of GitHub doing consistency checks on what is pushed, whereas the other sites don’t.

Leave a Reply

Your email address will not be published. Required fields are marked *