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
Unknown Object (File)
Sat, Dec 7, 3:17 AM
Unknown Object (File)
Mon, Dec 2, 11:11 PM
Unknown Object (File)
Fri, Nov 22, 7:51 PM
Unknown Object (File)
Wed, Nov 20, 2:41 PM
Unknown Object (File)
Nov 19 2024, 6:27 PM
Unknown Object (File)
Nov 12 2024, 11:50 AM
Unknown Object (File)
Nov 5 2024, 9:28 PM
Unknown Object (File)
Nov 5 2024, 9:28 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).