Page MenuHomePhabricator

Fix an issue where ancestors of permanent refs might not be published during import or if a branch is later made permanent

Authored by epriestley on Sep 25 2019, 3:48 PM.



Fixes T13284. See that task for substantial discussion. There are currently two cases where we'll skip over commits which we should publish:

  • if a branch is not permanent, then later made permanent; or
  • in some cases, the first time we examine branches in a repository.

In both cases, this error is one-shot and things work correctly going forward. The root cause is conflation between the states "this ref currently permanent" and "this ref was permanent the last time we updated refs".

Separate these pieces of state and cover all these cases. Also introduce a "--rebuild" flag to fix the state of bad commits.

Test Plan

See T13284 for the three major cases:

  • initial import;
  • push changes to a nonpermanent branch, update, then make it permanent;
  • push chanegs to a nonpermanent branch, update, push more changes, then make it permanent.

Diff Detail

rP Phabricator
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

Owners added a subscriber: Restricted Owners Package.Sep 25 2019, 3:48 PM
This revision was not accepted when it landed; it landed in state Needs Review.Sep 25 2019, 3:54 PM
This revision was automatically updated to reflect the committed changes.