Page MenuHomePhabricator

Phabricator should store the text used in arc diff when creating a revision
Closed, DuplicatePublic

Description

Currently, when looking at a review, it is hard to know the context of where an author intends to land this review. This information is crucial in an environment where a team is managing multiple release branches that will never converge, not just master.

Arcanist has this information available when someone types "arc diff <thing>". As I understand it, Arcanist find the merge base between <thing> and current HEAD and saves that to Phabricator (which can be fetched on a diff as the sourceControlBaseRevision of a diff). It would be nice if phabricator also stored the original <thing> string and exposed it in the UI and the differential conduit API. Another issue that we have is that we rely on the branch name to know which SDK to use to build our projects and we need this information to be able to build properly in Jenkins. We currently end up having to do a git branch --contains <merge-base> and build all the relevant branches that appear their after having patched with the changes from the review.

Event Timeline

jcarrillo7 updated the task description. (Show Details)
jcarrillo7 added projects: Arcanist, Differential.
jcarrillo7 added a subscriber: epriestley.
jcarrillo7 added a subscriber: jcarrillo7.

@epriestley I think this a quick and reasonable ask to incorporate into Arcanist and Phabricator. Do you agree/ see any potential issues?

@jcarrillo7: to your implementation suggestion: <thing> may be something really complex, and can be empty (It will default to the remote-tracked branch by default, but you can redefine that).

@avivey I understand the concern here with how complex that <thing> can actually be but I feel that arcanist is dropping information that is useful. I would go as far as to say that Phabricator should store the plain <thing> that the author used (the intent of the author), and the more complex version of <thing> that Phabricator might actually care about like in T3462. Overtime it may impossible to go from one to the other. Ex. If you Phabricator were to store <thing> as a commit hash, and <thing> was originally a reference to a branch HEAD, looking back you may not be able to figure out which branch was originally meant by the commit hash since that commit can appear in multiple branches later on. This feels important to me seeing as how branches are the main way of organizing repositories by users (along with tags etc) and may represent something important in a project (like when building). Sorry for the rant haha.