Detecting pushes originating from shallow clones?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi folks,

Here at Heroku, we ingest code from users by supplying them with a Git server they can `git push` into. Occasionally, users will attempt to push to us from a shallow clone, which causes numerous problems for us and, often, for our users (incomplete repositories, gaps in history, failed builds, and a host of other problems). We’ve been investigating what we can do to give these users clearer advice on how to fix the problem.

Within the constraints that

* we cannot control which version of Git our users have installed, and
* we run Git v1.9.1, obtained from the Ubuntu 14.04 LTS .deb repositories

what can we do in an update/pre-receive hook to detect that an incoming push originates from a shallow repository and reject it?

Right now, the best strategy we have is to observe whether

    git rev-list OLD NEW

fails, and if it does fail, whether the stderr output includes the phrase "revision walk setup failed”. This feels like a fairly weak fix, so I thought I’d see if anyone here has a better idea.

Thanks,

-o

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]