Homec4science

Allow repo updates to recover after force push + garbage collection

Authored by epriestley <git@epriestley.com> on Aug 12 2014, 21:25.

Description

Allow repo updates to recover after force push + garbage collection

Summary:
Fixes T5839. If a repository has been force pushed and garbage collected, we might have a ref cursor in the database which still points at the old commit (which no longer exists).

We'll then run a command like git log <new hash> --not <old hash> to figure out which commits are newly pushed, and this will bomb out because <old hash> is invalid.

Instead, validate all the <old hash> values before we try to make use of them.

Test Plan:

  • Forced a repository into a bad state by mucking with the datbase, generating a reproducible failure similar to the one in T5839.
  • Applied patch.
  • bin/repository update <callsign> --trace filtered the bad commit and put the repository into the right state.
  • Saw new commits recognized correctly.
  • Ran bin/repository update <callsign> for a Mercurial and SVN repo as a sanity check.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T5839

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

Details

Committed
epriestley <git@epriestley.com>Aug 12 2014, 21:25
Pushed
aubortJan 31 2017, 17:16
Parents
rPH394250397ec4: Improve "unblock task" feed stories
Branches
Unknown
Tags
Unknown

Event Timeline

epriestley <git@epriestley.com> committed rPHec9eaabfbdac: Allow repo updates to recover after force push + garbage collection (authored by epriestley <git@epriestley.com>).Aug 12 2014, 21:25