Homec4science

When a ref is moved or deleted, put it on a list; later, check for reachability

Authored by epriestley <git@epriestley.com> on Jun 16 2016, 19:08.

Description

When a ref is moved or deleted, put it on a list; later, check for reachability

Summary:
Ref T9028. This allows us to detect when commits are unreachable:

  • When a ref (tag, branch, etc) is moved or deleted, store the old thing it pointed at in a list.
  • After discovery, go through the list and check if all the stuff on it is still reachable.
  • If something isn't, try to follow its ancestors back until we find something that is reachable.
  • Then, mark everything we found as unreachable.
  • Finally, rebuild the repository summary table to correct the commit count.

Test Plan:

  • Deleted a ref, ran pull + refs, saw oldref in database.
  • Ran discover, saw it process the oldref, mark the unreachable commit, and update the summary table.
  • Visited commit page, saw it properly marked.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T9028

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

Details

Committed
epriestley <git@epriestley.com>Jun 16 2016, 20:21
Pushed
aubortJan 31 2017, 17:16
Parents
rPH02d7bb8604f3: Add "bin/repository mark-reachable" for fixing commit reachability flags
Branches
Unknown
Tags
Unknown

Event Timeline

epriestley <git@epriestley.com> committed rPH1c63ac6a3adf: When a ref is moved or deleted, put it on a list; later, check for reachability (authored by epriestley <git@epriestley.com>).Jun 16 2016, 20:21