Description
CommonRevInfoDAO.updateBranchHead() sets what revisions of a file it thinks is the head on a specified branch, updating the CommonSchema.E_HEAD_IN_ANY_BRANCH_REVIDS and CommonSchema.E_HEAD_IN_BRANCH_TO_REVID indices.
Write tests for hg:
multiple heads: a file can have two head-like file revs on a branch - both must be cleaned up on a merge
branch creation: A filerev can be a head on a new branch, but its ancestor is still a head on another branch. On branch creation, (CRUC-3809) files that are part of that branch manifest may not be head-like - so branch creation needs to be detected and all file revs in the manifest marked as head-like.
branch merge/close: All filerevs in the closed branch need to be made non head-like
branch reopen: All filerevs in the branch need to be made head-like
Focus on hg, but create new JIRA's for git(CRUC-3812)/p4/cc where we detect they will have problems.