Skip to content
Snippets Groups Projects
Commit 4eea139e authored by Joan Parrow's avatar Joan Parrow
Browse files

Merge branch 'master' into 'br-involuntary-term'

# Conflicts:
#   source/handbook/people-operations/index.html.md
parents e93471a4 e9793730
No related branches found
No related tags found
1 merge request!5165update time to send email
Showing
with 863 additions and 200 deletions
Loading
Loading
@@ -7,9 +7,8 @@ before_script:
- bundle install --jobs 4 --path vendor
 
cache:
key: "website"
key: "web"
paths:
- public
- vendor
 
stages:
Loading
Loading
@@ -23,6 +22,13 @@ lint:
tags:
- gitlab-org
 
rspec:
stage: build
script:
- bundle exec rspec
tags:
- gitlab-org
.build_base: &build_base
stage: build
artifacts:
Loading
Loading
@@ -56,10 +62,10 @@ review:
variables:
GIT_STRATEGY: none
script:
- rsync -av --delete public ~/pages/$CI_BUILD_REF_SLUG
- rsync -av --delete public ~/pages/$CI_COMMIT_REF_SLUG
environment:
name: review/$CI_BUILD_REF_NAME
url: http://$CI_BUILD_REF_SLUG.about.gitlab.com
name: review/$CI_COMMIT_REF_SLUG
url: http://$CI_COMMIT_REF_SLUG.about.gitlab.com
on_stop: review_stop
only:
- branches@gitlab-com/www-gitlab-com
Loading
Loading
@@ -78,10 +84,10 @@ review_stop:
variables:
GIT_STRATEGY: none
script:
- rm -rf public ~/pages/$CI_BUILD_REF_SLUG
- rm -rf public ~/pages/$CI_COMMIT_REF_SLUG
when: manual
environment:
name: review/$CI_BUILD_REF_NAME
name: review/$CI_COMMIT_REF_SLUG
action: stop
only:
- branches@gitlab-com/www-gitlab-com
Loading
Loading
### Description
Compare GitLab with <Competitor>.
### Links / references
(Add links to the competitor home page, documentation, Wikipedia article, etc.)
-
-
/label ~"comparison page"
### Description
Create comparison page for: GitLab vs <Competitor>.
Closes <link to issue>
### Preview URL
/label ~"comparison page"
Release Post :tada:
- Blog handbook: https://about.gitlab.com/handbook/marketing/blog/
- Release post handbook: https://about.gitlab.com/handbook/marketing/blog/release-posts/
### General Contributions
General contributions from the team.
Due date: MM/DD (6th working day before the 22nd)
- [ ] Label MR: ~"blog post" ~release
- [ ] Add milestone
- [ ] Intro
- [ ] MVP
- [ ] Webcast link
- [ ] Upgrade barometer
- [ ] Main features
- [ ] Secondary features
- [ ] Other features
- [ ] Performance improvements
- [ ] Omnibus improvements
- [ ] Deprecations
- [ ] Extras
- [ ] Documentation links
- [ ] Authorship (author's data)
### Content Review
Due date: MM/DD (4th working day before the 22nd)
- [ ] Label MR: ~"blog post" ~release ~review-in-progress
- [ ] General review (PM)
- [ ] Check Features' names
- [ ] Check Features' availability (CE, EES, EEP)
- [ ] Check Documentation links
- [ ] Add `data/promo.yml`
- [ ] Check all images' size - compress whenever > 300KB
- [ ] Meaningful links (SEO)
- [ ] Check links to product/feature webpages
- [ ] Copyedit (Sean P, Rebecca, or Marcia)
- [ ] Title
- [ ] Description
- [ ] Grammar, spelling, clearness (body)
- [ ] Final review (Job)
### Structure & Styles
Add HTML/CSS structure to style the blog post, review markup. Technical Writing / Frontend / UX.
Due date: MM/DD (1st working day before the 22nd)
- 1. Structural check
- [ ] Label MR: ~"blog post" ~release ~review-structure
- [ ] Check frontmatter (entries, syntax)
- [ ] Uncomment custom css and custom js
- [ ] Add cover image `image_title` - compressed
- [ ] Add social sharing image `twitter_image` - compressed
- [ ] Check image shadow `{:.shadow}`
- [ ] Check images' `ALT` text
- [ ] Videos/iframes wrapped in `<figure>` tags (responsiveness)
- 2. Apply styles
- [ ] Add/check html parser `{::options parse_block_html="true" /}`
- [ ] Apply semantic HTML (sections, divs, classes, ids)
- [ ] Add/check `<!-- more -->` separator
- [ ] Add/check cover img reference (at the end of the post)
- [ ] Columns (content balance between the columns)
- [ ] Badges consistency (applied to all headings)
- [ ] Remove any remaining instructions
- [ ] Remove HTML comments
- [ ] Run deadlink checker
- [ ] Update release template with any changes (if necessary)
.rspec 0 → 100644
--color
--require spec_helper
--format documentation
Loading
Loading
@@ -9,7 +9,7 @@ gem 'wdm', '~> 0.1.0', platforms: [:mswin, :mingw, :x64_mingw]
gem 'tzinfo-data', platforms: [:mswin, :mingw, :x64_mingw, :jruby]
 
# Middleman Gems
gem "middleman", "~> 4.1"
gem "middleman", "~> 4.2"
gem "middleman-blog", git: "https://github.com/middleman/middleman-blog.git"
gem "middleman-livereload"
gem "middleman-minify-html"
Loading
Loading
@@ -19,11 +19,8 @@ gem "middleman-syntax"
gem 'kramdown', '~> 1.10'
gem 'nokogiri'
 
# therubyracer does not compile on Windows. According to this post:
# http://stackoverflow.com/questions/6356450/therubyracer-gem-on-windows#comment7926287_6356450
# ... looks like it is not needed when we are not deploying.
# So, Windows users can safely comment this gem to run `bundle install`, then `bundle exec middleman`
gem 'therubyracer'
# Replacement of therubyracer
gem 'mini_racer', '~> 0.1'
 
# For feed.xml.builder
gem "builder", "~> 3.0"
Loading
Loading
@@ -35,4 +32,5 @@ group :development, :test do
gem 'docopt'
gem 'scss_lint', require: false
gem 'yaml-lint', require: false
gem 'rspec', '~> 3.5', require: false
end
GIT
remote: https://github.com/middleman/middleman-blog.git
revision: 7b7eaa8213c07648cc8b16ac47c89c8ee2c37052
revision: c7650db4a49c9cad07b9f55b0493108d7255eb16
specs:
middleman-blog (4.0.1)
addressable (~> 2.3)
Loading
Loading
@@ -10,67 +10,67 @@ GIT
GEM
remote: https://rubygems.org/
specs:
activesupport (5.0.0.1)
activesupport (5.0.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7)
minitest (~> 5.1)
tzinfo (~> 1.1)
addressable (2.5.0)
addressable (2.5.1)
public_suffix (~> 2.0, >= 2.0.2)
autoprefixer-rails (6.5.3)
autoprefixer-rails (6.7.7.1)
execjs
backports (3.6.8)
builder (3.2.2)
backports (3.7.0)
builder (3.2.3)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.10.0)
coffee-script-source (1.12.2)
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
concurrent-ruby (1.0.2)
concurrent-ruby (1.0.5)
contracts (0.13.0)
diff-lcs (1.3)
docopt (0.5.0)
dotenv (2.1.1)
dotenv (2.2.0)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
erubis (2.7.0)
eventmachine (1.2.1)
eventmachine (1.2.3)
execjs (2.7.0)
fast_blank (1.0.0)
fastimage (2.0.1)
addressable (~> 2)
ffi (1.9.14)
fastimage (2.1.0)
ffi (1.9.18)
haml (4.0.7)
tilt
hamster (3.0.0)
concurrent-ruby (~> 1.0)
hashie (3.4.6)
hashie (3.5.5)
htmlcompressor (0.2.0)
http_parser.rb (0.6.0)
httparty (0.14.0)
multi_xml (>= 0.5.2)
i18n (0.7.0)
kramdown (1.13.0)
libv8 (3.16.14.17)
kramdown (1.13.2)
libv8 (5.3.332.38.5)
listen (3.0.8)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
memoist (0.15.0)
middleman (4.1.11)
middleman (4.2.1)
coffee-script (~> 2.2)
compass-import-once (= 1.0.5)
haml (>= 4.0.5)
kramdown (~> 1.2)
middleman-cli (= 4.1.11)
middleman-core (= 4.1.11)
middleman-cli (= 4.2.1)
middleman-core (= 4.2.1)
sass (>= 3.4.0, < 4.0)
middleman-autoprefixer (2.7.1)
autoprefixer-rails (>= 6.5.2, < 7.0.0)
middleman-core (>= 3.3.3)
middleman-cli (4.1.11)
middleman-cli (4.2.1)
thor (>= 0.17.0, < 2.0)
middleman-core (4.1.11)
middleman-core (4.2.1)
activesupport (>= 4.2, < 5.1)
addressable (~> 2.3)
backports (~> 3.6)
Loading
Loading
@@ -104,9 +104,11 @@ GEM
middleman-core (>= 3.2)
rouge (~> 2.0)
mini_portile2 (2.1.0)
minitest (5.9.1)
multi_xml (0.5.5)
nokogiri (1.6.8.1)
mini_racer (0.1.9)
libv8 (~> 5.3)
minitest (5.10.1)
multi_xml (0.6.0)
nokogiri (1.7.1)
mini_portile2 (~> 2.1.0)
padrino-helpers (0.13.3.3)
i18n (~> 0.6, >= 0.6.7)
Loading
Loading
@@ -114,32 +116,41 @@ GEM
tilt (>= 1.4.1, < 3)
padrino-support (0.13.3.3)
activesupport (>= 3.1)
parallel (1.9.0)
public_suffix (2.0.4)
parallel (1.11.1)
public_suffix (2.0.5)
rack (2.0.1)
rack-livereload (0.3.16)
rack
rake (11.3.0)
rake (12.0.0)
rb-fsevent (0.9.8)
rb-inotify (0.9.7)
rb-inotify (0.9.8)
ffi (>= 0.5.0)
ref (2.0.0)
rouge (2.0.7)
sass (3.4.22)
scss_lint (0.50.3)
rake (>= 0.9, < 12)
rspec (3.5.0)
rspec-core (~> 3.5.0)
rspec-expectations (~> 3.5.0)
rspec-mocks (~> 3.5.0)
rspec-core (3.5.4)
rspec-support (~> 3.5.0)
rspec-expectations (3.5.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.5.0)
rspec-mocks (3.5.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.5.0)
rspec-support (3.5.0)
sass (3.4.23)
scss_lint (0.52.0)
rake (>= 0.9, < 13)
sass (~> 3.4.20)
servolux (0.12.0)
stringex (2.6.1)
therubyracer (0.12.2)
libv8 (~> 3.16.14.0)
ref
thor (0.19.1)
thread_safe (0.3.5)
tilt (2.0.5)
tzinfo (1.2.2)
servolux (0.13.0)
stringex (2.7.1)
thor (0.19.4)
thread_safe (0.3.6)
tilt (2.0.7)
tzinfo (1.2.3)
thread_safe (~> 0.1)
uglifier (3.0.3)
uglifier (3.1.11)
execjs (>= 0.3.0, < 3)
yaml-lint (0.0.9)
 
