Browser back button when creating Merge Requests from Issues can cause the Merge Request title to no longer be based on the Issue
Summary
When creating a Merge Request from an Issue the title of the merge request is typically pre-filled by inheriting the title of the issue it was created from. Certain flows a user can go through in their browser can instead cause this to break, where instead the Merge Requests are raised using the last commit message for one of the involved branches, instead of the related issue title.
Steps to reproduce
-
Create a new project. For the sake of this example, enable
Initialize repository with a README
upon creation. -
Perform a commit into a new branch. For example, a branch named
dev
with the commit message ofdev-commit
. -
Set the
dev
branch as the repository default branch. -
Create a new issue within the project, For the example, use the title
test_issue
. -
Click
Create Merge Request
on the issue. You should see theNew Merge Request
page. Here you can see a new branch1-test_issue
has automatically been created, and the branch flow showsFrom 1-test_issue into dev
The Merge Request title has also been prefilled to use the issue title, where it's set asDraft: Resolve "test_issue"
. -
Hit the back button within the web browser at this point until you're returned to the issue page.
-
Now, click the arrow next to
Create merge request
to view the dropdown menu, and set theSource (branch or tag)
to be a different branch. In this example we usemain
. What you'll notice here is that theBranch name
is still set to the previously created branch1-test_issue
and it statesBranch name is available
- and the value entered into this field does not seem to be actively checked unless you start to modify it. ClickCreate merge request
. -
You can see on the
New merge request
page, the previously created branch1-test_issue
has been re-used, and theTitle
for the Merge Request isn't based on the Issue title anymore, instead it's prefilled to the last commit message for thedev
branch. -
The same behavior occurs if at step 5 instead of going back to the issue page, you click
Change Branches
on theNew Merge Request
screen, and selectmain
as the target branch then clickCompare branches and continue
. The merge request title will not be prefilled based on the issue it relates to, it'll instead use the last commit message for thedev
branch.
What is the current bug behavior?
-
Depending on the order of operations, it's possible to raise a merge request from an issue, where it doesn't inherit/prefill the issue title for the merge request title as expected.
-
There may be multiple problems here, one of which being that when you go backwards to the issue from the merge request using the browser back button, the next time you try to create the merge request, it still prefills the
Branch name
for the branch that was previously created and will allow you to clickCreate merge request
unless you actively try to change the value of theBranch name
field. For example in this gif you can see at first theCreate merge request
button is clickable when theBranch name
is1-test-issue
, but if we go into thatBranch name
field and add a character and then remove it, it'll actively check for the presence of a1-test_issue
branch, and saysBranch is already taken
- which then stops the user from being able to clickCreate merge request
.
-
An interesting behavior to note though, is that if you replicate this same behavior when just using a new project with the default branch left as
main
, and use a different branch for theSource
- the subsequent merge request in that scenario does actually inherit the issue title. -
Simply refreshing the issue page before creating the new merge request seems to workaround the bug, where when you do this it does detect that the previously created branch
1-test_issue
exists, and a new one gets created. Creating a merge request with theSource
set tomain
will then correctly prefill the merge request title based on the issue title.
What is the expected correct behavior?
- The expectation is that if the Merge Request is created from an issue, it should consistently perform the title inheritance/prefill based on the issue title.
Output of checks
In testing, this behavior was replicated on:
- Self Managed - GitLab Enterprise Edition v16.8.0-ee
- Self Managed - GitLab Enterprise Edition v16.7.3-ee