Comment 0 for bug 396523

Revision history for this message
Stuart Langridge (sil) wrote : "Link a related branch" UI is impossibly horrid to use

The UI to link a related branch to a bug is hilariously unusable, in my experience. I am presented with a text box and no indication what should be entered into that textbox (a full HTTP URL of the branch to link? an lp:~whoever/project/branch string? A ~whoever/project/branch string?), and a "Choose" link. The Choose link presents me with a search box. Searching in the search box doesn't seem to work very well (for example, if trying to find my (~sil) branches on the bindwood project, "~sil/bindwood" doesn't find anything, "~sil bindwood" doesn't find anything, and "sil bindwood" doesn't find anything). I suggest that when linking branches, I am likely to want to choose branches from the following lists, in descending order of preference:

1. Branches by me, in the same project as the bug, which have not been merged, in descending order of most-recently-pushed
2. Branches by anyone, in the same project as the bug, which have not been merged
3. Branches by anyone, in the same project as the bug, which have been merged
4. Branches by anyone in any project

It seems rare to me that I would be as likely to link (a) a branch by me in this project which is unmerged and (b) a branch by someone else in an unrelated project which was merged three years ago, but the current UI gives these equal weight.

These options could be implemented as "tabs" in the existing "choose" popup, or, better still, the existing textbox could be replaced with the Choose UI. Since directly entering a branch may still be useful, a fifth tab should allow for that. So, proposed new UI:

1. Branches by me, in the same project as the bug, which have not been merged, in descending order of most-recently-pushed
+----------------------------------------------+
| Choose a branch |
+-----------------+---------+-------+----------+
| Mine | Others | Merged | Any | Specific |
+ +---------+---------+-------+----------+
| Your unmerged branches for THISPROJECT |
| ~sil/thisproject/branchname1 |
| ~sil/thisproject/branchname2 |
| ~sil/thisproject/branchname3 |
+----------------------------------------------+

2. Branches by anyone, in the same project as the bug, which have not been merged
+----------------------------------------------+
| Choose a branch |
+-----------------+---------+-------+----------+
| Mine | Others | Merged | Any | Specific |
+-------+ +---------+-------+----------+
| Everyone's unmerged branches for THISPROJECT |
| ~somedude/thisproject/code-to-do-stuff |
| ~otherdude/thisproject/whatever |
| ~otherdude/thisproject/more-code |
+----------------------------------------------+

3. Branches by anyone, in the same project as the bug, which have been merged
+----------------------------------------------+
| Choose a branch |
+-----------------+---------+-------+----------+
| Mine | Others | Merged | Any | Specific |
+-------+---------+ +-------+----------+
| Everyone's merged branches for THISPROJECT |
| ~somedude/thisproject/wrote-this-ages-ago |
| ~otherdude/thisproject/january-2007 |
+----------------------------------------------+

4. Branches by anyone in any project
+----------------------------------------------+
| Choose a branch |
+-----------------+---------+-------+----------+
| Mine | Others | Merged | Any | Specific |
+-------+---------+---------+ +----------+
| Search for a branch |
| [ ] |
| |
+----------------------------------------------+

Note that the search here should be changed to do substring searches on full branch name, and AND together tokens separated by whitespace in the query (so searching for "sil bindwood" would find a branch named lp:~sil/bindwood/whatever).

5. Specific branch by name/URL
+----------------------------------------------+
| Choose a branch |
+-----------------+---------+-------+----------+
| Mine | Others | Merged | Any | Specific |
+-------+---------+---------+-------+ +
| Enter a specific branch |
| (URL, lp:~person/project/branch, or |
| ~person/project/branch) |
| [ ] |
| |
+----------------------------------------------+