BlogsGitLabIssue and Merge Request Workflow Enhancements

Issue and Merge Request Workflow Enhancements

Issue and Merge Request Workflow Enhancements

33
posts
2014–2025

GitLab's issue and merge request workflows are enhanced with quick actions and description templates to streamline common tasks. This includes automating issue assignment, labeling, milestone setting, epic linking, and merge request draft status toggling, reviewer assignment, and rebasing. The integration of quick actions into description templates further automates these processes for issue creation and MRs. The GitLab VS Code extension is being developed to bring merge request review functions. The new Web IDE, built on VS Code, offers a more powerful and familiar interface for contributing, with features like collapsible panels, drag & drop support, find and replace, and an interactive terminal for remote development. It aims to reduce memory usage and improve reliability. Users can switch between the new beta and the previous Web IDE. Future plans include VS Code extension support and project-wide search.

2025

How we reduced MR review time with Value Stream Management

2/20/2025

This post details how GitLab engineers used Value Stream Management (VSM) and Value Stream Analytics (VSA) to identify and address bottlenecks in the Merge Request (MR) review process. They customized VSA by adding a new stage 'Review Time to Merge' to track time from reviewer assignment to MR merge. They utilized the Total Time Chart for visualization and the Stage Navigation Bar for deeper insights into individual MRs, identifying issues like reviewer assignment delays, slow review start times, multiple feedback loops, and idle time post-approval. This dogfooding experience is leading to the development of a new VSA event, 'Merge request last approved at', for more granular visibility into the review process.

2024

Tutorial: Integrate GitLab Merge Request approvals with external systems

10/8/2024

This post introduces and demonstrates the integration of external systems with GitLab Merge Request approvals using the 'External Status Check' feature. It details the deployment of a sample application that receives status check requests from GitLab, stores them, and provides an interface for external users to approve or reject these requests. The post also outlines the steps for configuring this external status check within GitLab and provides debugging tips for the deployed application.

How visualization improves the GitLab merge train experience

7/25/2024

Introduced merge train visualization for Premium and Ultimate tiers, providing users with a clear view of the merge train queue, including lists of queued and merged MRs. Enabled quick actions such as removing an MR from the train directly from the visualization. This feature aims to improve transparency, trust, efficiency, and collaboration within the merge train process.

Top 10 GitLab workflow hacks you need to know

4/9/2024

This post details several workflow enhancements within GitLab's issue and merge request functionalities. It highlights the ability to resolve comments on issues for better task management, the use of internal comments for private team discussions, and the utility of 'and/or' operators in filters for precise searching. It also covers auto-expanding URLs for context, quick actions for task automation, bulk editing capabilities for issues, epic swimlanes for visual progress tracking on boards, wiki diagrams for illustrating concepts, simplified table creation in the rich text editor, and the embedding of videos and GIFs for enhanced communication.

2023

How to adopt a cascading merge request strategy with GitLab Flow

8/31/2023

This post introduces the 'ucascade' bot and details its deployment on Kubernetes, configuration via a JSON file, and integration with GitLab webhooks. It describes how to set up project access tokens and configure the bot to automatically create cascading merge requests across release branches when a change is merged into a primary branch. This automates a previously manual and time-consuming process for applying fixes to multiple stable branches.

2022

A first look at the new GitLab Web IDE and remote development experience

12/15/2022

Introduces the new GitLab Web IDE beta, rebuilt on VS Code, offering a more powerful and familiar interface for contributing. Key improvements include a flexible interface, drag & drop in the file panel, find and replace, interactive terminal access with remote development capabilities, reduced memory usage, and improved reliability. It also allows users to switch between the new beta and the previous Web IDE. Future plans include VS Code extension support and project-wide search.

The Future of the GitLab Web IDE

5/23/2022

This post announces the decision to replace the current Web IDE with one built on top of VS Code. This involves integrating VS Code core into the GitLab UI, running entirely in the browser, and bundling the GitLab Workflow extension. The goal is to leverage VS Code's extensive features and extension ecosystem to provide a more powerful IDE experience within GitLab. The post also mentions plans to enhance the core editing component to support multi-file editing for simpler workflows.

2021

Why do GitLab designers contribute to the codebase?

3/17/2021

This post details how designers at GitLab contribute to the codebase by setting up their development environments (GDK, GitPod), migrating UI components (e.g., buttons), and submitting merge requests for UI changes. It highlights the development of shared empathy through direct code interaction, the diversification of skill sets by learning frontend frameworks and contributing code, and the use of merge requests for proposing specific changes. The author also mentions contributing to new features like 'UX reviewer/maintainer to Danger bot' and 'shortcut for collapsible section markdown'.

10 tips to make you a productive GitLab user

2/18/2021

This post introduces and details the use of GitLab's quick actions (prefixed with '/') and description templates to automate common workflows for engineering managers and developers. It covers quick actions for assigning users, applying labels, setting milestones, linking epics, toggling draft status on merge requests, assigning reviewers, approving merge requests, and rebasing branches. It also demonstrates how to embed these quick actions within description templates for issues, merge requests, and epics to further automate task completion.

How to do GitLab merge request reviews in VS Code

