git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Detecting pushes originating from shallow clones?

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 30, 2015, 22:52 UTC
Message-ID
<xmqqr3j76qxp.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<147913FA-1158-40BE-8365-B90E3CBD79C7@heroku.com>
Owen Jacobson <ojacobson@heroku.com> writes:
Show 17 quoted lines
> 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?

Hmm, I would have suggested to set receive.fsckObjects which has been around since early 2008 (it is in v1.5.6, so it would likely be in v1.9.1 as well).

But even without that configuration set, "push" shouldn't leave the receiving repository in an inconsistent state (e.g. incomplete repository, gaps in history) in the first place.

Does anybody recall us having such a bug in the distant past in 1.9.1 and fixing it? I do not offhand recall but I wouldn't be surprised.

Show 7 quoted lines
> 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 ...

Actually, that (with "--objects" option) is essentially the test the receiving end does internally to detect the "gaps in history" when receive.fsckObjects configuration is set.

Previous: Owen JacobsonNext: Owen Jacobson
Message 2 of 3 in “Detecting pushes originating from shallow clones?”
  1. Owen JacobsonNov 30, 2015
  2. Junio C HamanoNov 30, 2015
  3. Owen JacobsonNov 30, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.