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)
Mon, Apr 29, 3:49 PM
Unknown Object (File)
Wed, Apr 24, 11:46 PM
Unknown Object (File)
Mon, Apr 22, 2:28 AM
Unknown Object (File)
Sun, Apr 14, 11:01 PM
Unknown Object (File)
Apr 2 2024, 7:04 AM
Unknown Object (File)
Feb 19 2024, 2:55 AM
Unknown Object (File)
Feb 16 2024, 6:45 PM
Unknown Object (File)
Feb 6 2024, 8:08 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).