HomePhabricator

Add a heursitic for initial pushes which are really imports

Description

Add a heursitic for initial pushes which are really imports

Summary:
Fixes T7298. There are two ways to import a repository that you want to host, today:

  • Create it as "hosted", then push everything to it.
  • Create it as "imported", let it import, then switch it to "hosted".
  • (Neither of these work with SVN.)

We don't specifically recommend one or the other, although I believe both should work, and most users seem to go with the first one.

In the first workflow, the new empty repository imports completely and gets marked "imported", so our default behavior is then to publish commits. This can generate a lot of email/notification/feed spam.

If you're a fancy expert you might turn off "publish" before pushing, but normal users will frequently miss this.

Instead, when we receive an "import-like" push to an empty repository, put the repository back into "importing" after we accept the changes.

This has to be heuristic since we can't know for sure if a push is an import or new commits, but here's a simple rule that should do pretty well. We can refine it if necessary.

Test Plan:

  • Created a new empty repository.
  • Added some debugging code; verified the "commit count" and "empty" rules were calculated properly.
  • Pushed 8+ commits and saw the repo go into "importing", import, and leave "importing".
  • Pushed 8+ commits again and saw them publish.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T7298

Differential Revision: https://secure.phabricator.com/D11827