GitLab Workflows
This is a review of the expected workflows when using GitLab. It is intended as a validation exercise to ensure that the solution would work for different members of the GNOME community.
Maintainers & developers
Push your own commit
- git push as usual. [CLI]
You can also put a comment in the commit message to automatically close an issue at the same time. Example: "Closes: #234".
Post a commit for review
Using GitLab UI and branching:
- Go to the issue and press create a branch [UI]
- Locally check out the branch [CLI]
- Locally create commit with comment "Closes: ISSUE_LINK" [CLI]
- Push branch [CLI]
In GitLab, create merge request [UI]
- Code review:
Another developer then does code review in GitLab (GitLab shows diffs between branches as well as branch history) [UI]
- Developer makes changes based on review, force pushes them to the branch [CLI]
When the branch is ready, accpet the merge request in GitLab [UI]
Using master locally only (branching is done on the remote):
- Create a commit locally on master; put in commits "Closes: ISSUE_LINK". [CLI]
Create a new branch and push git push origin HEAD:newBranch [CLI]
In GitLab, a button to create a merge request for the branch appears - click it [UI]
Code review in GitLab, as above [UI]
- Push local master branch; the issue will be automatically closed [CLI]
CLI based contribution
You can use https://github.com/seveas/git-spindle, docs at http://seveas.github.io/git-spindle/gitlab.html
Apply, test and review changes locally
GitLab UI using a branch:
- Contributor creates a merge request
- Maintainer checks out the remote branch
- Then standard review/merge process
Using master locally only (branching is done on the remote) (CLI only):
- Contributor creates a merge request
Maintainer rebases master against the remote branch, like git rebase origin theRemoteBranch
- Then standard review/merge process
Managing issues
Things you can easily do with the GitLab UI:
- Create issues
- Use labels to organize issues according to importance
- Assign milestones to issues
Do task/project management using the Issue Board
Track dependencies between issues - add a comment with a list of the blocker issues (comments can be edited/updated); links will indicate when they are closed (see example issue)
Mark an issue as a duplicate - on the bug that you are going to close, add the "duplicate" label and close the issue, then mention the issue that is being kept (example issue, how it looks in the lists of issues)
- Move issues between modules
- Keep an issue as private - use the "This issue is confidential" checkbox
Managing issues using the command line
You can use https://github.com/seveas/git-spindle [CLI]
Create a branch
Standard process using the command line or through the GitLab UI.
Releases
Initially this will be the same as it is now, using ftpadmin stuff. However, we could use GitLab to host releases in the future (GitLab documentation):
In GitLab, click any tag [UI]
- Add a "note" to it for release notes [UI]
- Optionally, attach a tarball [UI]
Translators
Translation team answer to what their needs are
Workflow will continue the same as it is now. Dammed Lies will have commit rights to every project, as will translator coordinators.
Release Team
Track release milestones
- There will be a group for all release modules; it will be possible for the Release Team to create milestones for the group
- To view the issues for a particular milestone:
- Browse to the group to see its issues
- Select the milestone to filter issues
Newcomers
Explore and choose projects
Browse the project list and filter by programming language
- View the readme for each module
- Use the URL to clone
Search for tasks
- From the landing page, select issues
- Select labels and choose "newcomers", or search for "newcomers"
Contribute their first patch
In the UI:
- Create an account or use OpenID to log in
In an issue, click create branch & copy the URL
- Clone the repo and checkout the branch
- Create a fix and push it to the branch
In GitLab, create a merge request
- Code review
- Contributor uses force push to update the branch
In GitLab, maintainer clicks "accept merge request" when the branch is ready
CLI based contribution
You can use https://github.com/seveas/git-spindle, docs at http://seveas.github.io/git-spindle/gitlab.html
Bug Squad
BugsQuad answer to what their needs are
Find Bugs
- New
- Needinfo and old
- Without a response
- Oldest bugs
- Statistics and reports - new/closed bugs by module/user per month/year