1/25/2021

This post details the development of the GitLab VS Code extension to integrate merge request review functionality into the editor. It covers the current read-only capabilities (viewing changes and discussions) and outlines future plans for interactive commenting, editing, reactions, and full review creation. The post also mentions the underlying VS Code Extension API and the use of Markdown in comments.

2020

A tale of two file editors

9/1/2020

This post details research into user preferences for the single-file editor versus the Web IDE, revealing distinct use cases for each. It proposes consolidating the 'Edit' and 'Web IDE' buttons into a dropdown menu to allow users to choose their preferred editor, carrying over changes between them. Mockups for this proposed UI change are provided.

2019

Issue labels can now be scoped!

6/20/2019

Introduced Scoped Labels, a feature that allows for mutually exclusive labels within a defined scope. This enables teams to create custom fields and workflow states, automatically removing conflicting labels when a new one is applied. This feature aims to accelerate delivery by preventing label conflicts and providing a basis for measuring work flow through the system.

How we delivered more performant and robust task lists in GitLab

4/5/2019

This post details the technical improvements made to GitLab's task lists to enhance performance and robustness. The core problem was slow and unreliable updates of task lists with many items, leading to data overwrites and long wait times. The solution involved a frontend modification to send only the clicked task's text and line number to the backend, and a backend change to verify and update only that specific line in the markdown source. This was achieved by using the `SOURCEPOS` flag of the CommonMark renderer to add `data-sourcepos` attributes to HTML, allowing Nokogiri to directly find and toggle the checked attribute in the cached HTML, bypassing full markdown rendering and significantly improving performance. Checkboxes were disabled during the request to prevent concurrent clicks on other tasks.

2018

Help us shape the future of design discussion in GitLab

11/8/2018

This post identifies challenges in design discussions within GitLab issues, specifically the difficulty in following lengthy conversations and managing multiple design iterations. It also highlights the need for version control for design files, currently managed in personal folders outside of the design repository. The post proposes improving design discussion by making design artifacts a first-class citizen, potentially by linking them in the side navigation of an issue and enabling commenting on images that propagate to the sidebar. It also discusses the opportunity for GitLab to engage developers and design teams in the DevOps lifecycle by addressing areas like review and collaboration, interaction design, version control, developer handoff, and design system management.

How to work on two Git branches at the same time

10/3/2018

This post introduces a workflow for working on two Git branches concurrently. It describes using a local development environment for one branch (e.g., for feature development) and the GitLab Web IDE for another branch (e.g., for documentation). This allows developers to commit changes to one branch locally while simultaneously documenting the process in the Web IDE, enabling parallel iteration and feedback on different components of a feature.

GitLab's 2019 product vision for DevOps Create

9/21/2018

This post outlines GitLab's product vision for the 'Create' stage in 2019, focusing on improvements to Git repositories, merge requests, code review, and the Web IDE. Key technical areas discussed include: distributed merge requests for cross-project collaboration, branch comparison and cherry-picking for forks, API for line-by-line code quality feedback in merge requests, smarter merge request diffs, proposing changes via comments, commit-by-commit code review, autosquashing commits, previewing squashed commits, making commit messages part of code review, and enhancing the Web IDE with live previews, web terminals, and integrated code review feedback.

4 Examples of MVCs with big results

9/7/2018

Introduced assignee lists and milestone lists to issue boards for improved team bandwidth monitoring and milestone progress visualization. Redesigned the merge request widget info and pipeline sections for better readability. Added a groups dropdown to the top navigation for easier group switching. Introduced a confidential issue quick action to mark issues as confidential directly from the comment field.

Meet the GitLab Web IDE

6/15/2018

This post details the development of GitLab's Web IDE, from its initial proof-of-concept as a 'repo editor' to its evolution into a full-fledged Integrated Development Environment. Key technical contributions include the integration of the Monaco editor, the decoupling of the editor from the project sidebar for increased screen real estate, the adoption of a three-pane layout (file explorer, editor, commit panel), and the introduction of distinct editing and review states. The design process focused on guiding users intuitively through the editing-to-committing flow, with a clear hierarchy and a prominent commit button.

2017

How to automatically create a new MR on GitLab with GitLab CI

9/5/2017

Introduced a GitLab CI script that automatically creates a Merge Request (MR) for a new branch. The script checks if an open MR already exists for the source branch; if not, it creates one, assigns it to the committer (using GITLAB_USER_ID), sets the target branch to the default branch, and marks the title with 'WIP:'. It also configures the MR to automatically remove the source branch upon merging.

2016

Tutorial: It's all connected in GitLab

3/8/2016

This post reinforces the 'issue as a single source of truth' concept and elaborates on the cross-referencing capabilities within GitLab. It details how to reference issues, merge requests, and snippets using specific syntax (`#123`, `!123`, `$123`) within issues, merge requests, and comments. It also explains how commit messages can reference issues and merge requests, and how merging a merge request with 'Closes #ID' or 'Fixes #ID' automatically closes the referenced issue. The post also touches upon the 'Todos' feature for notifications and the use of labels and milestones for organization.

Feature Highlight: Todos

3/2/2016

