Display last buildable in closed Differential revision

Right now when a Differential revision is automatically closed by a commit pushed upstream, Phabricator seems to update its content to the content of last commit (which sometimes leads to annoying effects, but that’s another story) and also hides last builds from Harbormaster and replacs Lint/UT with Automatic diff as part of commit; lint not applicable

For our build engineers investigating broken builds, this from time to time brings up conversations like,

BE: Why did you push revision while it was not checked by CI?!
Dev: But it was checked OK, check the last diff before This revision was automatically updated to reflect the committed changes message.
BE: Oh, right, seems we should add this check to CI too

While this behavior does not immediately break anything, it misleads people rather regularly to be noted. Is there a way to keep last Buildable results and links in Revision even after it was closed?

This is something I’d like to fix. I think there’s some similar discussion in the support ticket system somewhere that hasn’t actually made it upstream formally, but https://secure.phabricator.com/T13110 mentions some adjacent changes, including one very similar one (“preserve ‘accept’ state across automatic updates”).

Since this is pretty minor and entangled with various other issues which make the scope larger than just fixing it, I have no clue what the timeline is, though.

(You can review the previous build status by manually diffing the last human diff against the base diff in the “History” tab.)

Any hints on what we could probably tweak in our forked code to get it working?

I doubt there’s any change other than the obvious one (“if the visible diff is an automatic update, load the previous diff’s test results instead”).

This is probably somewhat messy because the “Build Status” information is modular but not well-formalized (see https://secure.phabricator.com/T13019) which probably means you get the worst of both worlds (not enough real modularity to easily generalize a solution, too much modularity to slip in a quick hack without breaking something).

1 Like