Branches and Revisions
The links between branches and revisions are currently (Sep 2010) handled using the BranchRevision table. There is one row in this table for every revision in the branch. This is mildly insane for the number of feature branches that we encourage projects to use as the vast majority of the revisions are common to the branches.
Consider the Launchpad project itself. There are over 90k revisions in the ancestry, so every branch adds 90k rows to the BranchRevision table.
Before we can simplify, reduce and clean up this relationship, we need to understand what the entries are used for.
Uses for the BranchRevision table.
- Branch page
- shows the recent commits for any given branch, up to 10, and includes those already in trunk
- Merge proposal page
- unmerged revisions (up to 10 - confusing ui)
- commits since the start of the review
- Finding the most relevant branch for any given revision (primarily used in the revision feeds)
- Allocating revision karma