Page MenuHomePhabricator

Render "arc markers" workflows as a tree, not a list
ClosedPublic

Authored by epriestley on Jun 17 2020, 2:50 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Nov 19, 4:57 AM
Unknown Object (File)
Mon, Nov 18, 6:08 AM
Unknown Object (File)
Thu, Oct 31, 1:32 AM
Unknown Object (File)
Oct 21 2024, 6:39 AM
Unknown Object (File)
Oct 15 2024, 5:38 PM
Unknown Object (File)
Oct 9 2024, 1:35 PM
Unknown Object (File)
Oct 9 2024, 1:35 PM
Unknown Object (File)
Oct 9 2024, 1:35 PM
Subscribers
None

Details

Summary

Ref T13546. Currently, each "land" workflow executes custom graph queries to find commits: move toward abstracting this logic.

The "land" workflow also has a potentially dangerous behavior: if you have "master > A > B > C" and "arc land C", it will land A, B, and C. However, an updated version of A or B may exist elsewhere in the working copy. If it does, "arc land" will incorrectly land an out-of-date set of changes.

To find newer versions of "A" and "B", we need to search backwards from all local markers to the nearest outgoing marker, then compare the sets of changes we find to the sets of changes selected by "arc land".

This is also roughly the workflow that "arc branches", etc., need to show local markers as a tree, and starting in "arc branches" allows the process to be visualized.

As implemented here ,this rendering is still somewhat rough, and the selection of "outgoing markers" isn't good. In Mercurial, we may plausibly be able to use phase markers, but in Git we likely can't guess the right behavior automatically and probably need additional configuration.

Test Plan

Ran "arc branches" and "arc bookmarks" in Git and Mercurial.

Event Timeline

This revision was not accepted when it landed; it landed in state Needs Review.Jun 30 2020, 10:50 PM
This revision was automatically updated to reflect the committed changes.