Loading
Loading
@@ -151,19 +162,20 @@ DEPENDENCIES
docopt
httparty
kramdown (~> 1.10)
middleman (~> 4.1)
middleman (~> 4.2)
middleman-autoprefixer
middleman-blog!
middleman-livereload
middleman-minify-html
middleman-syntax
mini_racer (~> 0.1)
nokogiri
rspec (~> 3.5)
scss_lint
stringex
therubyracer
tzinfo-data
wdm (~> 0.1.0)
yaml-lint
 
BUNDLED WITH
1.13.6
1.14.6
Copyright (c) GitLab B.V.
Copyright (c) GitLab B.V.
Loading
Loading
@@ -119,7 +119,7 @@ before publishing, see [**Local development**](#local-development) for
instructions.
 
[Blog Handbook]: https://about.gitlab.com/handbook/marketing/blog/
[mkd-guide]: https://about.gitlab.com/handbook/marketing/developer-relations/technical-writing/markdown-guide/
[mkd-guide]: https://about.gitlab.com/handbook/product/technical-writing/markdown-guide/
 
### Adding yourself to the team page
 
Loading
Loading
@@ -312,34 +312,117 @@ follow the steps below:
[press releases]: https://about.gitlab.com/press/releases/
[press category]: https://about.gitlab.com/blog/categories/press
[blog archives]: https://about.gitlab.com/blog/archives.html
[md]: https://about.gitlab.com/handbook/marketing/developer-relations/technical-writing/markdown-guide
[md]: https://about.gitlab.com/handbook/product/technical-writing/markdown-guide
 
### Update the features page (under `/features`)
 
The feature page grabs its content automatically from the file
`/data/features.yml`.
 
### Update the comparison page (under `/comparison`)
### Create or update the comparison pages (under `/comparison`)
 
The comparison page grabs its content automatically from the file
`/data/comparisons.yml`.
The [comparison page][comp] grabs its content automatically from the files under
`data/comparisons/`.
 
When adding a new comparison, make sure that you follow the structure below:
There are 3 files in total which you need to create or edit:
 
- `data/comparisons/gitlab_vs_competitor.yml`: Create for new comparisons. Every
comparison page has its own yaml file. **Use underscores**
- `source/comparison/gitlab-vs-competitor.html.haml`: Create for new comparisons.
Every comparison page has its own html file. **Use dashes**
- `source/includes/comparison_table.html.haml`: Edit for new or existing
comparisons.
---
**Step 1**
Add a new yaml file named after the comparison using underscores:
`data/comparisons/gitlab_vs_competitor.yml`. You can start by copying an
existing one and then changing its content. Yaml files are sensitive to
indentation, so be extra careful. Make sure that you follow the structure below:
```yaml
title: "Competitor vs GitLab"
pdf: gitlab-vs-competitor.pdf
competitor_one:
name: 'GitLab'
logo: '/images/comparison/gitlab-logo.svg'
competitor_two:
name: 'Competitor'
logo: '/images/comparison/competitor-logo.svg'
last_updated: 'May 5, 2017'
features:
- title: "Briefly explain the feature"
description: |
Describe the differences in detail. This text can span in multiple
lines without interfering with its structure. It will always appear
as one paragraph.
link_description: "Learn more about Feature Name."
link: "link to GitLab's feature page documentation or blog post"
competitor_one: true
competitor_two: true
```
Notes:
- Although the file is named with GitLab being first, the title should have the
competitor name first.
- The `pdf` name should be similar to the yaml file name, but with dashes. In
short, it has to match the HTML page name in step 2. If you want to omit the
PDF link altogether, set its value to `null`, like: `pdf: 'null'`.
- Remember to update the date every time you make a change.
- The competitor's logo (`competitor_two`) can be `svg` or `png`. Save it in
`source/images/comparison/competitor-logo.svg`.
- In the features area, `competitor_one` is always GitLab, and `competitor_two`
is the competitor we are compared against. Values for these two fields are
`true|false|sortof`.
**Step 2**
Add a new haml file named after the comparison using dashes:
`source/comparison/gitlab-vs-competitor.html.haml`. You can start by copying an
existing one and then editing it. The only change you need to make is the
name of the yaml file you created above:
```yaml
---
layout: comparison_page
trial_bar: true
title: GitLab compared to other tools
suppress_header: true
image_title: '/images/comparison/title_image.png'
extra_css:
- compared.css
extra_js:
- comparison.js
---
- data.comparisons.gitlab_vs_competitor do |comparison_block|
= partial "includes/comparison_table", locals: { comparison_block: comparison_block }
```
- title: ""
description: ""
link_description: ""
link:
competitor_one: true
competitor_two: false
**Step 3**
As a last step, you need to add the new page in the dropdown menu. To do that,
open `source/includes/comparison_table.html.haml` and add an entry of your newly
added comparison page. Again, you can copy one of the entries you'll find inside
and just change its content. Haml files are sensitive to indentation, so be
extra careful:
```haml
%li
= highlight_active_nav_link("Competitor vs. GitLab", "/comparison/gitlab-vs-competitor.html#dropdown")
```
 
Title and description fields are mandatory.
**Step 4**
If you followed the above 3 steps, the new comparison page should be reachable
under `/comparison/gitlab-vs-competitor.html` and you should see it in the
dropdown menu. The last thing you need to do is create the PDF. Follow the
info in [creating comparison PDFs](#comparison-pdfs).
 
`competitor_one` is always GitLab,
`competitor_two` is the competitor we are compared against. Values for these two
fields are `true|false|sortof`.
[comp]: https://about.gitlab.com/comparison/
 
### Update the release list page (under `/release-list`)
 
Loading
Loading
@@ -370,6 +453,58 @@ the 22th is 8.12, the month should be 8 (i.e August for 8.11), not 9.
 
The release-list page will be updated after `bundle exec rake build`.
 
### Update the projects page (under `/handbook/engineering/projects`)
GitLab Engineering Projects page is generated using information stored in
`data/projects.yml` and `data/team.yml` files. Edit these files to add a
project and assign product owners / maintainers / reviewers.
* Typically, product owner is a Product Team member whose responsibilities
include having a vision of a project's development, scheduling a work and
allocating required resources.
* Maintainer is usually a team member who is responsible for the final review
and has ability to merge changes into the `master` branch / default branch.
* A reviewer is a team member who is responsible for reviewing changes and
providing a quick feedback during multiple review iterations.
To assign someone to a project it is necessary to add a `projects` section to
team member's entry in `data/team.yml`. See an example below.
```yaml
- name: Full Name
locality: Some City
# [...]
gitlab: gitlab-com-handle
projects:
some-project: owner
gitlab-ce: maintainer backend
gitlab-ee: maintainer backend
gitlab-shell: reviewer
story: Bio that appears on the team page.
```
Note that each project, that user is involved in, is referenced by a key.
The key needs to be defined in `data/projects.yml` as well.
```yaml
gitlab-ce:
name: GitLab Community Edition (CE)
path: gitlab-org/gitlab-ce
# [...]
```
If corresponding key does not exist in `data/projects.yml` then CI pipeline
will fail and an appropriate RSpec failure will inform you which key is
missing.
Supported roles are only `owner`, `maintainer` and `reviewer`. A text provided
after a role name is an arbitrary description, that will appear next to a
team member's gitlab.com handle on a generated page.
See [Engineering Projects Page](https://about.gitlab.com/handbook/engineering/projects) in the Handbook.
## Production build
 
Before building the static files, ensure you have a GitLab.com `PRIVATE_TOKEN`
Loading
Loading
@@ -395,15 +530,34 @@ derived from a corresponding 'printable' HTML file, such as
 
The PDF files are generated by [pandoc](http://pandoc.org/) using
[LaTeX/XeTeX](http://xetex.sourceforge.net/). Global PDF parameters such
as page margins are configured in pdf_template.tex.
as page margins are configured in `pdf_template.tex`.
 
### Install PDF dependencies
 
On OS X: run `brew install pandoc` and install [Basic
TeX](https://tug.org/mactex/morepackages.html).
There are two kinds of PDFs created: the comparison pages ones and all the others.
 
For the comparison PDFs you will need to run the following on OS X:
`brew cask install wkhtmltopdf`
---
For the comparison PDFs you will need to install [wkhtmltopdf].
On macOS:
```
brew cask install wkhtmltopdf
```
---
For all the others you need [pandoc](http://pandoc.org/installing.html). On
macOS run:
```
brew install pandoc
```
Then, install [Basic TeX](https://tug.org/mactex/morepackages.html).
[wkhtmltopdf]: https://wkhtmltopdf.org/downloads.html
 
### PDF development
 
Loading
Loading
@@ -448,18 +602,27 @@ website, you have to:
 
### Comparison PDFs
 
>**Notes:**
- Before creating the PDF for a new comparison page, you need to have
[created the page](#create-or-update-the-comparison-pages-under-comparison)
beforehand.
- Make sure you have all [PDF dependencies installed](#install-pdf-dependencies).
The comparison PDFs are generated in a slightly different way and require a
different command to be run. Before the PDFs can be generated the website
needs to be built locally by running the following:
 
`bundle exec middleman build`
```
bundle exec middleman build
```
 
After running that you can now run the following to generate the PDFs:
 
`bundle exec rake comparison_pdfs`
```
bundle exec rake comparison_pdfs
```
 
Once you have done that you are free to commit and push these to GitLab.com
to then be merged into master.
Once you have done that you are free to commit and push these to GitLab.com.
 
## Custom Generators
 
Loading
Loading
@@ -500,15 +663,6 @@ by pointing your browser to http://localhost:8000.
 
[gh-livereload]: https://github.com/middleman/middleman-livereload/issues/60
 
## Conclusion
In case someone forgot the most important commands and is catting this file from the command line we end by listing them:
```
bundle exec rake new_post
bundle exec middleman
```
## Review Apps
 
Thanks to the [Review Apps], the `www-gitlab-com` project supports live reviewing
Loading
Loading
@@ -530,3 +684,12 @@ Beware that:
Review Apps.
 
[review apps]: https://docs.gitlab.com/ce/ci/review_apps/
## Conclusion (please leave this at the bottom of the doc)
In case someone forgot the most important commands and is catting this file from the command line we end by listing them:
```
bundle exec rake new_post
bundle exec middleman
```
Loading
Loading
@@ -6,5 +6,5 @@ for filename in public/comparison/pdfs/*.html; do
 
wkhtmltopdf --margin-left 0 --margin-right 0 --margin-top 0 --zoom 3 $filename $pdffilename
 
echo "✅ PDF pdffilename generated!"
echo "✅ PDF $pdffilename generated!"
done
Loading
Loading
@@ -2,6 +2,10 @@ require 'generators/direction'
require 'generators/release_list'
require 'generators/org_chart'
require 'extensions/breadcrumbs'
require 'lib/homepage'
require "lib/custom_helpers"
helpers CustomHelpers
include CustomHelpers
 
###
# Page options, layouts, aliases and proxies
Loading
Loading
@@ -54,80 +58,6 @@ unless ENV['ENABLE_LIVERELOAD'] != '1'
end
end
 
##
# Helper methods
##
helpers do
def icon(icon, cssclass = "", attrs = {})
width = attrs[:width] || 76
height = attrs[:height] || 76
viewbox_width = attrs[:viewbox_width] || width
viewbox_height = attrs[:viewbox_height] || height
label = attrs[:label] || ""
content_tag :svg, viewbox: "0 0 #{viewbox_width} #{viewbox_height}", width: width, height: height, class: cssclass, aria: {label: label}, role: "img" do
partial "includes/icons/#{icon}.svg"
end
end
def xml_feed_content(article)
content = article.body
if article.data.image_title
content << "<img src='#{data.site.url}#{article.data.image_title}' class='webfeedsFeaturedVisual' style='display: none;' />"
else
content << "<img src='#{data.site.url}#{image_path("default-blog-image.png")}' class='webfeedsFeaturedVisual' style='display: none;' />"
end
h(content)
end
def markdown(text)
Tilt['markdown'].new { text }.render
end
def open_jobs
data.jobs.select(&:open).sort_by(&:title)
end
def job_for_current_page
open_jobs.detect do |job|
job_desc = job.description.sub(%r{\A/}, '').split('/')
File.join(job_desc) == File.dirname(current_page.request_path)
end
end
def salary_avail
data.jobs.select(&:salary).sort_by(&:title)
end
def salary_for_current_job
salary_avail.detect do |job|
job.description.start_with?("/#{File.dirname(current_page.request_path)}")
end
end
def font_url(current_page)
fonts = ["Source+Sans+Pro:300,400,600"]
if current_page.data.extra_font
fonts = fonts.concat current_page.data.extra_font
end
fonts = fonts.join("|")
"//fonts.googleapis.com/css?family=#{fonts}"
end
def highlight_active_nav_link(link_text, url, options = {})
options[:class] ||= ""
options[:class] << " active" if url == current_page.url
link_to(link_text, url, options)
end
def full_url(current_page)
"#{data.site.url}#{current_page.url}"
end
end
# Build-specific configuration
configure :build do
set :build_dir, "public"
Loading
Loading
@@ -159,6 +89,18 @@ data.comparisons.each do |key, comparison|
proxy "/comparison/pdfs/#{file_name}.html", "/comparison/pdfs/template.html", locals: { comparison_block: comparison }, ignore: true
end
 
# GitLab Projects
proxy '/handbook/engineering/projects/index.html',
'/handbook/engineering/projects/template.html',
locals: { team: Gitlab::Homepage::Team.new },
ignore: true
# Proxy vacancy pages
data.vacancies.each do |opening|
file_name = vacancy_name(opening).parameterize
proxy "/careers/#{file_name}/index.html", "/careers/template.html", locals: { vacancy: opening }, ignore: true
end
page '/404.html', directory_index: false
 
ignore '/direction/template.html'
Loading
Loading
Loading
Loading
@@ -39,7 +39,7 @@
- url: https://addons.opera.com/en/extensions/details/octotree/
title: Octotree on Opera Add-ons Store
- url: https://github.com/buunguyen/octotree#install-on-safari
title: Install Octotree on Safari
title: Install Octotree on Safari
- title: Git2Go
content: The Git client for iPhone and iPad you always wanted
links:
Loading
Loading
@@ -112,6 +112,11 @@
links:
- url: https://github.com/NARKOZ/gitlab
title: Repository on GitHub
- title: "gitlabr"
content: R client for GitLab REST API.
links:
- url: https://gitlab.com/jirkalewandowski/gitlabr
title: Development repository on GitLab.com
- title: Perl
content: Net::GitLab Perl Client talks to a GitLab installation via its API.
links:
Loading
Loading
@@ -213,6 +218,11 @@
- title: Utilities
id: utilities
applications:
- title: Postman
content: Back up and sync your Postman Collections to your GitLab projects with the Postman Pro to GitLab integration.
links:
- url: https://www.getpostman.com/docs/gitlab_integration
title: Postman Pro to GitLab integration
- title: BugMuncher
content: 'Collect user feedback and bug reports on your website, which can be created as issues in a GitLab project. Information on how to integrate BugMuncher with GitLab can be found in the <a href="https://docs.bugmuncher.com/integrations/">BugMuncher Documentation</a>'
links:
Loading
Loading
@@ -234,6 +244,11 @@
links:
- url: https://github.com/Evolveum/connector-gitlab
title: Repository on GitHub
- title: GitLab external user creator
content: Web app which allows internal users to create new users for collaborators (as external users).
links:
- url: https://github.com/dolfim/gitlab_user_creator
title: Repository on GitHub
- title: create-gitlab-repo
content: Simple script creating a GitLab project from the local repository in the current directory.
links:
Loading
Loading
@@ -274,11 +289,21 @@
links:
- url: https://teamweek.com/
title: Teamweek
- title: SwaggerHub
content: SwaggerHub is an API development platform that allows users to quickly build, document and deploy their APIs using the Swagger framework. SwaggerHub’s GitLab integration lets users push-generate their API’s definition and code to the GitLab repository of their choice and keep them in sync, thus managing their API lifecycle in GitLab from a single source-of-truth.
links:
- url: https://app.swaggerhub.com/help/integrations/gitlab-sync
title: SwaggerHub
- title: Invantive Query Tool for SQL
content: With the Invantive Query Tool is all the data, stored in GitLab, available on demand. It empowers to execute queries, capture and analyze data and create business reports in real-time.
links:
- url: https://www.gitlab-apps.com/index.html?utm_source=gitlab-query-tool#query-tool
title: Invantive Query Tool for SQL
- title: WakaTime
content: Fully automatic time tracking generated from your programming activity in your editor.
links:
- url: https://wakatime.com/integrations
title: WakaTime
- title: Toggl
content: Time tracker that is built for speed and ease of use.
links:
Loading
Loading
@@ -347,13 +372,22 @@
title: Integration setup instructions
- url: https://raygun.com/blog/2016/06/raygun-and-gitlab/
title: Raygun and GitLab make deployment easier
- title: Git Integration for JIRA Cloud/Server
content: View GitLab Commits in JIRA Issues and Projects. Native support for GitLab CE/EE and GitLab.com - fast and easy connection between JIRA and GitLab.
links:
- url: https://marketplace.atlassian.com/plugins/com.xiplink.jira.git.jira_git_plugin/
title: Atlassian Marketplace
- url: https://bigbrassband.com/integration-guide/jira-gitlab.html
title: GitLab + JIRA Integration guide
- url: "https://bigbrassband.com/documentation.html#add_gitlab_server"
title: GitLab integration documentation
- title: Continuous Integration
id: continuous-integration
applications:
- title: GitLab CI
content: GitLab Continuous Integration (CI) integrates with your GitLab installation to run tests for your projects. Login with GitLab account, add a project with one click and enjoy running your tests. GitLab CI is on-premises software that you can install and use on your server(s) and is supported by GitLab the company.
links:
- url: https://about.gitlab.com/gitlab-ci/
- url: /features/gitlab-ci-cd/
title: GitLab CI
- title: BuildKite
content: BuildKite runs builds on GitLab commits, either on self-hosted GitLab repositories or GitLab.com.
Loading
Loading
@@ -437,7 +471,7 @@
- url: https://visualstudiogallery.msdn.microsoft.com/abafc7d6-dcaa-40f4-8a5e-d6724bdb980c
title: visualstudiogallery
- title: GitKraken
content: GitKraken is a visual git client. Please note that it requires you to sign up with a working email.
content: The downright luxurious Git client for Windows, Mac & Linux.
links:
- url: https://www.gitkraken.com/
title: GitKraken.com
Loading
Loading
@@ -473,7 +507,11 @@
title: Blackfire.io
- url: https://blackfire.io/docs/integrations/gitlab
title: Gitlab integration documentation
- title: Rollbar
content: Rollbar's real-time error monitoring <a href="https://rollbar.com/blog/rollbar-integration-for-gitlab/">integrates with GitLab</a> providing a fast and frictionless debugging experience with deep links to source code and issue tracking.
links:
- url: https://rollbar.com/
title: Rollbar
- title: Login
id: login
applications:
Loading
Loading
@@ -482,6 +520,11 @@
links:
- url: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/integration/oauth_provider.md
title: GitLab as OAuth2 authentication service provider
- title: PHP OAuth2 client
content: Let users of your application authenticate through a public or private GitLab instance.
links:
- url: https://packagist.org/packages/omines/oauth2-gitlab
title: GitLab Provider for the PHP League OAuth 2.0 Client
- title: Scrum Boards
id: scrum-boards
applications:
Loading
Loading
@@ -517,7 +560,7 @@
- title: Perforce Helix GitSwarm
content: Perforce Helix GitSwarm is a git collaboration tool built on GitLab.
links:
- url: http://www.perforce.com/git"
- url: http://www.perforce.com/git
title: perforce.com/git
- title: O'Reilly Atlas
content: 'Technical publisher O''Reilly Media has build their own frontend on top of a GitLab backend. They published a <a href="https://www.youtube.com/watch?v=IHEbYsaKW9Y&feature=youtu.be">video of the app</a> <a href="https://github.com/oreillymedia/backbone-gitlab/">Backbone for GitLab API library</a> they developed for this.'
Loading
Loading
Loading
Loading
@@ -14,6 +14,12 @@ features:
link: https://docs.gitlab.com/ce/ci/
competitor_one: true
competitor_two: false
- title: "Track app deployments with Deploy Boards"
description: "Deploy Boards offer a consolidated view of the current health and status of each CI environment running on Kubernetes, pod by pod. Not available with BitBucket Pipelines."
link_description: "Learn more about Deploy Boards"
link: https://docs.gitlab.com/ee/user/project/deploy_boards.html
competitor_one: true
competitor_two: false
- title: "Docker Registry support"
description: "GitLab Container Registry is a secure and private registry for Docker images. It allows for easy upload and download of images from GitLab CI. It is fully integrated with Git repository management."
link_description: "Documentation on Container Registry"
Loading
Loading
@@ -44,6 +50,12 @@ features:
link: https://gitlab.com/gitlab-org/gitlab-ce/issues
competitor_one: true
competitor_two: false
- title: "Confidential Issues"
description: "Keep your information secure with Confidential Issues. With GitLab, you can create confidential issues visible only for project members with Reporter access level or above."
link_description: "Learn more about Confidential Issues"
link: 'https://docs.gitlab.com/ce/user/project/issues/#confidential-issues'
competitor_one: true
competitor_two: false
- title: "Better activity feed and visualization"
description: "Collaborative activity feed to help everyone understand what is happening in a project and graphical view of the commit history."
link_description: "See Our Activity Feed"
Loading
Loading
@@ -134,12 +146,18 @@ features:
link: http://docs.gitlab.com/ee/gitlab-geo/
competitor_one: true
competitor_two: false
- title: "Monitoring built-in"
description: "GitLab ships with an open source monitoring solution, Prometheus, which offers world-class monitoring of the GitLab server's resources."
link_description: "Documentation about Monitoring"
link: http://docs.gitlab.com/runner/monitoring/
- title: "Application performance monitoring"
description: "GitLab collects and displays performance metrics for deployed apps, leveraging Prometheus. Developers can quickly and easily determine the impact of any changes, without leaving GitLab. Bitbucket requires a 3rd party product, adding additional cost and separate workflows."
link_description: "Learn more about monitoring deployed apps"
link: http://docs.gitlab.com/ce/user/project/integrations/prometheus.html
competitor_one: true
competitor_two: false
- title: "Monitoring built-in"
description: "GitLab ships with an open source monitoring solution, Prometheus, which offers world-class monitoring of the GitLab service. BitBucket exposes a limited set of metrics via Java Management Extensions."
link_description: "How to monitor GitLab"
link: http://docs.gitlab.com/ce/administration/monitoring/prometheus/index.html
competitor_one: true
competitor_two: sortof
- title: "Chat integration"
description: "GitLab ships with Mattermost, an open-source Slack alternative. Bitbucket sort of integrates with 3rd party chat software, but it's not bundled with anything."
link_description:
Loading
Loading
Loading
Loading
@@ -20,7 +20,7 @@ features:
competitor_one: false
competitor_two: true
- title: "Avoid Downtime"
description: "For mission critical releases, you cannot afford downtime. With GitLab Enterprise Edition, a Service Engineer will guide you and help you identify your specific HA needs, and map out an appropriate architecture."
description: "For mission critical releases, you cannot afford downtime. With GitLab Enterprise Edition, a Support Engineer will guide you and help you identify your specific HA needs, and map out an appropriate architecture."
link_description: ""
link:
competitor_one: false
Loading
Loading
@@ -61,3 +61,15 @@ features:
link: https://docs.gitlab.com/ee/user/project/issue_board.html
competitor_one: false
competitor_two: true
- title: "Track app deployments with Deploy Boards"
description: "Deploy Boards offer a consolidated view of the current health and status of each CI environment running on Kubernetes, pod by pod."
link_description: "Learn more about Deploy Boards"
link: https://docs.gitlab.com/ee/user/project/deploy_boards.html
competitor_one: false
competitor_two: true
- title: "Auditor users"
description: "Auditor users are users who are given read-only access to all projects, groups, and other resources on the GitLab instance."
link_description: "Auditor users"
link: https://docs.gitlab.com/ee/administration/auditor_users.html
competitor_one: false
competitor_two: true
Loading
Loading
@@ -20,6 +20,12 @@ features:
link:
competitor_one: true
competitor_two: sortof
- title: "Track app deployments with Deploy Boards"
description: "Deploy Boards offer a consolidated view of the current health and status of each CI environment running on Kubernetes, pod by pod. Not available with BitBucket Pipelines."
link_description: "Learn more about Deploy Boards"
link: https://docs.gitlab.com/ee/user/project/deploy_boards.html
competitor_one: true
competitor_two: false
- title: "Fast page load"
description: "Bitbucket.org has faster pageloads than GitLab.com right now, we're actively working on improving this. Self-hosted instances of GitLab CE/EE will be performant up to thousands of users."
link_description: "Read more"
Loading
Loading
@@ -69,11 +75,11 @@ features:
competitor_one: sortof
competitor_two: false
- title: "Powerful Issue Tracker"
description: "Quickly set the status, assignee or milestone for multiple issues at the same time or easily filter them on any properties. See milestones and issues across projects. Bitbucket does not have issues."
description: "Quickly set the status, assignee or milestone for multiple issues at the same time or easily filter them on any properties. See milestones and issues across projects. Bitbucket has a limited issue tracker."
link_description:
link:
competitor_one: true
competitor_two: false
competitor_two: sortof
- title: "Due date"
description: "In GitLab, you can set a due date for individual issues. This is very convenient if you have small tasks with a specific deadline. Bitbucket does not have issues."
link_description: "Due dates documentation"
Loading
Loading
@@ -98,6 +104,12 @@ features:
link: https://docs.gitlab.com/ce/user/project/repository/web_editor.html#create-a-new-branch-from-an-issue
competitor_one: true
competitor_two: false
- title: "Application performance monitoring"
description: "GitLab collects and displays performance metrics for deployed apps, leveraging Prometheus. Developers can quickly and easily determine the impact of any changes, without leaving GitLab. Bitbucket requires a 3rd party product, adding additional cost and separate workflows."
link_description: "Learn more about monitoring deployed apps"
link: http://docs.gitlab.com/ce/user/project/integrations/prometheus.html
competitor_one: true
competitor_two: false
- title: "Cycle Analytics"
description: "GitLab provides a dashboard that lets teams measure the time it takes to go from an idea to production. GitLab can provide this data because it has all the tools built-in: from the idea, to the CI, to code review, to deploy to production. Bitbucket can't provide this data."
link_description: "Feature Highlight: Cycle Analytics"
Loading
Loading
Loading
Loading
@@ -6,12 +6,12 @@ competitor_one:
competitor_two:
name: 'GitHub Enterprise'
logo: '/images/comparison/github-logo.svg'
last_updated: 'January 31, 2017'
last_updated: 'April 24, 2017'
features:
- title: "Handles huge repositories well"
description: "Big repository? Huge (>5GB) binary files? No problem. GitLab is built to handle very large repositories, and Git Annex and LFS are both supported."
link_description: "Using Git Annex with GitLab"
link: https://about.gitlab.com/2015/02/17/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git/
description: "Big repository? Huge (>5GB) binary files? No problem. GitLab is built to handle very large repositories, and Git LFS is supported."
link_description: "Git LFS documentation"
link: https://docs.gitlab.com/ee/workflow/lfs/manage_large_binaries_with_git_lfs.html
competitor_one: true
competitor_two: true
- title: "One integrated tool"
Loading
Loading
@@ -50,6 +50,12 @@ features:
link: https://about.gitlab.com/installation/
competitor_one: true
competitor_two: false
- title: "Track app deployments with Deploy Boards"
description: "Deploy Boards offer a consolidated view of the current health and status of each CI environment running on Kubernetes, pod by pod. Not available with most of GitHub's third party CI/CD solutions."
link_description: "Learn more about Deploy Boards"
link: https://docs.gitlab.com/ee/user/project/deploy_boards.html
competitor_one: true
competitor_two: false
- title: "Use standard Unix tools for maintenance and monitoring"
description: "Use the tools you know for monitoring and maintenance, whether they're standard or your own. GitLab doesn't restrict you."
link_description: ""
Loading
Loading
@@ -92,7 +98,7 @@ features:
link: https://docs.gitlab.com/ee/push_rules/push_rules.html#prevent-pushing-secrets-to-the-repository
competitor_one: true
competitor_two: sortof
- title: "Prevent committing secrets in the repositories"
- title: "Prevent committing secrets in repositories"
description: "GitLab provides a way to avoid committing sensitive files to your repositories automatically."
link_description: "Documentation"
link: https://docs.gitlab.com/ee/push_rules/push_rules.html#prevent-pushing-secrets-to-the-repository
Loading
Loading
@@ -113,19 +119,25 @@ features:
- title: "Geographic Replication with GitLab Geo"
description: "To improve collaboration, remote teams need the ability to be able to seamlessly work across geographical boundaries. GitLab Geo creates read only mirrors of your GitLab instance so your remote employees can clone and fetch large repos quickly, while GitHub has no similar feature."
link_description: "Read the Geo docs for more information"
link: http://docs.gitlab.com/ee/gitlab-geo/
link: https://docs.gitlab.com/ee/gitlab-geo/
competitor_one: true
competitor_two: false
- title: "Lock Files"
description: "Working with multiple people on the same file can be a risk. Conflicts when merging a non-text file are hard to overcome and will require a lot of manual work to resolve. With GitLab, File Locking helps you avoid merge conflicts and better manage your binary files by preventing everyone, except you, from modifying a specific file or entire directory."
link_description: "Read the File Locking documentation"
link: http://docs.gitlab.com/ee/user/project/file_lock.html
link: https://docs.gitlab.com/ee/user/project/file_lock.html
competitor_one: true
competitor_two: false
- title: "Application performance monitoring"
description: "GitLab collects and displays performance metrics for deployed apps, leveraging Prometheus. Developers can quickly and easily determine the impact of any changes, without leaving GitLab. GitHub requires a 3rd party product, adding additional cost and separate workflows."
link_description: "Learn more about monitoring deployed apps"
link: http://docs.gitlab.com/ce/user/project/integrations/prometheus.html
competitor_one: true
competitor_two: false
- title: "Monitoring built-in"
description: "GitLab ships with an open source monitoring solution, Prometheus, which offers world-class monitoring of the GitLab server's resources."
description: "GitLab ships with an open source monitoring solution, Prometheus, which offers world-class monitoring of the GitLab service. GitHub only provides hardware metrics using SNMP."
link_description: "Documentation about Monitoring"
link: http://docs.gitlab.com/runner/monitoring/
link: https://docs.gitlab.com/ce/administration/monitoring/prometheus/index.html
competitor_one: true
competitor_two: false
- title: "Access to and possibility to modify your source code"
Loading
Loading
@@ -158,6 +170,18 @@ features:
link:
competitor_one: true
competitor_two: false
- title: "A comprehensive API"
description: "GitLab provides APIs for most features, allowing developers to create deeper integrations with the product."
link_description: "Read our API Documentation"
link: https://docs.gitlab.com/ee/api/
competitor_one: true
competitor_two: true
- title: "Burndown Charts"
description: "GitLab provides Burndown Charts as part of Milestones. This allows users to better track progress during a sprint or while working on a new version of their software."
link_description: "Read our Burndown Chart Documentation"
link: https://docs.gitlab.com/ee/user/project/milestones/index.html#burndown-charts
competitor_one: true
competitor_two: false
- title: "New features every month"
description: "GitLab is updated with new features and improvements every month on the 22nd."
link_description: ""
Loading
Loading
title: "GitLab EEP vs. GitLab EES"
pdf: gitlab-ees-vs-gitlab-eep.pdf
title: "GitLab EE Starter vs. GitLab EE Premium"
#pdf: gitlab-ees-vs-gitlab-eep.pdf
pdf: 'null'
competitor_one:
name: 'GitLab CE'
logo: '/images/comparison/ce-gitlab-logo.svg'
name: 'GitLab EEP'
logo: '/images/comparison/eep-gitlab-logo.svg'
competitor_two:
name: 'GitLab EE'
logo: '/images/comparison/ee-gitlab-logo.svg'
name: 'GitLab EES'
logo: '/images/comparison/ees-gitlab-logo.svg'
last_updated: 'May 11, 2017'
feature_page: "All the features listed on"
feature_page_link_description: "the Products page"
feature_page_link_description_2: ", plus the following:"
feature_page_link: /products/#compare-options
features:
- title: "Feature 1"
description: "Lorem ipsum dolor sit amet."
- title: "Improved distributed collaboration with GitLab Geo"
description: |
When development teams are spread across two or more teams geographical
locations, but their GitLab instance is in a single location, fetching
and cloning large repositories can take a long time. Built for distributed
teams, GitLab Geo allows for read-only mirrors of your GitLab instance,
reducing the time it takes to clone and fetch large repos and improving
your collaboration process.
link_description: "Learn more about GitLab Geo."
link: /features/gitlab-geo/
competitor_one: true
competitor_two: true
- title: "Feature 2"
description: "Lorem ipsum dolor sit amet."
competitor_two: false
- title: "Dedicated High Availability support"
description: |
To avoid downtime, GitLab Enterprise Edition Premium offers support for
High Availability (HA). A Service Engineer will help you identify your
specific HA needs and map out an architecture.
link_description: "Learn more about GitLab's High availability."
link: /high-availability/
competitor_one: true
competitor_two: false
- title: "Quicker support response times"
description: |
For mission critical releases, you cannot afford downtime. GitLab Enterprise
Edition Premium provides 4-hour support response time during the hours of
8AM-8PM EST (Mon-Fri), and 24x7 emergency support, so you can get the support
you need, wherever, whenever.
link_description: "Learn more about our Premium Support."
link: /features/premium-support/
competitor_one: true
competitor_two: false
- title: "Live upgrade assistance"
description: |
To ensure that your team remains productive during scheduled upgrades,
GitLab Enterprise Edition offers live upgrade assistance. A dedicated
GitLab Service Engineer will join a live screen share to help you through
the process to ensure there aren't any surprises.
link_description: "Learn more about our Premium Support."
link: /features/premium-support/
competitor_one: true
competitor_two: false
- title: "Get up and running fast with dedicated training"
description: |
To get up to speed quickly with new tools, especially when members of
your team are new to Git, Enterprise Edition Premium helps ease this
transition by giving your team a single point of contact for all of your
onboarding, training, upgrading, and troubleshooting needs.
link_description: "Learn more about our Premium Support."
link: /features/premium-support/
competitor_one: true
competitor_two: false
- title: "Protect your files with file locking"
description: |
Working with multiple people on the same file can be a risk. Conflicts
when merging a non-text file are hard to overcome and will require a lot
of manual work to resolve. With GitLab Enterprise Edition Premium, File
Locking helps you avoid merge conflicts and better manage your binary
files by preventing everyone, except you, from modifying a specific file
or entire directory.
link_description: "Learn more about File Locking."
link: /features/file-locking/
competitor_one: true
competitor_two: false
- title: "Admin control with Pivotal Tile"
description: |
Enterprise developers want their development toolkit to be more
customizable, more integrated, and more secure. With GitLab Enterprise
Edition Premium, developers will be able to easily deploy GitLab as a
pre-configured appliance using Ops Manager (BOSH) for Pivotal Cloud Foundry.
link_description: "Learn more about Pivotal Cloud Foundry Tile for GitLab."
link: /2015/11/03/pivotal-cloud-foundry-tile-for-gitlab-ee/
competitor_one: true
competitor_two: false
- title: "Monitor Kubernetes deployments with Deploy Boards"
description: |
GitLab Enterprise Edition Premium
ships with Deploy Boards offering a consolidated view of the current health
and status of each CI environment running on Kubernetes. The status of each
pod of your latest deployment is displayed seamlessly within GitLab without
the need to access Kubernetes.
link_description: "Learn more about Deploy Boards."
link: 'https://docs.gitlab.com/ee/user/project/deploy_boards.html'
competitor_one: true
competitor_two: false
- title: "Support for Canary Deployments monitoring"
description: |
GitLab Enterprise Edition Premium can monitor your Canary Deployments when
deploying your applications with Kubernetes.
link_description: "Learn more about configuring Canary Deployments."
link: 'https://docs.gitlab.com/ee/user/project/deploy_boards.html#canary-deployments'
competitor_one: true
competitor_two: false
title: "Asana vs GitLab Issue Boards"
competitor_one:
name: 'GitLab Issue Boards'
logo: '/images/comparison/gitlab-logo.svg'
competitor_two:
name: 'Asana'
logo: '/images/comparison/asana-logo.png'
last_updated: 'May 5, 2017'
features:
- title: "Work with your team"
description: "With GitLab your entire team has access to the project's Issue Boards. Asana also allows any team member to access the project's tasks."
competitor_one: true
competitor_two: true
- title: "Multiple Issue Boards"
description: "Asana let's you create multiple tasks lists. GitLab Multiple Issue Boards, available on GitLab Enterprise Edition, also makes it possible, improving your workflow by grouping different lists in multiple boards."
link_description: "Learn more about Multiple Issue Boards."
link: 'https://docs.gitlab.com/ee/user/project/issue_board.html#multiple-issue-boards'
competitor_one: true
competitor_two: sortof
- title: "Create new issues from the board"
description: "With GitLab Issue Boards, you can create issues directly from the board and assign multiple labels allowing them to appear on multiple boards. With Asana you can create new tasks from each list but not assign them to multiple lists."
link_description: "Learn how to create a new issue from the Issue Board."
link: 'https://docs.gitlab.com/ce/user/project/issues/create_new_issue.html#new-issue-from-the-issue-board'
competitor_one: true
competitor_two: sortof
- title: "Built-in your software development platform"
description: "There's no need to configure or integrate anything, GitLab Issue Boards are built-in GitLab. Asana is a third-party tool that optionally integrates with GitHub via Asana PowerUps. Note that you only have access to one PowerUp per Asana free account."
link_description: "Learn more about GitLab Issue Boards."
link: /features/issueboard/
competitor_one: true
competitor_two: false
- title: "Complete Project Overview"
description: "GitLab Issue Boards give you a complete overview of your project's state: issue cards can be ordered in and across multiple columns, each card indicates who is working on it, the deadline and labels. Asana is built around individula team member task lists and does not give as complete of an project overview as GitLab Issue Boards."
competitor_one: true
competitor_two: false
- title: "Construct Issue Boards around Issue labels"
description: "An Issue Board is based on its project's label structure, therefore, it applies the same descriptive labels to indicate placement on the board. GitLab issues can appear on multiple Issue and they still have meaning without the context of a particular board. Asana allows you to tag tasks but not build issue boards around them."
link_description: "Learn more about labels and Issue Boards"
link: 'https://docs.gitlab.com/ce/user/project/issue_board.html#overview'
competitor_one: true
competitor_two: false
- title: "Add multiple issues to the board"
description: "From an Issue Board, you can add multiple issues to lists in the board by selecting one or more existing issues. With Asana, you can only add one by one to a Asana card, not to an entire list or board."
link_description: "Learn how to add multiple issues to your Issue Board."
link: 'https://docs.gitlab.com/ee/user/project/issue_board.html#adding-issues-to-a-list'
competitor_one: true
competitor_two: false
title: "Trello vs GitLab Issue Boards"
pdf: gitlab-issueboards-vs-trello.pdf
competitor_one:
name: 'GitLab Issue Boards'
logo: '/images/comparison/gitlab-logo.svg'
competitor_two:
name: 'Trello'
logo: '/images/comparison/trello-logo.svg'
last_updated: 'May 5, 2017'
features:
- title: "Built-in your software development platform"
description: "There's no need to configure or integrate anything, GitLab Issue Boards are built-in GitLab. Trello is a third-party tool that optionally integrates with GitHub via Trello PowerUps. Note that you only have access to one PowerUp per Trello free account."
link_description: "Learn more about GitLab Issue Boards."
link: /features/issueboard/
competitor_one: true
competitor_two: false
- title: "Keep focused on what is important"
description: "Trello is a good task manager with the ability to create cards about everything. With Issue Boards, you focus on getting the job done by organizing and prioritizing your issues."
link_description: "Learn from the Codepen team why they decided to use Issue Boards instead of Trello."
link: /2017/01/27/codepen-welcome-to-gitlab/#project-management-everything-in-one-place
competitor_one: true
competitor_two: true
- title: "Multiple boards"
description: "Trello let's you create multiple boards to help you to organize your tasks. GitLab Multiple Issue Boards, available on GitLab Enterprise Edition, also makes it possible, improving your workflow by grouping different lists in multiple boards."
link_description: "Learn more about Multiple Issue Boards."
link: 'https://docs.gitlab.com/ee/user/project/issue_board.html#multiple-issue-boards'
competitor_one: true
competitor_two: true
- title: "Consistent labels structure"
description: "An Issue Board is based on its project's label structure, therefore, it applies the same descriptive labels to indicate placement on the board. GitLab Issue Boards not just position issue cards in a column, but also allows them to be in multiple boards and still have meaning without the context of a particular board."
link_description: "Learn more about labels and Issue Boards"
link: 'https://docs.gitlab.com/ce/user/project/issue_board.html#overview'
competitor_one: true
competitor_two: false
- title: "Create new issue from the board"
description: "With Trello Boards, you can't create new issues from the board, even when integrated with GitHub (Trello PowerUps). With Issue Boards, you create your issue right from the board, out of the box."
link_description: "Learn how to create a new issue from the Issue Board."
link: 'https://docs.gitlab.com/ce/user/project/issues/create_new_issue.html#new-issue-from-the-issue-board'
competitor_one: true
competitor_two: false
- title: "Add multiple issues to the board"
description: "From an Issue Board, you can add multiple issues to lists in the board by selecting one or more existing issues. With Trello, you can only add one by one to a Trello card, not to an entire list or board."
link_description: "Learn how to add multiple issues to your Issue Board."
link: 'https://docs.gitlab.com/ee/user/project/issue_board.html#adding-issues-to-a-list'
competitor_one: true
competitor_two: false
- title: "Work with your team"
description: "With GitLab your entire team has access to the project's Issue Boards. With Trello, working with your team is limited to basic access for Trello's free accounts; only Trello Business and Enterprise subscriptions give you access to their full team-related features."
competitor_one: true
competitor_two: sortof
title: "GitHub Pull Request vs GitLab Merge Request"
#pdf: gitlab-merge-request-vs-github-pull-request.pdf
pdf: 'null'
competitor_two:
name: 'GitHub Pull Requests'
logo: '/images/comparison/github-logo.svg'
competitor_one:
name: 'GitLab Merge Request'
logo: '/images/comparison/gitlab-logo.svg'
last_updated: 'May 16, 2017'
features:
- title: "Labels"
description: "Labels provide an easy way to categorize issues or merge requests based on descriptive titles as 'bug', or 'documentation'."
competitor_one: true
competitor_two: true
link: https://docs.gitlab.com/ce/user/project/labels.html
link_description: "Learn more about GitLab Labels."
- title: "Improved UX"
description: "GitLab Merge Requests have their own description and title displayed before the timeline feed."
competitor_one: true
competitor_two: sortof
link: '/images/comparison/github-pull-request-vs-gitlab-merge-request.png'
link_description: |
<i class="fa fa-file-image-o" aria-hidden="true" style="font-size: .9em"></i> View side-by-side comparison
- title: "Edit merge request"
description: "GitLab Merge Requests are editable by the author, the project's owners and users with master access. Every field is editable, as well as the target branch."
competitor_one: true
competitor_two: false
link: 'https://docs.gitlab.com/ee/user/project/merge_requests/'
link_description: Read through GitLab Merge Request's Documentation.
- title: "Built-in Continuous Integration"
description: "Use GitLab CI/CD (built-in GitLab) to build, test, and deploy your app with continuous methods, and your build results will be displayed on merge requests."
competitor_one: true
competitor_two: false
link: 'https://docs.gitlab.com/ee/ci/pipelines.html#pipeline-graphs'
link_description: Take a peek at GitLab's Pipeline Graphs.
- title: "Fast-Forward merge available for all merge requests"
description: |
With fast-forward merges, you keep a linear Git history without creating merge commits. With GitLab, they're configurable on a per-project basis; with GitHub, they are available only for squashed or rebased merge commits.
competitor_one: true
competitor_two: false
link: 'https://docs.gitlab.com/ee/user/project/merge_requests/fast_forward_merge.html#fast-forward-merge-requests'
link_description: "Lean more about Fast-Forward Merge Requests."
- title: "Fix merge conflicts from the UI"
description: "When a merge request has conflicts, it is possible to resolve those conflicts right from the GitLab UI."
link_description: "Learn more about Merge Conflict Resolution."
link: "https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html#merge-conflict-resolution"
competitor_one: true
competitor_two: true
- title: "Close issue(s) when merged"
description: "With GitLab, you can use specific keywords to close one or more issues as soon as a merge request is merged."
competitor_one: true
competitor_two: true
link_description: "Learn more about automatically closing issues."
link: "https://docs.gitlab.com/ce/user/project/issues/closing_issues.html#via-merge-request"
- title: "Review Apps"
description: |
With <a href="/features/review-apps/">GitLab Review Apps</a>, you can preview the changes made to your app by that merge request in dynamic environments. These environments are automaticaly destroyed when the merge request gets merged.
competitor_one: true
competitor_two: false
link: 'https://docs.gitlab.com/ce/ci/review_apps/index.html#getting-started-with-review-apps'
link_description: Learn how to get started with Review Apps.
- title: "Integrated web terminal"
description: "GitLab can open a terminal session directly from your environment if your review app is deployed on Kubernetes. This is a very powerful feature where you can quickly debug issues without leaving the comfort of your web browser."
competitor_one: true
competitor_two: false
link: 'https://docs.gitlab.com/ce/ci/environments.html#web-terminals'
link_description: "Learn more about GitLab Web Terminals."
- title: "Watch your jobs running"
description: |
With <a href="/features/gitlab-ci-cd">GitLab's built-in CI/CD</a>, you can watch your jobs running right from the UI for debugging and optimizing your CI scripts.
competitor_one: true
competitor_two: false
- title: "Squash and merge"
description: "Squashing lets you tidy up the commit history of a branch when accepting a merge request by squashing a long list of commits into a single commit on merge."
competitor_one: true
competitor_two: true
link: 'https://docs.gitlab.com/ee/user/project/merge_requests/squash_and_merge.html'
link_description: "Learn more about GitLab Squash and Merge."
- title: "Approvals"
description: "Merge Request Approvals make your workflow smoother when your are working with your team. With GitLab, approvals are configured per project, and a user can choose the approver in a per-merge request basis."
competitor_one: true
competitor_two: true
link: 'https://docs.gitlab.com/ee/user/project/merge_requests/merge_request_approvals.html#merge-request-approvals'
link_description: "Read through Merge Request Approvals Documentation."
- title: "Resolvable discussions"
description: "Code or text review is faster and more effective with inline comments in merge requests. In GitLab, Merge Request inline comments are interpreted as a discussion. You can configure your project to only accept merge requests when all discussions are resolved."
competitor_one: true
competitor_two: false
link: 'https://docs.gitlab.com/ce/user/discussions/#resolvable-discussions'
link_description: "Learn more about Resolvable Discussions."
- title: "Todos"
description: "When a user is mentioned in or assigned to a merge request it will be included in the user Todos, making the development workflow faster and easier to track."
competitor_one: true
competitor_two: false
link: 'https://docs.gitlab.com/ee/workflow/todos.html#gitlab-todos'
link_description: "Learn more about GitLab Todos."
- title: "Time tracking"
description: "Time Tracking allows you to track estimates and time spent on issues and merge requests within GitLab."
competitor_one: true
competitor_two: false
link: 'https://docs.gitlab.com/ce/workflow/time_tracking.html#time-tracking'
link_description: "Learn more about GitLab Time Tracking."
- title: "Integrated with Cycle Analytics"
description: "Cycle Analytics lets you know how long it takes your team to complete each stage in their workflow from idea to production."
competitor_one: true
competitor_two: false
link_description: "Learn more about GitLab Cycle Analytics."
link: '/features/cycle-analytics/'
- title: "Enriched markdown support"
description: "Both Merge Request descriptions and comments support GFM - GitLab Flavored Markdown."
competitor_one: true
competitor_two: true
link_description: "Learn more about GitLab Flavored Markdown."
link: 'https://docs.gitlab.com/ce/user/markdown.html'
- title: "Pipeline Views"
description: "GitLab Merge Requests are presented with multiple views: Discussion, Commits, Pipelines, Changes (diffs). On GitHub, even if a repository integrates with a Continuous Integration third-party tool, you can't see its pipelines through GitHub's UI."
competitor_one: true
competitor_two: false
- title: "Cherry Pick merge request"
description: "Cherry-pick any commit in the UI by simply clicking the Cherry-Pick button in a merged merge request or a commit."
competitor_one: true
competitor_two: false
link: 'https://docs.gitlab.com/ce/user/project/merge_requests/#cherry-pick-changes'
link_description: "Learn more about Cherry Picking merge requests."
- title: "Merge when pipeline succeeds"
description: "When reviewing a merge request that looks ready to merge but still has one or more CI jobs running, you can set it to be merged automatically when the jobs pipeline succeeds."
competitor_one: true
competitor_two: false
link: 'https://docs.gitlab.com/ce/user/project/merge_requests/merge_when_pipeline_succeeds.html'
link_description: "Learn more about Merge when pipeline succeeds."
- title: "Revert commits from the UI"
description: "Revert any commit from GitLab's UI, with a click of a button."
competitor_one: true
competitor_two: true
link: 'https://docs.gitlab.com/ee/user/project/merge_requests/revert_changes.html#reverting-a-commit'
link_description: "Learn how to revert a commit or a merge request from the GitLab UI."
- title: "Work in Progress Merge Request (WIP)"
description: "Prevent merge requests from accidentally being accepted before they're completely ready by marking them as Work In Progress (WIP)."
competitor_one: true
competitor_two: false
link: 'https://docs.gitlab.com/ce/user/project/merge_requests/work_in_progress_merge_requests.html'
link_description: "Learn more about WIP MRs."
- title: "Merge Request template"
description: "By adding a description template to your MRs, users who create a new issue or merge request can select a template to help them to communicate effectively."
competitor_one: true
competitor_two: false
link: 'https://docs.gitlab.com/ce/user/project/description_templates.html#creating-merge-request-templates'
link_description: "Learn more about GitLab Description Templates."
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment