Page MenuHomePhabricator

Allow repo updates to recover after force push + garbage collection
ClosedPublic

Authored by epriestley on Aug 11 2014, 11:08 PM.
Tags
None
Referenced Files
F14043637: D10226.diff
Tue, Nov 12, 11:50 AM
F14019040: D10226.id24634.diff
Tue, Nov 5, 9:28 PM
F14019039: D10226.id24607.diff
Tue, Nov 5, 9:28 PM
F14019038: D10226.id.diff
Tue, Nov 5, 9:28 PM
F14016439: D10226.diff
Mon, Nov 4, 9:49 AM
F14011111: D10226.id.diff
Thu, Oct 31, 6:20 PM
F13995627: D10226.id.diff
Wed, Oct 23, 2:20 PM
F13977813: D10226.id24607.diff
Oct 18 2024, 8:12 PM
Subscribers

Details

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.

Diff Detail

Repository
rP Phabricator
Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

epriestley retitled this revision from to Allow repo updates to recover after force push + garbage collection.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added a reviewer: btrahan.
btrahan edited edge metadata.
This revision is now accepted and ready to land.Aug 12 2014, 7:05 PM
epriestley updated this revision to Diff 24634.

Closed by commit rPec9eaabfbdac (authored by @epriestley).