This post introduces the 'Todos' feature, a new mechanism for consolidating notifications related to issues and merge requests. It explains how the feature works, triggered by assignments and @mentions, and how users can interact with their todo list. The post also details the development process, highlighting the reuse of the Activity feed system and the use of ActiveModel::Dirty API for tracking attribute changes, including a custom solution for association changes like labels. It also discusses the naming evolution of the feature from 'Notification System' to 'Todos'.

Making GitLab Faster

2/25/2016

This post details performance improvements in GitLab 8.5, specifically addressing two key areas: optimizing the fetching of issues closed by a merge request and improving the performance of retrieving last update times for events. For issue fetching, the approach was changed from iterating through each commit to concatenating all commit messages and the merge request description into a single string for a more efficient database query. This reduced latency from seconds to under 15 milliseconds. For event feeds, the SQL query for retrieving events based on user project access was optimized to improve performance.

Feature Highlight: Create files and directories from the Files page

2/10/2016

This post introduces the ability to create new files, upload files, create directories, create new branches, and create new tags directly from the GitLab UI's file browser. It also highlights the option to start a new merge request when creating a file or directory, enhancing the workflow for quick changes and project management within the interface.

Making GitLab Better for Large Open Source Projects

1/15/2016

This post addresses major issues raised by the open-source community regarding issue management, specifically focusing on improving issue templates with custom fields and mandatory requirements, enhancing the voting system to replace content-less '+1' comments, and providing better integration with contribution guidelines. It highlights existing and planned features like issue templates, multiple templates, custom fields, and an improved voting mechanism that transforms '+1' into a vote, directly responding to community feedback and demonstrating GitLab's commitment to improving the developer experience for large open-source projects.

Feature Highlight: WIP

1/8/2016

This post introduces the 'Work In Progress' (WIP) prefix for merge requests. This feature allows developers to create merge requests for large, complex features early in the development cycle, even after the first commit. This enables continuous code review and CI checks without the risk of accidental merging, promoting an early feedback and collaboration mentality within the development process.

2015

6 reasons why pre is better than post production code review

8/5/2015

This post strongly advocates for pre-production code reviews, detailing six key benefits: maintaining code freshness, reducing resistance to change, increasing focus on quality, catching mistakes before production, enforcing reviews through mandatory approvals, and promoting smaller, more thorough reviews. It specifically highlights GitLab's 'Merge Request Approvals' as a mechanism to enforce this practice, directly contributing to the evolution of the merge request workflow by underscoring the importance of review enforcement.

Feature Highlight: Merge Request Approvals

7/29/2015

This post introduces Merge Request Approvals in GitLab Enterprise Edition, allowing users to enforce a minimum number of required approvals before a merge request can be merged. It details how approvals work, including assigning specific or non-specific approvers, setting default approvers in project settings, and the option to automatically reset approvals after new pushes. It also hints at future improvements like automatic reviewer suggestions.

Feature Highlight: Approve Merge Request

6/16/2015

Introduced Merge Request Approvals in GitLab Enterprise Edition 7.12, allowing users to enforce a workflow requiring multiple reviewers to sign off on a merge request before it can be merged. This adds a crucial step for quality control and team sign-off to the merge request process.

2014

How GitLab Permissions and Protected Branches Keep Your Code Safe

11/26/2014

This post introduces GitLab's permission system, defining granular roles (Guest, Reporter, Developer, Maintainer, Owner) to control access to repositories. It also details the implementation of protected branches, which prevent force pushes, deletions, and direct pushes to critical branches, thereby enforcing code review via merge requests and safeguarding code integrity. This directly addresses the need for preventing accidental history rewrites and improving code quality through review.

The 7 Most Important Open Source Workflow Practices for Enterprises

9/5/2014

This post introduces the concept of 'inner-sourcing' for enterprises, detailing how GitLab's features (visibility, forking, pull/merge requests, testing, CI, documentation, issue tracker) enable the adoption of open-source workflow practices within organizations. It specifically mentions the introduction of an 'internal' project visibility level to facilitate this adoption while maintaining code security.

Feature highlight: Git Hooks in GitLab Enterprise Edition

8/25/2014

This post introduces Git Hooks in GitLab Enterprise Edition, offering a user-friendly interface for project-specific rules on repository pushes. It highlights the ability to enforce commit message formats (e.g., referencing JIRA issues) and prevent tag deletion, adding a layer of control and consistency to the development workflow.

GitLab Feature Highlight: Groups

6/30/2014

This post introduces the concept of 'Groups' in GitLab, a feature that allows users to organize projects into directories and manage user access to multiple projects at once. It details how to create groups, add projects to them, transfer existing projects into groups, and manage group memberships. This significantly enhances the organizational and access control capabilities within GitLab, complementing existing workflow enhancements.

Issues and Merge Requests in GitLab Screencast

3/4/2014

This screencast introduces and showcases the powerful issue tracker within GitLab, highlighting its complete integration with the GitLab workflow. It demonstrates how issues can be referenced and closed by commits, enables line-by-line code commenting, and touches upon integration with GitLab CI, collaborator referencing, and merge request voting, providing a visual overview of these core functionalities.