A large iteration on Differential/Diffusion/Arcanist is looming but difficult to get traction on, so I'm going to write a lot of words about it until I get tired, then take a nap and hope the answers come to me in a dream.
- The planned Arcanist changes are summarized in T11429.
- The Diffusion changes are primarily T5000, plus untangling the mess of forking / "push to save changes".
- The Differential changes support the other changes, plus infrastructure changes (like T11114).
All of this stuff is interlinked and planning a pathway through it is difficult.
Here are pending, pure-infrastructure changes in Differential. These are mostly actionable, but will cause some upgrade churn for installs and some of it touches APIs that Arcanist uses:
- T4045: Store diffs as binary, not UTF-8 / T8623: Upgrading: Differential Hunk Migration / T8475: Clean up remnants of old Differential hunk storage
- T10967: Move Differential reviewers back to a dedicated database storage table
- Maybe T11660: Diff creation fails when submitting too long file paths while we're here?
- Maybe T7899: DifferentialDiff->description is "text255?" but should be "text" too?
- With other T6203: Adjust nullability of various questionable columns stuff?
- T11114: Move Differential to EditEngine
- Also: T10968: File write failure during daemon operations caused daemons to populate a few too many diffs
These are Differential product changes which fall out of that stuff:
- T10574: A pathway toward "All Reviewers Must Accept"
- T4631: Allow Differential to raise warnings on the server side via Conduit? Unsure?
- T2543: Add a formal "Draft" / "Not Yet Ready for Review" state to Differential (also needs infrastructure changes)
- Revisions from branches/refs.
- T11050: Allow resigning from a review you are not directly responsible for
- Chain of custody for T182: Commit into repository directly from differential?
- Broadly leads into T5000: Using Differential with plain Git, without requiring Arc.
- More granular accept rules in T10939: Support for OWNERS files.
Here are pending, pure-infrastructure changes in Diffusion.
- T4369: Phabricator HTTP repository hosting has fairly severe scalability limits
- T10978: Modernize Audit but this is probably not entangled, at least mostly? Also T3794: Rebuild Diffusion/Audit on top of CustomField infrastructure which I think we don't need either?
- T8476: Rename `phabricator_repository` database, but maybe this is just "wontfix".
- T8690: Modernize PhabricatorCommitSearchEngine, but not entangled.
- The general mess of T6522: "Commit's branches contains" condition is not re-evaluated for commits in multiple branches, which we probably resolve with T11953: Herald rule for commits on autoclose branch didn't trigger when a commit was first pushed to a branch, then to master (fast-forward)
- This leads into all the virtual ref stuff but I think we can layer it on top later?
- I think we have some issues with 6000-character SHIFT-JIS paths?
And product changes:
- T929: Allow two arbitrary revisions to be compared in Diffusion (sort of works now)
- T6722: Support "Create similar repository..." in Diffusion, maybe, which is really "EditEngine defaults for forms with multiple pages" and not really entangled.
- T7472: Search repositories using a dedicated index for performance (and SVN support) but this is definitely not entangled.
- T9713: In Diffusion, show commit messages as parsed fields by default with an option to view them raw seems likely.
Arcanist stuff mostly layers on top of these things? Maybe?
I've been attacking this mostly from the arc side but Differential may be a better flank to strike.