Commit 73788b35 authored by GitLab Bot's avatar GitLab Bot

Automatic merge of gitlab-org/gitlab-ce master

parents e62ef2df 0ae208dd
...@@ -696,12 +696,11 @@ project or branch name. Special characters can include: ...@@ -696,12 +696,11 @@ project or branch name. Special characters can include:
- Trailing hyphen/dash - Trailing hyphen/dash
- Double hyphen/dash - Double hyphen/dash
To get around this, you can [change the group path](../user/group/index.md#changing-a-groups-path), To get around this, you can [change the group path](../user/group/index.md#changing-a-groups-path),
[change the project path](../user/project/settings/index.md#renaming-a-repository) or change the [change the project path](../user/project/settings/index.md#renaming-a-repository) or change the
branch name. Another option is to create a [push rule](../push_rules/push_rules.html) to prevent branch name. Another option is to create a [push rule](../push_rules/push_rules.html) to prevent
this at the instance level. this at the instance level.
[ce-18239]: https://gitlab.com/gitlab-org/gitlab-ce/issues/18239 [ce-18239]: https://gitlab.com/gitlab-org/gitlab-ce/issues/18239
[docker-insecure-self-signed]: https://docs.docker.com/registry/insecure/#use-self-signed-certificates [docker-insecure-self-signed]: https://docs.docker.com/registry/insecure/#use-self-signed-certificates
[reconfigure gitlab]: restart_gitlab.md#omnibus-gitlab-reconfigure [reconfigure gitlab]: restart_gitlab.md#omnibus-gitlab-reconfigure
......
...@@ -70,6 +70,7 @@ To change the local storage path: ...@@ -70,6 +70,7 @@ To change the local storage path:
enabled: true enabled: true
storage_path: shared/dependency_proxy storage_path: shared/dependency_proxy
``` ```
1. [Restart GitLab] for the changes to take effect. 1. [Restart GitLab] for the changes to take effect.
### Using object storage ### Using object storage
......
...@@ -30,7 +30,7 @@ To bring the former **primary** node up to date: ...@@ -30,7 +30,7 @@ To bring the former **primary** node up to date:
`sudo systemctl enable gitlab-runsvdir`. For CentOS 6, you need to install `sudo systemctl enable gitlab-runsvdir`. For CentOS 6, you need to install
the GitLab instance from scratch and set it up as a **secondary** node by the GitLab instance from scratch and set it up as a **secondary** node by
following [Setup instructions][setup-geo]. In this case, you don't need to follow the next step. following [Setup instructions][setup-geo]. In this case, you don't need to follow the next step.
NOTE: **Note:** If you [changed the DNS records](index.md#step-4-optional-updating-the-primary-domain-dns-record) NOTE: **Note:** If you [changed the DNS records](index.md#step-4-optional-updating-the-primary-domain-dns-record)
for this node during disaster recovery procedure you may need to [block for this node during disaster recovery procedure you may need to [block
all the writes to this node](planned_failover.md#prevent-updates-to-the-primary-node) all the writes to this node](planned_failover.md#prevent-updates-to-the-primary-node)
......
...@@ -187,7 +187,7 @@ access to the **primary** node during the maintenance window. ...@@ -187,7 +187,7 @@ access to the **primary** node during the maintenance window.
before it is completed will cause the work to be lost. before it is completed will cause the work to be lost.
1. On the **primary** node, navigate to **Admin Area > Geo** and wait for the 1. On the **primary** node, navigate to **Admin Area > Geo** and wait for the
following conditions to be true of the **secondary** node you are failing over to: following conditions to be true of the **secondary** node you are failing over to:
- All replication meters to each 100% replicated, 0% failures. - All replication meters to each 100% replicated, 0% failures.
- All verification meters reach 100% verified, 0% failures. - All verification meters reach 100% verified, 0% failures.
- Database replication lag is 0ms. - Database replication lag is 0ms.
......
...@@ -116,7 +116,7 @@ There is an [issue where support is being discussed](https://gitlab.com/gitlab-o ...@@ -116,7 +116,7 @@ There is an [issue where support is being discussed](https://gitlab.com/gitlab-o
by default. However, Geo requires the **secondary** node to be able to by default. However, Geo requires the **secondary** node to be able to
connect to the **primary** node's database. For this reason, we need the address of connect to the **primary** node's database. For this reason, we need the address of
each node. each node.
NOTE: **Note:** For external PostgreSQL instances, see [additional instructions](external_database.md). NOTE: **Note:** For external PostgreSQL instances, see [additional instructions](external_database.md).
If you are using a cloud provider, you can lookup the addresses for each If you are using a cloud provider, you can lookup the addresses for each
...@@ -424,22 +424,22 @@ data before running `pg_basebackup`. ...@@ -424,22 +424,22 @@ data before running `pg_basebackup`.
- If PostgreSQL is listening on a non-standard port, add `--port=` as well. - If PostgreSQL is listening on a non-standard port, add `--port=` as well.
- If your database is too large to be transferred in 30 minutes, you will need - If your database is too large to be transferred in 30 minutes, you will need
to increase the timeout, e.g., `--backup-timeout=3600` if you expect the to increase the timeout, e.g., `--backup-timeout=3600` if you expect the
initial replication to take under an hour. initial replication to take under an hour.
- Pass `--sslmode=disable` to skip PostgreSQL TLS authentication altogether - Pass `--sslmode=disable` to skip PostgreSQL TLS authentication altogether
(e.g., you know the network path is secure, or you are using a site-to-site (e.g., you know the network path is secure, or you are using a site-to-site
VPN). This is **not** safe over the public Internet! VPN). This is **not** safe over the public Internet!
- You can read more details about each `sslmode` in the - You can read more details about each `sslmode` in the
[PostgreSQL documentation][pg-docs-ssl]; [PostgreSQL documentation][pg-docs-ssl];
the instructions above are carefully written to ensure protection against the instructions above are carefully written to ensure protection against
both passive eavesdroppers and active "man-in-the-middle" attackers. both passive eavesdroppers and active "man-in-the-middle" attackers.
- Change the `--slot-name` to the name of the replication slot - Change the `--slot-name` to the name of the replication slot
to be used on the **primary** database. The script will attempt to create the to be used on the **primary** database. The script will attempt to create the
replication slot automatically if it does not exist. replication slot automatically if it does not exist.
- If you're repurposing an old server into a Geo **secondary** node, you'll need to - If you're repurposing an old server into a Geo **secondary** node, you'll need to
add `--force` to the command line. add `--force` to the command line.
- When not in a production machine you can disable backup step if you - When not in a production machine you can disable backup step if you
really sure this is what you want by adding `--skip-backup` really sure this is what you want by adding `--skip-backup`
The replication process is now complete. The replication process is now complete.
......
...@@ -19,10 +19,10 @@ Once removed from the Geo admin page, you must stop and uninstall the **secondar ...@@ -19,10 +19,10 @@ Once removed from the Geo admin page, you must stop and uninstall the **secondar
```bash ```bash
# Stop gitlab and remove its supervision process # Stop gitlab and remove its supervision process
sudo gitlab-ctl uninstall sudo gitlab-ctl uninstall
# Debian/Ubuntu # Debian/Ubuntu
sudo dpkg --remove gitlab-ee sudo dpkg --remove gitlab-ee
# Redhat/Centos # Redhat/Centos
sudo rpm --erase gitlab-ee sudo rpm --erase gitlab-ee
``` ```
...@@ -32,9 +32,9 @@ Once GitLab has been uninstalled from the **secondary** node, the replication sl ...@@ -32,9 +32,9 @@ Once GitLab has been uninstalled from the **secondary** node, the replication sl
1. On the **primary** node, start a PostgreSQL console session: 1. On the **primary** node, start a PostgreSQL console session:
```bash ```bash
sudo gitlab-psql sudo gitlab-psql
``` ```
NOTE: **Note:** NOTE: **Note:**
Using `gitlab-rails dbconsole` will not work, because managing replication slots requires superuser permissions. Using `gitlab-rails dbconsole` will not work, because managing replication slots requires superuser permissions.
...@@ -43,9 +43,9 @@ Once GitLab has been uninstalled from the **secondary** node, the replication sl ...@@ -43,9 +43,9 @@ Once GitLab has been uninstalled from the **secondary** node, the replication sl
```sql ```sql
SELECT * FROM pg_replication_slots; SELECT * FROM pg_replication_slots;
``` ```
1. Remove the replication slot for the **secondary** node: 1. Remove the replication slot for the **secondary** node:
```sql ```sql
SELECT pg_drop_replication_slot('<name_of_slot>'); SELECT pg_drop_replication_slot('<name_of_slot>');
``` ```
...@@ -162,14 +162,14 @@ contention due to certain workloads. ...@@ -162,14 +162,14 @@ contention due to certain workloads.
- **Status:** Work-in-progress - **Status:** Work-in-progress
- **Supported Users (approximate):** 10,000 - **Supported Users (approximate):** 10,000
- **Related Issues:** [gitlab-com/support/support-team-meta#1513](https://gitlab.com/gitlab-com/support/support-team-meta/issues/1513), - **Related Issues:** [gitlab-com/support/support-team-meta#1513](https://gitlab.com/gitlab-com/support/support-team-meta/issues/1513),
[gitlab-org/quality/team-tasks#110](https://gitlab.com/gitlab-org/quality/team-tasks/issues/110) [gitlab-org/quality/team-tasks#110](https://gitlab.com/gitlab-org/quality/team-tasks/issues/110)
The Support and Quality teams are in the process of building and performance testing The Support and Quality teams are in the process of building and performance testing
an environment that will support about 10,000 users. The specifications below an environment that will support about 10,000 users. The specifications below
are a work-in-progress representation of the work so far. Quality will be are a work-in-progress representation of the work so far. Quality will be
certifying this environment in FY20-Q2. The specifications may be adjusted certifying this environment in FY20-Q2. The specifications may be adjusted
prior to certification based on performance testing. prior to certification based on performance testing.
- 3 PostgreSQL - 4 CPU, 8GB RAM per node - 3 PostgreSQL - 4 CPU, 8GB RAM per node
- 1 PgBouncer - 2 CPU, 4GB RAM - 1 PgBouncer - 2 CPU, 4GB RAM
...@@ -211,4 +211,3 @@ separately: ...@@ -211,4 +211,3 @@ separately:
1. [Configure the GitLab application servers](gitlab.md) 1. [Configure the GitLab application servers](gitlab.md)
1. [Configure the load balancers](load_balancer.md) 1. [Configure the load balancers](load_balancer.md)
1. [Monitoring node (Prometheus and Grafana)](monitoring_node.md) 1. [Monitoring node (Prometheus and Grafana)](monitoring_node.md)
...@@ -41,9 +41,9 @@ detail below. ...@@ -41,9 +41,9 @@ detail below.
- Every session URL that is created has an authorization header that needs to be sent, to establish a `wss` connection. - Every session URL that is created has an authorization header that needs to be sent, to establish a `wss` connection.
- The session URL is not exposed to the users in any way. GitLab holds all the state internally and proxies accordingly. - The session URL is not exposed to the users in any way. GitLab holds all the state internally and proxies accordingly.
## Enabling and disabling terminal support ## Enabling and disabling terminal support
NOTE: **Note:** AWS Elastic Load Balancers (ELBs) do not support web sockets. NOTE: **Note:** AWS Elastic Load Balancers (ELBs) do not support web sockets.
AWS Application Load Balancers (ALBs) must be used if you want web terminals AWS Application Load Balancers (ALBs) must be used if you want web terminals
to work. See [AWS Elastic Load Balancing Product Comparison](https://aws.amazon.com/elasticloadbalancing/features/#compare) to work. See [AWS Elastic Load Balancing Product Comparison](https://aws.amazon.com/elasticloadbalancing/features/#compare)
for more information. for more information.
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
## Git housekeeping ## Git housekeeping
There are few tasks you can run to schedule a git housekeeping to start at the There are few tasks you can run to schedule a git housekeeping to start at the
next repository sync in a **Secondary node**: next repository sync in a **Secondary node**:
### Incremental Repack ### Incremental Repack
...@@ -23,7 +23,7 @@ sudo -u git -H bundle exec rake geo:git:housekeeping:incremental_repack RAILS_EN ...@@ -23,7 +23,7 @@ sudo -u git -H bundle exec rake geo:git:housekeeping:incremental_repack RAILS_EN
### Full Repack ### Full Repack
This is equivalent of running `git repack -d -A --pack-kept-objects` on a This is equivalent of running `git repack -d -A --pack-kept-objects` on a
_bare_ repository which will optionally, write a reachability bitmap index _bare_ repository which will optionally, write a reachability bitmap index
when this is enabled in GitLab. when this is enabled in GitLab.
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
>**Note:** >**Note:**
> >
> - [Introduced][ce-3050] in GitLab 8.9. > - [Introduced][ce-3050] in GitLab 8.9.
> - Importing will not be possible if the import instance version is lower > - Importing will not be possible if the import instance version is lower
> than that of the exporter. > than that of the exporter.
> - For existing installations, the project import option has to be enabled in > - For existing installations, the project import option has to be enabled in
> application settings (`/admin/application_settings`) under 'Import sources'. > application settings (`/admin/application_settings`) under 'Import sources'.
> - The exports are stored in a temporary [shared directory][tmp] and are deleted > - The exports are stored in a temporary [shared directory][tmp] and are deleted
> every 24 hours by a specific worker. > every 24 hours by a specific worker.
> - ImportExport can use object storage automatically starting from GitLab 11.3 > - ImportExport can use object storage automatically starting from GitLab 11.3
The GitLab Import/Export version can be checked by using: The GitLab Import/Export version can be checked by using:
......
# Repository Storage Rake Tasks # Repository Storage Rake Tasks
This is a collection of rake tasks you can use to help you list and migrate This is a collection of rake tasks you can use to help you list and migrate
existing projects and attachments associated with it from Legacy storage to existing projects and attachments associated with it from Legacy storage to
the new Hashed storage type. the new Hashed storage type.
You can read more about the storage types [here][storage-types]. You can read more about the storage types [here][storage-types].
## Migrate existing projects to Hashed storage ## Migrate existing projects to Hashed storage
Before migrating your existing projects, you should Before migrating your existing projects, you should
[enable hashed storage][storage-migration] for the new projects as well. [enable hashed storage][storage-migration] for the new projects as well.
This task will schedule all your existing projects and attachments associated with it to be migrated to the This task will schedule all your existing projects and attachments associated with it to be migrated to the
**Hashed** storage type: **Hashed** storage type:
**Omnibus Installation** **Omnibus Installation**
...@@ -30,15 +30,15 @@ They both also accept a range as environment variable: ...@@ -30,15 +30,15 @@ They both also accept a range as environment variable:
```bash ```bash
# to migrate any non migrated project from ID 20 to 50. # to migrate any non migrated project from ID 20 to 50.
export ID_FROM=20 export ID_FROM=20
export ID_TO=50 export ID_TO=50
``` ```
You can monitor the progress in the **Admin Area > Monitoring > Background Jobs** page. You can monitor the progress in the **Admin Area > Monitoring > Background Jobs** page.
There is a specific Queue you can watch to see how long it will take to finish: There is a specific Queue you can watch to see how long it will take to finish:
`hashed_storage:hashed_storage_project_migrate` `hashed_storage:hashed_storage_project_migrate`
After it reaches zero, you can confirm every project has been migrated by running the commands bellow. After it reaches zero, you can confirm every project has been migrated by running the commands bellow.
If you find it necessary, you can run this migration script again to schedule missing projects. If you find it necessary, you can run this migration script again to schedule missing projects.
Any error or warning will be logged in Sidekiq's log file. Any error or warning will be logged in Sidekiq's log file.
...@@ -55,7 +55,7 @@ If you need to rollback the storage migration for any reason, you can follow the ...@@ -55,7 +55,7 @@ If you need to rollback the storage migration for any reason, you can follow the
NOTE: **Note:** Hashed Storage will be required in future version of GitLab. NOTE: **Note:** Hashed Storage will be required in future version of GitLab.
To prevent new projects from being created in the Hashed storage, To prevent new projects from being created in the Hashed storage,
you need to undo the [enable hashed storage][storage-migration] changes. you need to undo the [enable hashed storage][storage-migration] changes.
This task will schedule all your existing projects and associated attachments to be rolled back to the This task will schedule all your existing projects and associated attachments to be rolled back to the
...@@ -77,15 +77,14 @@ Both commands accept a range as environment variable: ...@@ -77,15 +77,14 @@ Both commands accept a range as environment variable:
```bash ```bash
# to rollback any migrated project from ID 20 to 50. # to rollback any migrated project from ID 20 to 50.
export ID_FROM=20 export ID_FROM=20
export ID_TO=50 export ID_TO=50
``` ```
You can monitor the progress in the **Admin Area > Monitoring > Background Jobs** page. You can monitor the progress in the **Admin Area > Monitoring > Background Jobs** page.
On the **Queues** tab, you can watch the `hashed_storage:hashed_storage_project_rollback` queue to see how long the process will take to finish. On the **Queues** tab, you can watch the `hashed_storage:hashed_storage_project_rollback` queue to see how long the process will take to finish.
After it reaches zero, you can confirm every project has been rolled back by running the commands bellow.
After it reaches zero, you can confirm every project has been rolled back by running the commands bellow.
If some projects weren't rolled back, you can run this rollback script again to schedule further rollbacks. If some projects weren't rolled back, you can run this rollback script again to schedule further rollbacks.
Any error or warning will be logged in Sidekiq's log file. Any error or warning will be logged in Sidekiq's log file.
...@@ -106,7 +105,7 @@ sudo gitlab-rake gitlab:storage:legacy_projects ...@@ -106,7 +105,7 @@ sudo gitlab-rake gitlab:storage:legacy_projects
sudo -u git -H bundle exec rake gitlab:storage:legacy_projects RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:storage:legacy_projects RAILS_ENV=production
``` ```
------ ---
To list projects using **Legacy** storage: To list projects using **Legacy** storage:
...@@ -139,7 +138,7 @@ sudo gitlab-rake gitlab:storage:hashed_projects ...@@ -139,7 +138,7 @@ sudo gitlab-rake gitlab:storage:hashed_projects
sudo -u git -H bundle exec rake gitlab:storage:hashed_projects RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:storage:hashed_projects RAILS_ENV=production
``` ```
------ ---
To list projects using **Hashed** storage: To list projects using **Hashed** storage:
...@@ -171,7 +170,7 @@ sudo gitlab-rake gitlab:storage:legacy_attachments ...@@ -171,7 +170,7 @@ sudo gitlab-rake gitlab:storage:legacy_attachments
sudo -u git -H bundle exec rake gitlab:storage:legacy_attachments RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:storage:legacy_attachments RAILS_ENV=production
``` ```
------ ---
To list project attachments using **Legacy** storage: To list project attachments using **Legacy** storage:
...@@ -203,7 +202,7 @@ sudo gitlab-rake gitlab:storage:hashed_attachments ...@@ -203,7 +202,7 @@ sudo gitlab-rake gitlab:storage:hashed_attachments
sudo -u git -H bundle exec rake gitlab:storage:hashed_attachments RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:storage:hashed_attachments RAILS_ENV=production
``` ```
------ ---
To list project attachments using **Hashed** storage: To list project attachments using **Hashed** storage:
......
...@@ -716,6 +716,7 @@ Example response if commit is signed: ...@@ -716,6 +716,7 @@ Example response if commit is signed:
``` ```
Example response if commit is unsigned: Example response if commit is unsigned:
```json ```json
{ {
"message": "404 GPG Signature Not Found" "message": "404 GPG Signature Not Found"
......
...@@ -634,11 +634,13 @@ Parameters: ...@@ -634,11 +634,13 @@ Parameters:
By default, groups only get 20 namespaces at a time because the API results are paginated. By default, groups only get 20 namespaces at a time because the API results are paginated.
To get more (up to 100), pass the following as an argument to the API call: To get more (up to 100), pass the following as an argument to the API call:
``` ```
/groups?per_page=100 /groups?per_page=100
``` ```
And to switch pages add: And to switch pages add:
``` ```
/groups?per_page=100&page=2 /groups?per_page=100&page=2
``` ```
......
...@@ -1331,9 +1331,11 @@ If you don't have permissions to accept this merge request - you'll get a `401` ...@@ -1331,9 +1331,11 @@ If you don't have permissions to accept this merge request - you'll get a `401`
If the merge request is already merged or closed - you get `405` and error message 'Method Not Allowed' If the merge request is already merged or closed - you get `405` and error message 'Method Not Allowed'
In case the merge request is not set to be merged when the pipeline succeeds, you'll also get a `406` error. In case the merge request is not set to be merged when the pipeline succeeds, you'll also get a `406` error.
``` ```
PUT /projects/:id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds PUT /projects/:id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds
``` ```
Parameters: Parameters:
- `id` (required) - The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user - `id` (required) - The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
**Valid access levels** **Valid access levels**
Currently, these levels are recognized: Currently, these levels are recognized:
``` ```
0 => No access 0 => No access
30 => Developer access 30 => Developer access
......
...@@ -43,7 +43,7 @@ Example response: ...@@ -43,7 +43,7 @@ Example response:
"ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba" "ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
], ],
"committed_date": "2018-09-20T09:26:24.000-07:00", "committed_date": "2018-09-20T09:26:24.000-07:00",
"authored_date": "2018-09-20T09:26:24.000-07:00", "authored_date": "2018-09-20T09:26:24.000-07:00",
"status": null "status": null
} }
``` ```
...@@ -141,6 +141,7 @@ Parameters: ...@@ -141,6 +141,7 @@ Parameters:
"message": null "message": null
} }
``` ```
The message will be `null` when creating a lightweight tag otherwise The message will be `null` when creating a lightweight tag otherwise
it will contain the annotation. it will contain the annotation.
......
...@@ -595,7 +595,7 @@ Example responses ...@@ -595,7 +595,7 @@ Example responses
## User counts ## User counts
Get the counts (same as in top right menu) of the currently signed in user. Get the counts (same as in top right menu) of the currently signed in user.
| Attribute | Type | Description | | Attribute | Type | Description |
| --------- | ---- | ----------- | | --------- | ---- | ----------- |
......
...@@ -79,10 +79,10 @@ image: java:8 ...@@ -79,10 +79,10 @@ image: java:8
stages: stages:
- build - build
- deploy - deploy
before_script: before_script:
- chmod +x mvnw - chmod +x mvnw
build: build:
stage: build stage: build
script: ./mvnw package script: ./mvnw package
......
...@@ -452,6 +452,7 @@ To start using Container Registry on our machine, we first need to login to the ...@@ -452,6 +452,7 @@ To start using Container Registry on our machine, we first need to login to the
```bash ```bash
docker login registry.gitlab.com docker login registry.gitlab.com
``` ```
Then we can build and push our image to GitLab: Then we can build and push our image to GitLab:
```bash ```bash
......
...@@ -6,7 +6,7 @@ type: tutorial ...@@ -6,7 +6,7 @@ type: tutorial
This guide covers basic building instructions for PHP projects. This guide covers basic building instructions for PHP projects.
Two testing scenarios are covered: using the Docker executor and Two testing scenarios are covered: using the Docker executor and
using the Shell executor. using the Shell executor.
## Test PHP projects using the Docker executor ## Test PHP projects using the Docker executor
......
...@@ -69,12 +69,14 @@ correctly with your CI jobs: ...@@ -69,12 +69,14 @@ correctly with your CI jobs:
1. Next, if you are using `gitlab-runner` v1.10+, you can set the 1. Next, if you are using `gitlab-runner` v1.10+, you can set the
`GIT_SUBMODULE_STRATEGY` variable to either `normal` or `recursive` to tell `GIT_SUBMODULE_STRATEGY` variable to either `normal` or `recursive` to tell
the runner to fetch your submodules before the job: the runner to fetch your submodules before the job:
```yaml
variables: ```yaml
GIT_SUBMODULE_STRATEGY: recursive variables:
``` GIT_SUBMODULE_STRATEGY: recursive
See the [`.gitlab-ci.yml` reference](yaml/README.md#git-submodule-strategy) ```
for more details about `GIT_SUBMODULE_STRATEGY`.
See the [`.gitlab-ci.yml` reference](yaml/README.md#git-submodule-strategy)
for more details about `GIT_SUBMODULE_STRATEGY`.
1. If you are using an older version of `gitlab-runner`, then use 1. If you are using an older version of `gitlab-runner`, then use
`git submodule sync/update` in `before_script`: `git submodule sync/update` in `before_script`:
......
...@@ -8,7 +8,7 @@ type: reference ...@@ -8,7 +8,7 @@ type: reference
Interactive web terminals give the user access to a terminal in GitLab for Interactive web terminals give the user access to a terminal in GitLab for
running one-off commands for their CI pipeline. Since this is giving the user running one-off commands for their CI pipeline. Since this is giving the user
shell access to the environment where [GitLab Runner](https://docs.gitlab.com/runner/) shell access to the environment where [GitLab Runner](https://docs.gitlab.com/runner/)
is deployed, some [security precautions](../../administration/integration/terminal.md#security) were is deployed, some [security precautions](../../administration/integration/terminal.md#security) were
taken to protect the users. taken to protect the users.
...@@ -62,4 +62,3 @@ close the terminal window. ...@@ -62,4 +62,3 @@ close the terminal window.
## Interactive Web Terminals for the Web IDE **(ULTIMATE ONLY)** ## Interactive Web Terminals for the Web IDE **(ULTIMATE ONLY)**
Read the Web IDE docs to learn how to run [Interactive Terminals through the Web IDE](../../user/project/web_ide/index.md). Read the Web IDE docs to learn how to run [Interactive Terminals through the Web IDE](../../user/project/web_ide/index.md).
...@@ -70,7 +70,7 @@ template1=# CREATE USER runner WITH PASSWORD '$password' CREATEDB; ...@@ -70,7 +70,7 @@ template1=# CREATE USER runner WITH PASSWORD '$password' CREATEDB;
``` ```
*__Note:__ Notice that we created the user with the privilege to be able to *__Note:__ Notice that we created the user with the privilege to be able to
create databases (`CREATEDB`). In the following steps we will create a database create databases (`CREATEDB`). In the following steps we will create a database
explicitly for that user but having that privilege can be useful if in your explicitly for that user but having that privilege can be useful if in your
testing framework you have tools that drop and create databases.* testing framework you have tools that drop and create databases.*
......
...@@ -129,6 +129,7 @@ merge_request: ...@@ -129,6 +129,7 @@ merge_request:
author: author:
type: type:
``` ```
If you're working on the GitLab EE repository, the entry will be added to If you're working on the GitLab EE repository, the entry will be added to
`ee/changelogs/unreleased/` instead. `ee/changelogs/unreleased/` instead.
......
...@@ -58,9 +58,9 @@ issue is labeled with a subject label corresponding to your expertise. ...@@ -58,9 +58,9 @@ issue is labeled with a subject label corresponding to your expertise.
Subject labels are always all-lowercase. Subject labels are always all-lowercase.
## Team labels ## Team labels
**Important**: Most of the team labels will be soon deprecated in favor of [Group labels](#group-labels). **Important**: Most of the team labels will be soon deprecated in favor of [Group labels](#group-labels).
Team labels specify what team is responsible for this issue. Team labels specify what team is responsible for this issue.
Assigning a team label makes sure issues get the attention of the appropriate Assigning a team label makes sure issues get the attention of the appropriate
...@@ -98,7 +98,6 @@ indicate if an issue needs backend work, frontend work, or both. ...@@ -98,7 +98,6 @@ indicate if an issue needs backend work, frontend work, or both.
Team labels are always capitalized so that they show up as the first label for Team labels are always capitalized so that they show up as the first label for
any issue. any issue.
## Stage labels ## Stage labels
Stage labels specify which [DevOps stage][devops-stages] the issue belongs to. Stage labels specify which [DevOps stage][devops-stages] the issue belongs to.
...@@ -141,43 +140,42 @@ Group labels specify which [groups][structure-groups] the issue belongs to. ...@@ -141,43 +140,42 @@ Group labels specify which [groups][structure-groups] the issue belongs to.
The current group labels are: The current group labels are:
* ~"group::access" - ~"group::access"
* ~"group::measure" - ~"group::measure"
* ~"group::source code" - ~"group::source code"
* ~"group::knowledge" - ~"group::knowledge"
* ~"group::editor" - ~"group::editor"
* ~"group::gitaly" - ~"group::gitaly"
* ~"group::gitter" - ~"group::gitter"
* ~"group::team planning" - ~"group::team planning"
* ~"group::enterprise planning" - ~"group::enterprise planning"
* ~"group::certify" - ~"group::certify"
* ~"group::ci and runner" - ~"group::ci and runner"
* ~"group::testing" - ~"group::testing"
* ~"group::package" - ~"group::package"
* ~"group::progressive delivery" - ~"group::progressive delivery"
* ~"group::release management" - ~"group::release management"
* ~"group::autodevops and kubernetes" - ~"group::autodevops and kubernetes"
* ~"group::serverless and paas" - ~"group::serverless and paas"
* ~"group::apm" - ~"group::apm"
* ~"group::health" - ~"group::health"
* ~"group::static analysis" - ~"group::static analysis"
* ~"group::dynamic analysis" - ~"group::dynamic analysis"
* ~"group::software composition analysis" - ~"group::software composition analysis"
* ~"group::runtime application security" - ~"group::runtime application security"
* ~"group::threat management" - ~"group::threat management"
* ~"group::application infrastructure security" - ~"group::application infrastructure security"
* ~"group::activation" - ~"group::activation"
* ~"group::adoption" - ~"group::adoption"
* ~"group::upsell" - ~"group::upsell"
* ~"group::retention" - ~"group::retention"
* ~"group::fulfillment" - ~"group::fulfillment"
* ~"group::telemetry" - ~"group::telemetry"
* ~"group::distribution" - ~"group::distribution"
* ~"group::geo" - ~"group::geo"
* ~"group::memory" - ~"group::memory"
* ~"group::ecosystem" - ~"group::ecosystem"
These labels are [scoped labels](../../user/project/labels.md#scoped-labels-premium) These labels are [scoped labels](../../user/project/labels.md#scoped-labels-premium)
and thus are mutually exclusive. and thus are mutually exclusive.
...@@ -192,15 +190,15 @@ can be applied to a single issue. You can find the groups listed in the ...@@ -192,15 +190,15 @@ can be applied to a single issue. You can find the groups listed in the
The current department labels are: The current department labels are:
* ~UX - ~UX
* ~Quality - ~Quality
## Specialization labels ## Specialization labels
These labels narrow the [specialization](https://about.gitlab.com/company/team/structure/#specialist) on a unit of work. These labels narrow the [specialization](https://about.gitlab.com/company/team/structure/#specialist) on a unit of work.
* ~frontend - ~frontend
* ~backend - ~backend
## Release Scoping labels ## Release Scoping labels
...@@ -248,9 +246,9 @@ There can be multiple facets of the impact. The below is a guideline. ...@@ -248,9 +246,9 @@ There can be multiple facets of the impact. The below is a guideline.
If a bug seems to fall between two severity labels, assign it to the higher-severity label. If a bug seems to fall between two severity labels, assign it to the higher-severity label.
- Example(s) of ~S1 - Example(s) of ~S1
- Data corruption/loss. - Data corruption/loss.
- Security breach. - Security breach.
- Unable to create an issue or merge request. - Unable to create an issue or merge request.
- Unable to add a comment or discussion to the issue or merge request. - Unable to add a comment or discussion to the issue or merge request.
- Example(s) of ~S2 - Example(s) of ~S2
- Cannot submit changes through the web IDE but the commandline works. - Cannot submit changes through the web IDE but the commandline works.
......
...@@ -6,5 +6,5 @@ description: Learn the processes for contributing to GitLab's documentation. ...@@ -6,5 +6,5 @@ description: Learn the processes for contributing to GitLab's documentation.
Documentation workflows at GitLab differ depending on the reason for the change: Documentation workflows at GitLab differ depending on the reason for the change:
- [Documentation process for feature changes](feature-change-workflow.md) - The documentation is being created or updated as part of the development and release of a new or enhanced feature. This process involves the developer of the feature (who includes new/updated documentation files as part of the same merge request containing the feature's code) and also involves the product manager and technical writer who are listed for the feature's [DevOps stage](https://about.gitlab.com/handbook/product/categories/#devops-stages). - [Documentation process for feature changes](feature-change-workflow.md) - The documentation is being created or updated as part of the development and release of a new or enhanced feature. This process involves the developer of the feature (who includes new/updated documentation files as part of the same merge request containing the feature's code) and also involves the product manager and technical writer who are listed for the feature's [DevOps stage](https://about.gitlab.com/handbook/product/categories/#devops-stages).
- [Documentation improvement workflow](improvement-workflow.md) - All documentation additions not associated with a feature release. Documentation is being created or updated to improve accuracy, completeness, ease of use, or any reason other than a feature change. Anyone (and everyone) can contribute a merge request for this type of change at any time. - [Documentation improvement workflow](improvement-workflow.md) - All documentation additions not associated with a feature release. Documentation is being created or updated to improve accuracy, completeness, ease of use, or any reason other than a feature change. Anyone (and everyone) can contribute a merge request for this type of change at any time.
...@@ -53,6 +53,7 @@ When writing a class that needs to manipulate the DOM guarantee a container opti ...@@ -53,6 +53,7 @@ When writing a class that needs to manipulate the DOM guarantee a container opti
This is useful when we need that class to be instantiated more than once in the same page. This is useful when we need that class to be instantiated more than once in the same page.
Bad: Bad:
```javascript ```javascript
class Foo { class Foo {
constructor() { constructor() {
...@@ -63,6 +64,7 @@ new Foo(); ...@@ -63,6 +64,7 @@ new Foo();
``` ```
Good: Good:
```javascript ```javascript
class Foo { class Foo {
constructor(opts) { constructor(opts) {
...@@ -72,6 +74,7 @@ class Foo { ...@@ -72,6 +74,7 @@ class Foo {
new Foo({ container: '.my-element' }); new Foo({ container: '.my-element' });
``` ```
You can find an example of the above in this [class][container-class-example]; You can find an example of the above in this [class][container-class-example];
[container-class-example]: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/app/assets/javascripts/mini_pipeline_graph_dropdown.js [container-class-example]: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/app/assets/javascripts/mini_pipeline_graph_dropdown.js
...@@ -25,6 +25,7 @@ If you do not provide any arguments, it will globally query and instantiate all ...@@ -25,6 +25,7 @@ If you do not provide any arguments, it will globally query and instantiate all
<!-- ... --> <!-- ... -->
<ul> <ul>
``` ```
```js ```js
const droplab = new DropLab(); const droplab = new DropLab();
droplab.init(); droplab.init();
...@@ -45,6 +46,7 @@ You can add static list items. ...@@ -45,6 +46,7 @@ You can add static list items.
<li>Static value 2</li> <li>Static value 2</li>
<ul> <ul>
``` ```
```js ```js
const droplab = new DropLab(); const droplab = new DropLab();
droplab.init(); droplab.init();
...@@ -62,6 +64,7 @@ a non-global instance of DropLab using the `DropLab.prototype.init` method. ...@@ -62,6 +64,7 @@ a non-global instance of DropLab using the `DropLab.prototype.init` method.
<!-- ... --> <!-- ... -->
<ul> <ul>
``` ```
```js ```js
const trigger = document.getElementById('trigger'); const trigger = document.getElementById('trigger');
const list = document.getElementById('list'); const list = document.getElementById('list');
...@@ -79,6 +82,7 @@ You can also add hooks to an existing DropLab instance using `DropLab.prototype. ...@@ -79,6 +82,7 @@ You can also add hooks to an existing DropLab instance using `DropLab.prototype.
<a href="#" id="trigger" data-dropdown-trigger="#list">Toggle</a> <a href="#" id="trigger" data-dropdown-trigger="#list">Toggle</a>
<ul id="list" data-dropdown><!-- ... --><ul> <ul id="list" data-dropdown><!-- ... --><ul>
``` ```
```js ```js
const droplab = new DropLab(); const droplab = new DropLab();
...@@ -109,6 +113,7 @@ for all `data-dynamic` dropdown lists tracked by that DropLab instance. ...@@ -109,6 +113,7 @@ for all `data-dynamic` dropdown lists tracked by that DropLab instance.
<li><a href="#" data-id="{{id}}">{{text}}</a></li> <li><a href="#" data-id="{{id}}">{{text}}</a></li>
</ul> </ul>
``` ```
```js ```js
const droplab = new DropLab(); const droplab = new DropLab();
...@@ -131,6 +136,7 @@ the data as the second argument and the `id` of the trigger element as the first ...@@ -131,6 +136,7 @@ the data as the second argument and the `id` of the trigger element as the first
<li><a href="#" data-id="{{id}}">{{text}}</a></li> <li><a href="#" data-id="{{id}}">{{text}}</a></li>
</ul> </ul>
``` ```
```js ```js
const droplab = new DropLab(); const droplab = new DropLab();
...@@ -160,6 +166,7 @@ dropdown lists, one of which is dynamic. ...@@ -160,6 +166,7 @@ dropdown lists, one of which is dynamic.
</ul> </ul>
</div> </div>
``` ```
```js ```js
const droplab = new DropLab(); const droplab = new DropLab();
...@@ -216,6 +223,7 @@ Some plugins require configuration values, the config object can be passed as th ...@@ -216,6 +223,7 @@ Some plugins require configuration values, the config object can be passed as th
<a href="#" id="trigger" data-dropdown-trigger="#list">Toggle</a> <a href="#" id="trigger" data-dropdown-trigger="#list">Toggle</a>
<ul id="list" data-dropdown><!-- ... --><ul> <ul id="list" data-dropdown><!-- ... --><ul>
``` ```
```js ```js
const droplab = new DropLab(); const droplab = new DropLab();
......
...@@ -17,18 +17,19 @@ Add the `Ajax` object to the plugins array of a `DropLab.prototype.init` or `Dro ...@@ -17,18 +17,19 @@ Add the `Ajax` object to the plugins array of a `DropLab.prototype.init` or `Dro
<a href="#" id="trigger" data-dropdown-trigger="#list">Toggle</a> <a href="#" id="trigger" data-dropdown-trigger="#list">Toggle</a>
<ul id="list" data-dropdown><!-- ... --><ul> <ul id="list" data-dropdown><!-- ... --><ul>
``` ```
```js ```js
const droplab = new DropLab(); const droplab = new DropLab();
const trigger = document.getElementById('trigger'); const trigger = document.getElementById('trigger');
const list = document.getElementById('list'); const list = document.getElementById('list');
droplab.addHook(trigger, list, [Ajax], { droplab.addHook(trigger, list, [Ajax], {
Ajax: { Ajax: {
endpoint: '/some-endpoint', endpoint: '/some-endpoint',
method: 'setData', method: 'setData',
}, },
}); });
``` ```
Optionally you can set `loadingTemplate` to a HTML string. This HTML string will Optionally you can set `loadingTemplate` to a HTML string. This HTML string will
......
...@@ -17,25 +17,26 @@ Add the `Filter` object to the plugins array of a `DropLab.prototype.init` or `D ...@@ -17,25 +17,26 @@ Add the `Filter` object to the plugins array of a `DropLab.prototype.init` or `D
<li><a href="#" data-id="{{id}}">{{text}}</a></li> <li><a href="#" data-id="{{id}}">{{text}}</a></li>
<ul> <ul>
``` ```
```js ```js
const droplab = new DropLab(); const droplab = new DropLab();
const trigger = document.getElementById('trigger'); const trigger = document.getElementById('trigger');
const list = document.getElementById('list'); const list = document.getElementById('list');
droplab.init(trigger, list, [Filter], { droplab.init(trigger, list, [Filter], {
Filter: { Filter: {
template: 'text', template: 'text',
}, },
}); });
droplab.addData('trigger', [{ droplab.addData('trigger', [{
id: 0, id: 0,
text: 'Jacob', text: 'Jacob',
}, { }, {
id: 1, id: 1,
text: 'Jeff', text: 'Jeff',
}]); }]);
``` ```
Above, the input string will be compared against the `test` key of the passed data objects. Above, the input string will be compared against the `test` key of the passed data objects.
......
...@@ -22,33 +22,34 @@ You can also set the `InputSetter` config to an array of objects, which will all ...@@ -22,33 +22,34 @@ You can also set the `InputSetter` config to an array of objects, which will all
<li><a href="#" data-id="{{id}}">{{text}}</a></li> <li><a href="#" data-id="{{id}}">{{text}}</a></li>
<ul> <ul>
``` ```
```js ```js
const droplab = new DropLab(); const droplab = new DropLab();
const trigger = document.getElementById('trigger'); const trigger = document.getElementById('trigger');
const list = document.getElementById('list'); const list = document.getElementById('list');
const input = document.getElementById('input'); const input = document.getElementById('input');
const div = document.getElementById('div'); const div = document.getElementById('div');
droplab.init(trigger, list, [InputSetter], { droplab.init(trigger, list, [InputSetter], {
InputSetter: [{ InputSetter: [{
input: input, input: input,
valueAttribute: 'data-id', valueAttribute: 'data-id',
} { } {
input: div, input: div,
valueAttribute: 'data-id', valueAttribute: 'data-id',
inputAttribute: 'data-selected-id', inputAttribute: 'data-selected-id',
}], }],
}); });
droplab.addData('trigger', [{ droplab.addData('trigger', [{
id: 0, id: 0,
text: 'Jacob', text: 'Jacob',
}, { }, {
id: 1, id: 1,
text: 'Jeff', text: 'Jeff',
}]); }]);
``` ```
Above, if the second list item was clicked, it would update the `#input` element Above, if the second list item was clicked, it would update the `#input` element
......
...@@ -34,6 +34,7 @@ new_feature ...@@ -34,6 +34,7 @@ new_feature
│ └── new_feature_store.js │ └── new_feature_store.js
├── index.js ├── index.js
``` ```
_For consistency purposes, we recommend you to follow the same structure._ _For consistency purposes, we recommend you to follow the same structure._
Let's look into each of them: Let's look into each of them:
......
...@@ -106,32 +106,31 @@ are very appreciative of the work done by translators and proofreaders! ...@@ -106,32 +106,31 @@ are very appreciative of the work done by translators and proofreaders!
1. Contribute translations to GitLab. See instructions for 1. Contribute translations to GitLab. See instructions for
[translating GitLab](translation.md). [translating GitLab](translation.md).
Translating GitLab is a community effort that requires team work and Translating GitLab is a community effort that requires team work and
attention to detail. Proofreaders play an important role helping new attention to detail. Proofreaders play an important role helping new
contributors, and ensuring the consistency and quality of translations. contributors, and ensuring the consistency and quality of translations.
Your conduct and contributions as a translator should reflect this before Your conduct and contributions as a translator should reflect this before
requesting to be a proofreader. requesting to be a proofreader.
1. Request proofreader permissions by opening a merge request to add yourself 1. Request proofreader permissions by opening a merge request to add yourself
to the list of proofreaders. to the list of proofreaders.
Open the [proofreader.md source file][proofreader-src] and click **Edit**. Open the [proofreader.md source file][proofreader-src] and click **Edit**.
Add your language in alphabetical order, and add yourself to the list Add your language in alphabetical order, and add yourself to the list
including: including:
- name - name
- link to your GitLab profile - link to your GitLab profile
- link to your CrowdIn profile - link to your CrowdIn profile
In the merge request description, please include links to any projects you In the merge request description, please include links to any projects you
have previously translated. have previously translated.
1. Your request to become a proofreader will be considered on the merits of 1. Your request to become a proofreader will be considered on the merits of
your previous translations by [GitLab team members](https://about.gitlab.com/team/) your previous translations by [GitLab team members](https://about.gitlab.com/team/)
or [Core team members](https://about.gitlab.com/core-team/) who are fluent in or [Core team members](https://about.gitlab.com/core-team/) who are fluent in
the language or current proofreaders. the language or current proofreaders.
- When a request is made for the first proofreader for a language and there are no [GitLab team members](https://about.gitlab.com/team/) - When a request is made for the first proofreader for a language and there are no [GitLab team members](https://about.gitlab.com/team/)
or [Core team members](https://about.gitlab.com/core-team/) who speak the language, we will request links to previous translation work in other communities or projects. or [Core team members](https://about.gitlab.com/core-team/) who speak the language, we will request links to previous translation work in other communities or projects.
[proofreader-src]: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/i18n/proofreader.md [proofreader-src]: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/i18n/proofreader.md
...@@ -30,9 +30,11 @@ The following are required to install and test the app: ...@@ -30,9 +30,11 @@ The following are required to install and test the app:
1. In the **From this URL** field, provide a link to the app descriptor. The host and port must point to your GitLab instance. 1. In the **From this URL** field, provide a link to the app descriptor. The host and port must point to your GitLab instance.
For example: For example:
``` ```
https://xxxx.serveo.net/-/jira_connect/app_descriptor.json https://xxxx.serveo.net/-/jira_connect/app_descriptor.json
``` ```
1. Click **Upload**. 1. Click **Upload**.
If the install was successful, you should see the **GitLab for Jira** app under **Manage apps**. If the install was successful, you should see the **GitLab for Jira** app under **Manage apps**.
......
...@@ -4,7 +4,7 @@ Our code is automatically formatted with [Prettier](https://prettier.io) to foll ...@@ -4,7 +4,7 @@ Our code is automatically formatted with [Prettier](https://prettier.io) to foll
## Editor ## Editor
The easiest way to include prettier in your workflow is by setting up your preferred editor (all major editors are supported) accordingly. We suggest setting up prettier to run automatically when each file is saved. Find [here](https://prettier.io/docs/en/editors.html) the best way to set it up in your preferred editor. The easiest way to include prettier in your workflow is by setting up your preferred editor (all major editors are supported) accordingly. We suggest setting up prettier to run automatically when each file is saved. Find [here](https://prettier.io/docs/en/editors.html) the best way to set it up in your preferred editor.
Please take care that you only let Prettier format the same file types as the global Yarn script does (.js, .vue, and .scss). In VSCode by example you can easily exclude file formats in your settings file: Please take care that you only let Prettier format the same file types as the global Yarn script does (.js, .vue, and .scss). In VSCode by example you can easily exclude file formats in your settings file:
...@@ -28,6 +28,7 @@ Updates all currently staged files (based on `git diff`) with Prettier and saves ...@@ -28,6 +28,7 @@ Updates all currently staged files (based on `git diff`) with Prettier and saves
``` ```
yarn prettier-staged yarn prettier-staged
``` ```
Checks all currently staged files (based on `git diff`) with Prettier and log which files would need manual updating to the console. Checks all currently staged files (based on `git diff`) with Prettier and log which files would need manual updating to the console.
``` ```
......
...@@ -246,6 +246,7 @@ irb(main):002:0> results.last.attributes.keys ...@@ -246,6 +246,7 @@ irb(main):002:0> results.last.attributes.keys
irb(main):003:0> results.where(status: "passed").average(:time).to_s irb(main):003:0> results.where(status: "passed").average(:time).to_s
=> "0.211340155844156" => "0.211340155844156"
``` ```
These results can also be placed into a PostgreSQL database by setting the These results can also be placed into a PostgreSQL database by setting the
`RSPEC_PROFILING_POSTGRES_URL` variable. This is used to profile the test suite `RSPEC_PROFILING_POSTGRES_URL` variable. This is used to profile the test suite
when running in the CI environment. when running in the CI environment.
......
...@@ -148,7 +148,7 @@ Once you decided where to put [test environment orchestration scenarios] and ...@@ -148,7 +148,7 @@ Once you decided where to put [test environment orchestration scenarios] and
the [GitLab QA orchestrator README][gitlab-qa-readme], and [the already existing the [GitLab QA orchestrator README][gitlab-qa-readme], and [the already existing
instance-level scenarios][instance-level scenarios]. instance-level scenarios][instance-level scenarios].
Continued reading: Continued reading:
- [Quick Start Guide](quick_start_guide.md) - [Quick Start Guide](quick_start_guide.md)
- [Style Guide](style_guide.md) - [Style Guide](style_guide.md)
......
...@@ -63,17 +63,17 @@ We follow a simple formula roughly based on hungarian notation. ...@@ -63,17 +63,17 @@ We follow a simple formula roughly based on hungarian notation.
- `_checkbox` - `_checkbox`
- `_radio` - `_radio`
- `_content` - `_content`
*Note: This list is a work in progress. This list will eventually be the end-all enumeration of all available types. *Note: This list is a work in progress. This list will eventually be the end-all enumeration of all available types.
I.e., any element that does not end with something in this list is bad form.* I.e., any element that does not end with something in this list is bad form.*
#### Examples #### Examples
**Good** **Good**
```ruby ```ruby
view '...' do view '...' do
element :edit_button element :edit_button
element :notes_tab element :notes_tab
element :squash_checkbox element :squash_checkbox
element :username_field element :username_field
...@@ -84,15 +84,15 @@ end ...@@ -84,15 +84,15 @@ end
**Bad** **Bad**
```ruby ```ruby
view '...' do view '...' do
# `_confirmation` should be `_field`. what sort of confirmation? a checkbox confirmation? no real way to disambiguate. # `_confirmation` should be `_field`. what sort of confirmation? a checkbox confirmation? no real way to disambiguate.
# an appropriate replacement would be `element :password_confirmation_field` # an appropriate replacement would be `element :password_confirmation_field`
element :password_confirmation element :password_confirmation
# `clone_options` is too vague. If it's a dropdown menu, it should be `clone_dropdown`. # `clone_options` is too vague. If it's a dropdown menu, it should be `clone_dropdown`.
# If it's a checkbox, it should be `clone_checkbox` # If it's a checkbox, it should be `clone_checkbox`
element :clone_options element :clone_options
# how is this url being displayed? is it a textbox? a simple span? # how is this url being displayed? is it a textbox? a simple span?
element :ssh_clone_url element :ssh_clone_url
end end
......
...@@ -501,17 +501,17 @@ The following are examples of tests that work for both Karma and Jest: ...@@ -501,17 +501,17 @@ The following are examples of tests that work for both Karma and Jest:
it('makes a request', () => { it('makes a request', () => {
const responseBody = getJSONFixture('some/fixture.json'); // loads spec/javascripts/fixtures/some/fixture.json const responseBody = getJSONFixture('some/fixture.json'); // loads spec/javascripts/fixtures/some/fixture.json
axiosMock.onGet(endpoint).reply(200, responseBody); axiosMock.onGet(endpoint).reply(200, responseBody);
myButton.click(); myButton.click();
// ... // ...
}); });
it('uses some HTML element', () => { it('uses some HTML element', () => {
loadFixtures('some/page.html'); // loads spec/javascripts/fixtures/some/page.html and adds it to the DOM loadFixtures('some/page.html'); // loads spec/javascripts/fixtures/some/page.html and adds it to the DOM
const element = document.getElementById('#my-id'); const element = document.getElementById('#my-id');
// ... // ...
}); });
``` ```
......
...@@ -139,6 +139,7 @@ pwd ...@@ -139,6 +139,7 @@ pwd
``` ```
clear clear
``` ```
### Sample Git taskflow ### Sample Git taskflow
If you are completely new to Git, looking through some [sample taskflows](https://rogerdudler.github.io/git-guide/) will help you understand best practices for using these commands as you work. If you are completely new to Git, looking through some [sample taskflows](https://rogerdudler.github.io/git-guide/) will help you understand best practices for using these commands as you work.
...@@ -330,6 +330,7 @@ If the user is blocked via LDAP, `state` will be `ldap_blocked`. ...@@ -330,6 +330,7 @@ If the user is blocked via LDAP, `state` will be `ldap_blocked`.
"user_id": 41 "user_id": 41
} }
``` ```
**Group Member Removed:** **Group Member Removed:**
```json ```json
......
...@@ -14,9 +14,11 @@ comments: false ...@@ -14,9 +14,11 @@ comments: false
- If it's not installed, it will prompt you to install it. - If it's not installed, it will prompt you to install it.
- **Linux** - **Linux**
```bash ```bash
sudo yum install git-all sudo yum install git-all
``` ```
```bash ```bash
sudo apt-get install git-all sudo apt-get install git-all
``` ```
......
...@@ -170,6 +170,7 @@ Attach a block or paragraph to a list item using a list continuation (which you ...@@ -170,6 +170,7 @@ Attach a block or paragraph to a list item using a list continuation (which you
* [x] checked * [x] checked
* [ ] not checked * [ ] not checked
``` ```
#### Callout #### Callout
```asciidoc ```asciidoc
...@@ -188,6 +189,7 @@ first term:: description of first term ...@@ -188,6 +189,7 @@ first term:: description of first term
second term:: second term::
description of second term description of second term
``` ```
### Document Structure ### Document Structure
#### Header #### Header
...@@ -197,6 +199,7 @@ description of second term ...@@ -197,6 +199,7 @@ description of second term
Author Name <author@example.org> Author Name <author@example.org>
v1.0, 2019-01-01 v1.0, 2019-01-01
``` ```
#### Sections #### Sections
```asciidoc ```asciidoc
...@@ -217,6 +220,7 @@ include::basics.adoc[] ...@@ -217,6 +220,7 @@ include::basics.adoc[]
// define -a allow-uri-read to allow content to be read from URI // define -a allow-uri-read to allow content to be read from URI
include::https://example.org/installation.adoc[] include::https://example.org/installation.adoc[]
``` ```
### Blocks ### Blocks
```asciidoc ```asciidoc
...@@ -273,11 +277,11 @@ source - a listing that is embellished with (colorized) syntax highlighting ...@@ -273,11 +277,11 @@ source - a listing that is embellished with (colorized) syntax highlighting
---- ----
``` ```
```asciidoc ````asciidoc
\```language \```language
fenced code - a shorthand syntax for the source block fenced code - a shorthand syntax for the source block
\``` \```
``` ````
```asciidoc ```asciidoc
[,attribution,citetitle] [,attribution,citetitle]
...@@ -369,4 +373,3 @@ video::300817511[vimeo] ...@@ -369,4 +373,3 @@ video::300817511[vimeo]
// page break // page break
<<< <<<
``` ```
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment