Commit bb577865 authored by Craig Norris's avatar Craig Norris

Merge branch 'docs-aqualls-more-spelling' into 'master'

Add new words to the spelling exceptions list

See merge request gitlab-org/gitlab!62049
parents 160538ac 035466d2
...@@ -13,6 +13,7 @@ anonymization ...@@ -13,6 +13,7 @@ anonymization
anonymized anonymized
Ansible Ansible
Anthos Anthos
Apdex
approvers approvers
architected architected
architecting architecting
...@@ -281,6 +282,7 @@ jQuery ...@@ -281,6 +282,7 @@ jQuery
jsdom jsdom
Jsonnet Jsonnet
JupyterHub JupyterHub
Kaminari
kanban kanban
kanbans kanbans
kaniko kaniko
...@@ -546,6 +548,7 @@ serializer ...@@ -546,6 +548,7 @@ serializer
serializers serializers
serializing serializing
serverless serverless
severities
sharded sharded
sharding sharding
shfmt shfmt
......
...@@ -127,5 +127,5 @@ time="2020-10-29T04:44:14Z" level=warning msg="Config: failed to fetch" agent_id ...@@ -127,5 +127,5 @@ time="2020-10-29T04:44:14Z" level=warning msg="Config: failed to fetch" agent_id
It means that the path to the configuration project is incorrect, It means that the path to the configuration project is incorrect,
or the path to `config.yaml` inside the project is not valid. or the path to `config.yaml` inside the project is not valid.
To fix this, ensure that the paths to the configuration repo and to the `config.yaml` file To fix this, ensure that the paths to the configuration repository and to the `config.yaml` file
are correct. are correct.
...@@ -537,13 +537,13 @@ Data that was created on the primary while the secondary was paused will be lost ...@@ -537,13 +537,13 @@ Data that was created on the primary while the secondary was paused will be lost
1. Update the existing cluster configuration. 1. Update the existing cluster configuration.
You can retrieve the existing config with Helm: You can retrieve the existing configuration with Helm:
```shell ```shell
helm --namespace gitlab get values gitlab-geo > gitlab.yaml helm --namespace gitlab get values gitlab-geo > gitlab.yaml
``` ```
The existing config will contain a section for Geo that should resemble: The existing configuration will contain a section for Geo that should resemble:
```yaml ```yaml
geo: geo:
...@@ -562,7 +562,7 @@ Data that was created on the primary while the secondary was paused will be lost ...@@ -562,7 +562,7 @@ Data that was created on the primary while the secondary was paused will be lost
You can remove the entire `psql` section if the cluster will remain as a primary site, this refers to the tracking database and will be ignored whilst the cluster is acting as a primary site. You can remove the entire `psql` section if the cluster will remain as a primary site, this refers to the tracking database and will be ignored whilst the cluster is acting as a primary site.
Update the cluster with the new config: Update the cluster with the new configuration:
```shell ```shell
helm upgrade --install --version <current Chart version> gitlab-geo gitlab/gitlab --namespace gitlab -f gitlab.yaml helm upgrade --install --version <current Chart version> gitlab-geo gitlab/gitlab --namespace gitlab -f gitlab.yaml
......
...@@ -196,7 +196,7 @@ This list of limitations only reflects the latest version of GitLab. If you are ...@@ -196,7 +196,7 @@ This list of limitations only reflects the latest version of GitLab. If you are
- Object pools for forked project deduplication work only on the **primary** site, and are duplicated on the **secondary** site. - Object pools for forked project deduplication work only on the **primary** site, and are duplicated on the **secondary** site.
- GitLab Runners cannot register with a **secondary** site. Support for this is [planned for the future](https://gitlab.com/gitlab-org/gitlab/-/issues/3294). - GitLab Runners cannot register with a **secondary** site. Support for this is [planned for the future](https://gitlab.com/gitlab-org/gitlab/-/issues/3294).
- Configuring Geo **secondary** sites to [use high-availability configurations of PostgreSQL](https://gitlab.com/groups/gitlab-org/-/epics/2536) is currently in **alpha** support. - Configuring Geo **secondary** sites to [use high-availability configurations of PostgreSQL](https://gitlab.com/groups/gitlab-org/-/epics/2536) is currently in **alpha** support.
- [Selective synchronization](replication/configuration.md#selective-synchronization) only limits what repositories are replicated. The entire PostgreSQL data is still replicated. Selective synchronization is not built to accomodate compliance / export control use cases. - [Selective synchronization](replication/configuration.md#selective-synchronization) only limits what repositories are replicated. The entire PostgreSQL data is still replicated. Selective synchronization is not built to accommodate compliance / export control use cases.
### Limitations on replication/verification ### Limitations on replication/verification
......
...@@ -147,7 +147,7 @@ attributes](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/workers/all_q ...@@ -147,7 +147,7 @@ attributes](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/workers/all_q
- `worker_name` - the worker name. The other attributes are typically more useful as - `worker_name` - the worker name. The other attributes are typically more useful as
they are more general, but this is available in case a particular worker needs they are more general, but this is available in case a particular worker needs
to be selected. to be selected.
- `name` - the queue name. Similiarly, this is available in case a particular queue needs - `name` - the queue name. Similarly, this is available in case a particular queue needs
to be selected. to be selected.
- `resource_boundary` - if the queue is bound by `cpu`, `memory`, or - `resource_boundary` - if the queue is bound by `cpu`, `memory`, or
`unknown`. For example, the `project_export` queue is memory bound as it has `unknown`. For example, the `project_export` queue is memory bound as it has
......
...@@ -831,8 +831,8 @@ or persistent errors, or the Pages Daemon serving old content. ...@@ -831,8 +831,8 @@ or persistent errors, or the Pages Daemon serving old content.
NOTE: NOTE:
Expiry, interval and timeout flags use [Golang's duration formatting](https://golang.org/pkg/time/#ParseDuration). Expiry, interval and timeout flags use [Golang's duration formatting](https://golang.org/pkg/time/#ParseDuration).
A duration string is a possibly signed sequence of decimal numbers, A duration string is a possibly signed sequence of decimal numbers,
each with optional fraction and a unit suffix, such as "300ms", "1.5h" or "2h45m". each with optional fraction and a unit suffix, such as `300ms`, `1.5h` or `2h45m`.
Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`.
Examples: Examples:
...@@ -938,7 +938,7 @@ In installations from source: ...@@ -938,7 +938,7 @@ In installations from source:
## ZIP storage ## ZIP storage
In GitLab 14.0 the underlaying storage format of GitLab Pages is changing from In GitLab 14.0 the underlying storage format of GitLab Pages is changing from
files stored directly in disk to a single ZIP archive per project. files stored directly in disk to a single ZIP archive per project.
These ZIP archives can be stored either locally on disk storage or on the [object storage](#using-object-storage) if it is configured. These ZIP archives can be stored either locally on disk storage or on the [object storage](#using-object-storage) if it is configured.
...@@ -1210,7 +1210,7 @@ These are due to the Pages files not being among the ...@@ -1210,7 +1210,7 @@ These are due to the Pages files not being among the
It is possible to copy the subfolders and files in the [Pages path](#change-storage-path) It is possible to copy the subfolders and files in the [Pages path](#change-storage-path)
to the new primary node to resolve this. to the new primary node to resolve this.
For example, you can adapt the `rsync` strategy from the For example, you can adapt the `rsync` strategy from the
[moving repositories documenation](../operations/moving_repositories.md). [moving repositories documentation](../operations/moving_repositories.md).
Alternatively, run the CI pipelines of those projects that contain a `pages` job again. Alternatively, run the CI pipelines of those projects that contain a `pages` job again.
### Failed to connect to the internal GitLab API ### Failed to connect to the internal GitLab API
......
...@@ -39,7 +39,7 @@ NOTE: ...@@ -39,7 +39,7 @@ NOTE:
Components marked with * can be optionally run on reputable Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work. third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable Components marked with ** can be optionally run on reputable
third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work. third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml ```plantuml
@startuml 10k @startuml 10k
...@@ -2423,7 +2423,7 @@ NOTE: ...@@ -2423,7 +2423,7 @@ NOTE:
Components marked with * can be optionally run on reputable Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work. third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable Components marked with ** can be optionally run on reputable
third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work. third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml ```plantuml
@startuml 10k @startuml 10k
......
...@@ -39,7 +39,7 @@ NOTE: ...@@ -39,7 +39,7 @@ NOTE:
Components marked with * can be optionally run on reputable Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work. third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable Components marked with ** can be optionally run on reputable
third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work. third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml ```plantuml
@startuml 25k @startuml 25k
......
...@@ -31,7 +31,7 @@ NOTE: ...@@ -31,7 +31,7 @@ NOTE:
Components marked with * can be optionally run on reputable Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work. third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable Components marked with ** can be optionally run on reputable
third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work. third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml ```plantuml
@startuml 2k @startuml 2k
......
...@@ -46,7 +46,7 @@ NOTE: ...@@ -46,7 +46,7 @@ NOTE:
Components marked with * can be optionally run on reputable Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work. third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable Components marked with ** can be optionally run on reputable
third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work. third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml ```plantuml
@startuml 3k @startuml 3k
...@@ -1213,7 +1213,7 @@ Praefect requires several secret tokens to secure communications across the Clus ...@@ -1213,7 +1213,7 @@ Praefect requires several secret tokens to secure communications across the Clus
Gitaly Cluster nodes are configured in Praefect via a `virtual storage`. Each storage contains Gitaly Cluster nodes are configured in Praefect via a `virtual storage`. Each storage contains
the details of each Gitaly node that makes up the cluster. Each storage is also given a name the details of each Gitaly node that makes up the cluster. Each storage is also given a name
and this name is used in several areas of the config. In this guide, the name of the storage will be and this name is used in several areas of the configuration. In this guide, the name of the storage will be
`default`. Also, this guide is geared towards new installs, if upgrading an existing environment `default`. Also, this guide is geared towards new installs, if upgrading an existing environment
to use Gitaly Cluster, you may need to use a different name. to use Gitaly Cluster, you may need to use a different name.
Refer to the [Praefect documentation](../gitaly/praefect.md#praefect) for more info. Refer to the [Praefect documentation](../gitaly/praefect.md#praefect) for more info.
...@@ -2074,7 +2074,7 @@ but with smaller performance requirements, several modifications can be consider ...@@ -2074,7 +2074,7 @@ but with smaller performance requirements, several modifications can be consider
- PostgreSQL: Can be run on reputable Cloud PaaS solutions such as Google Cloud SQL or AWS RDS. In this setup, the PgBouncer and Consul nodes are no longer required: - PostgreSQL: Can be run on reputable Cloud PaaS solutions such as Google Cloud SQL or AWS RDS. In this setup, the PgBouncer and Consul nodes are no longer required:
- Consul may still be desired if [Prometheus](../monitoring/prometheus/index.md) auto discovery is a requirement, otherwise you would need to [manually add scrape configurations](../monitoring/prometheus/index.md#adding-custom-scrape-configurations) for all nodes. - Consul may still be desired if [Prometheus](../monitoring/prometheus/index.md) auto discovery is a requirement, otherwise you would need to [manually add scrape configurations](../monitoring/prometheus/index.md#adding-custom-scrape-configurations) for all nodes.
- As Redis Sentinel runs on the same box as Consul in this architecture, it may need to be run on a separate box if Redis is still being run via Omnibus. - As Redis Sentinel runs on the same box as Consul in this architecture, it may need to be run on a separate box if Redis is still being run via Omnibus.
- Redis: Can be run on reputable Cloud PaaS solutions such as Google Memorystore and AWS Elasticache. In this setup, the Redis Sentinel is no longer required. - Redis: Can be run on reputable Cloud PaaS solutions such as Google Memorystore and AWS ElastiCache. In this setup, the Redis Sentinel is no longer required.
<div align="right"> <div align="right">
<a type="button" class="btn btn-default" href="#setup-components"> <a type="button" class="btn btn-default" href="#setup-components">
......
...@@ -39,7 +39,7 @@ NOTE: ...@@ -39,7 +39,7 @@ NOTE:
Components marked with * can be optionally run on reputable Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work. third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable Components marked with ** can be optionally run on reputable
third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work. third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml ```plantuml
@startuml 50k @startuml 50k
......
...@@ -43,7 +43,7 @@ NOTE: ...@@ -43,7 +43,7 @@ NOTE:
Components marked with * can be optionally run on reputable Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work. third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable Components marked with ** can be optionally run on reputable
third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work. third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml ```plantuml
@startuml 5k @startuml 5k
......
...@@ -23,7 +23,7 @@ Use [external object storage](https://docs.gitlab.com/charts/advanced/external-o ...@@ -23,7 +23,7 @@ Use [external object storage](https://docs.gitlab.com/charts/advanced/external-o
## Disabling Terraform state ## Disabling Terraform state
To disable terraform state site-wide, follow the steps below. To disable terraform state site-wide, follow the steps below.
A GitLab administrator may want to disable Terraform state to reduce diskspace or if Terraform is not used in your instance. A GitLab administrator may want to disable Terraform state to reduce disk space or if Terraform is not used in your instance.
To do so, follow the steps below according to your installation's type. To do so, follow the steps below according to your installation's type.
**In Omnibus installations:** **In Omnibus installations:**
......
...@@ -71,7 +71,7 @@ Example response: ...@@ -71,7 +71,7 @@ Example response:
## V1 packages list ## V1 packages list
Given the V1 provider sha, returns a list of packages within the repository. Using Composer V2 is Given the V1 provider SHA, returns a list of packages in the repository. Using Composer V2 is
recommended over V1. recommended over V1.
```plaintext ```plaintext
...@@ -81,7 +81,7 @@ GET group/:id/-/packages/composer/p/:sha ...@@ -81,7 +81,7 @@ GET group/:id/-/packages/composer/p/:sha
| Attribute | Type | Required | Description | | Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- | | --------- | ---- | -------- | ----------- |
| `id` | string | yes | The ID or full path of the group. | | `id` | string | yes | The ID or full path of the group. |
| `sha` | string | yes | The provider sha, provided by the Composer [base request](#base-repository-request). | | `sha` | string | yes | The provider SHA, provided by the Composer [base request](#base-repository-request). |
```shell ```shell
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/p/082df4a5035f8725a12i4a3d2da5e6aaa966d06843d0a5c6d499313810427bd6" curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/p/082df4a5035f8725a12i4a3d2da5e6aaa966d06843d0a5c6d499313810427bd6"
...@@ -115,7 +115,7 @@ the symbol `%24` (see example below). ...@@ -115,7 +115,7 @@ the symbol `%24` (see example below).
| -------------- | ------ | -------- | ----------- | | -------------- | ------ | -------- | ----------- |
| `id` | string | yes | The ID or full path of the group. | | `id` | string | yes | The ID or full path of the group. |
| `package_name` | string | yes | The name of the package. | | `package_name` | string | yes | The name of the package. |
| `sha` | string | yes | The sha digest of the package, provided by the [V1 packages list](#v1-packages-list). | | `sha` | string | yes | The SHA digest of the package, provided by the [V1 packages list](#v1-packages-list). |
```shell ```shell
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/my-org/my-composer-package%245c873497cdaa82eda35af5de24b789be92dfb6510baf117c42f03899c166b6e7" curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/my-org/my-composer-package%245c873497cdaa82eda35af5de24b789be92dfb6510baf117c42f03899c166b6e7"
...@@ -272,7 +272,7 @@ GET projects/:id/packages/composer/archives/:package_name ...@@ -272,7 +272,7 @@ GET projects/:id/packages/composer/archives/:package_name
| -------------- | ------ | -------- | ----------- | | -------------- | ------ | -------- | ----------- |
| `id` | string | yes | The ID or full path of the group. | | `id` | string | yes | The ID or full path of the group. |
| `package_name` | string | yes | The name of the package. | | `package_name` | string | yes | The name of the package. |
| `sha` | string | yes | The target sha of the requested package version. | | `sha` | string | yes | The target SHA of the requested package version. |
```shell ```shell
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab" curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab"
......
...@@ -28,7 +28,7 @@ store CI/CD data. ...@@ -28,7 +28,7 @@ store CI/CD data.
We expect to see 20M builds created daily on GitLab.com in the first half of We expect to see 20M builds created daily on GitLab.com in the first half of
2024. 2024.
![ci_builds cumulative with forecast](ci_builds_cumulative_forecast.png) ![CI builds cumulative with forecast](ci_builds_cumulative_forecast.png)
## Goals ## Goals
...@@ -46,9 +46,9 @@ Historically, Rails used to use [integer](https://www.postgresql.org/docs/9.1/da ...@@ -46,9 +46,9 @@ Historically, Rails used to use [integer](https://www.postgresql.org/docs/9.1/da
type when creating primary keys for a table. We did use the default when we type when creating primary keys for a table. We did use the default when we
[created the `ci_builds` table in 2012](https://gitlab.com/gitlab-org/gitlab/-/blob/046b28312704f3131e72dcd2dbdacc5264d4aa62/db/ci/migrate/20121004165038_create_builds.rb). [created the `ci_builds` table in 2012](https://gitlab.com/gitlab-org/gitlab/-/blob/046b28312704f3131e72dcd2dbdacc5264d4aa62/db/ci/migrate/20121004165038_create_builds.rb).
[The behavior of Rails has changed](https://github.com/rails/rails/pull/26266) [The behavior of Rails has changed](https://github.com/rails/rails/pull/26266)
since the release of Rails 5. The framework is now using bigint type that is 8 since the release of Rails 5. The framework is now using `bigint` type that is 8
bytes long, however we have not migrated primary keys for `ci_builds` table to bytes long, however we have not migrated primary keys for `ci_builds` table to
bigint yet. `bigint` yet.
We will run out of the capacity of the integer type to store primary keys in We will run out of the capacity of the integer type to store primary keys in
`ci_builds` table before December 2021. When it happens without a viable `ci_builds` table before December 2021. When it happens without a viable
...@@ -89,7 +89,7 @@ Prophet](https://facebook.github.io/prophet/) shows that in the first half of ...@@ -89,7 +89,7 @@ Prophet](https://facebook.github.io/prophet/) shows that in the first half of
to around 2M we see created today, this is 10x growth our product might need to to around 2M we see created today, this is 10x growth our product might need to
sustain in upcoming years. sustain in upcoming years.
![ci_builds daily forecast](ci_builds_daily_forecast.png) ![CI builds daily forecast](ci_builds_daily_forecast.png)
### Queuing mechanisms are using the large table ### Queuing mechanisms are using the large table
...@@ -101,7 +101,7 @@ want to process them. ...@@ -101,7 +101,7 @@ want to process them.
This mechanism is very inefficient, and it has been causing problems on the This mechanism is very inefficient, and it has been causing problems on the
production environment frequently. This usually results in a significant drop production environment frequently. This usually results in a significant drop
of the CI/CD apdex score, and sometimes even causes a significant performance of the CI/CD Apdex score, and sometimes even causes a significant performance
degradation in the production environment. degradation in the production environment.
There are multiple other strategies that can improve performance and There are multiple other strategies that can improve performance and
......
...@@ -136,7 +136,7 @@ you can use tiers: ...@@ -136,7 +136,7 @@ you can use tiers:
| Environment tier | Environment name examples | | Environment tier | Environment name examples |
|------------------|----------------------------------------------------| |------------------|----------------------------------------------------|
| `production` | Production, Live | | `production` | Production, Live |
| `staging` | Staging, Model, Pre, Demo | | `staging` | Staging, Model, Demo |
| `testing` | Test, QC | | `testing` | Test, QC |
| `development` | Dev, [Review apps](../review_apps/index.md), Trunk | | `development` | Dev, [Review apps](../review_apps/index.md), Trunk |
| `other` | | | `other` | |
......
...@@ -41,7 +41,7 @@ With pagination, the data is split into equal pieces (pages). On the first visit ...@@ -41,7 +41,7 @@ With pagination, the data is split into equal pieces (pages). On the first visit
### Pick the right approach ### Pick the right approach
Let the database handle the pagination, filtering, and data retrieval. Implementing in-memory pagination on the backend (`paginate_array` from kaminari) or on the frontend (JavaScript) might work for a few hundreds of records. If application limits are not defined, things can get out of control quickly. Let the database handle the pagination, filtering, and data retrieval. Implementing in-memory pagination on the backend (`paginate_array` from Kaminari) or on the frontend (JavaScript) might work for a few hundreds of records. If application limits are not defined, things can get out of control quickly.
### Reduce complexity ### Reduce complexity
...@@ -78,7 +78,7 @@ Infinite scroll can use keyset pagination without affecting the user experience ...@@ -78,7 +78,7 @@ Infinite scroll can use keyset pagination without affecting the user experience
### Offset pagination ### Offset pagination
The most common way to paginate lists is using offset-based pagination (UI and REST API). It's backed by the popular [kaminari](https://github.com/kaminari/kaminari) Ruby gem, which provides convenient helper methods to implement pagination on ActiveRecord queries. The most common way to paginate lists is using offset-based pagination (UI and REST API). It's backed by the popular [Kaminari](https://github.com/kaminari/kaminari) Ruby gem, which provides convenient helper methods to implement pagination on ActiveRecord queries.
Offset-based pagination is leveraging the `LIMIT` and `OFFSET` SQL clauses to take out a specific slice from the table. Offset-based pagination is leveraging the `LIMIT` and `OFFSET` SQL clauses to take out a specific slice from the table.
...@@ -97,9 +97,9 @@ Notice that the query also orders the rows by the primary key (`id`). When pagin ...@@ -97,9 +97,9 @@ Notice that the query also orders the rows by the primary key (`id`). When pagin
Example pagination bar: Example pagination bar:
![Page selector rendered by kaminari](../img/offset_pagination_ui_v13_11.jpg) ![Page selector rendered by Kaminari](../img/offset_pagination_ui_v13_11.jpg)
The kaminari gem renders a nice pagination bar on the UI with page numbers and optionally quick shortcuts the next, previous, first, and last page buttons. To render these buttons, kaminari needs to know the number of rows, and for that, a count query is executed. The Kaminari gem renders a nice pagination bar on the UI with page numbers and optionally quick shortcuts the next, previous, first, and last page buttons. To render these buttons, Kaminari needs to know the number of rows, and for that, a count query is executed.
```sql ```sql
SELECT COUNT(*) FROM issues WHERE project_id = 1 SELECT COUNT(*) FROM issues WHERE project_id = 1
...@@ -158,7 +158,7 @@ Here we're leveraging the ordered property of the b-tree database index. Values ...@@ -158,7 +158,7 @@ Here we're leveraging the ordered property of the b-tree database index. Values
Kaminari by default executes a count query to determine the number of pages for rendering the page links. Count queries can be quite expensive for a large table, in an unfortunate scenario the queries will simply time out. Kaminari by default executes a count query to determine the number of pages for rendering the page links. Count queries can be quite expensive for a large table, in an unfortunate scenario the queries will simply time out.
To work around this, we can run kaminari without invoking the count SQL query. To work around this, we can run Kaminari without invoking the count SQL query.
```ruby ```ruby
Issue.where(project_id: 1).page(1).per(20).without_count Issue.where(project_id: 1).page(1).per(20).without_count
......
...@@ -23,11 +23,11 @@ You may create a new account or use any of their supported sign in services. ...@@ -23,11 +23,11 @@ You may create a new account or use any of their supported sign in services.
GitLab is being translated into many languages. GitLab is being translated into many languages.
1. Find the language that you want to contribute to, in our 1. Find the language that you want to contribute to, in our
[GitLab Crowdin project](https://crowdin.com/project/gitlab-ee). [GitLab CrowdIn project](https://crowdin.com/project/gitlab-ee).
- If the language that you're looking for is available, proceed - If the language that you're looking for is available, proceed
to the next step. to the next step.
- If the language you are looking for is not available, - If the language you are looking for is not available,
[open an issue](https://gitlab.com/gitlab-org/gitlab/-/issues?scope=all&utf8=✓&state=all&label_name[]=Category%3AInternationalization). Notify our Crowdin [open an issue](https://gitlab.com/gitlab-org/gitlab/-/issues?scope=all&utf8=✓&state=all&label_name[]=Category%3AInternationalization). Notify our CrowdIn
administrators by including `@gitlab-org/manage/import` in your issue. administrators by including `@gitlab-org/manage/import` in your issue.
- After the issue/Merge Request is complete, restart this procedure. - After the issue/Merge Request is complete, restart this procedure.
1. Next, you can view list of files and folders. 1. Next, you can view list of files and folders.
......
...@@ -7,7 +7,7 @@ type: reference, how-to ...@@ -7,7 +7,7 @@ type: reference, how-to
# Wiki **(FREE)** # Wiki **(FREE)**
If you don't want to keep your documentation in your repository, but you do want If you don't want to keep your documentation in your repository, but you want
to keep it in the same project as your code, you can use the wiki GitLab provides to keep it in the same project as your code, you can use the wiki GitLab provides
in each GitLab project. Every wiki is a separate Git repository, so you can create in each GitLab project. Every wiki is a separate Git repository, so you can create
wiki pages in the web interface, or [locally using Git](#create-or-edit-wiki-pages-locally). wiki pages in the web interface, or [locally using Git](#create-or-edit-wiki-pages-locally).
...@@ -34,8 +34,8 @@ with sibling pages listed in alphabetical order. To view a list of all pages, se ...@@ -34,8 +34,8 @@ with sibling pages listed in alphabetical order. To view a list of all pages, se
When a wiki is created, it is empty. On your first visit, create the landing page When a wiki is created, it is empty. On your first visit, create the landing page
users see when viewing the wiki: users see when viewing the wiki:
1. Go to the page for your project or group. 1. Go to your project or group and select **Wiki**.
1. In the left sidebar, select **Wiki**, then **Create your first page**. 1. Select **Create your first page**.
1. Select a **Format** for styling your text. 1. Select a **Format** for styling your text.
1. Add a welcome message in the **Content** section. You can always edit it later. 1. Add a welcome message in the **Content** section. You can always edit it later.
1. Add a **Commit message**. Git requires a commit message, so GitLab creates one 1. Add a **Commit message**. Git requires a commit message, so GitLab creates one
...@@ -46,8 +46,7 @@ users see when viewing the wiki: ...@@ -46,8 +46,7 @@ users see when viewing the wiki:
Users with Developer [permissions](../../permissions.md) can create new wiki pages: Users with Developer [permissions](../../permissions.md) can create new wiki pages:
1. Go to the page for your project or group. 1. Go to your project or group and select **Wiki**.
1. In the left sidebar, select **Wiki**.
1. Select **New page** on this page, or any other wiki page. 1. Select **New page** on this page, or any other wiki page.
1. Select a content format. 1. Select a content format.
1. Add a title for your new page. Page titles use 1. Add a title for your new page. Page titles use
...@@ -111,8 +110,8 @@ may not be able to check out the wiki locally afterward. ...@@ -111,8 +110,8 @@ may not be able to check out the wiki locally afterward.
You need Developer [permissions](../../permissions.md) or higher to edit a wiki page: You need Developer [permissions](../../permissions.md) or higher to edit a wiki page:
1. Go to the page for your project or group. 1. Go to your project or group and select **Wiki**.
1. In the left sidebar, select **Wiki**, and go to the page you want to edit. 1. Go to the page you want to edit.
1. Select the edit icon (**{pencil}**). 1. Select the edit icon (**{pencil}**).
1. Edit the content. 1. Edit the content.
1. Select **Save changes**. 1. Select **Save changes**.
...@@ -126,8 +125,8 @@ For an example, read [Table of contents](../../markdown.md#table-of-contents). ...@@ -126,8 +125,8 @@ For an example, read [Table of contents](../../markdown.md#table-of-contents).
You need Maintainer [permissions](../../permissions.md) or higher to delete a wiki page: You need Maintainer [permissions](../../permissions.md) or higher to delete a wiki page:
1. Go to the page for your project or group. 1. Go to your project or group and select **Wiki**.
1. In the left sidebar, select **Wiki**, and go to the page you want to delete. 1. Go to the page you want to delete.
1. Select **Delete page**. 1. Select **Delete page**.
1. Confirm the deletion. 1. Confirm the deletion.
...@@ -135,8 +134,8 @@ You need Maintainer [permissions](../../permissions.md) or higher to delete a wi ...@@ -135,8 +134,8 @@ You need Maintainer [permissions](../../permissions.md) or higher to delete a wi
You need Developer [permissions](../../permissions.md) or higher to move a wiki page: You need Developer [permissions](../../permissions.md) or higher to move a wiki page:
1. Go to the page for your project or group. 1. Go to your project or group and select **Wiki**.
1. In the left sidebar, select **Wiki**, and go to the page you want to move. 1. Go to the page you want to move.
1. Select the edit icon (**{pencil}**). 1. Select the edit icon (**{pencil}**).
1. Add the new path to the **Title** field. For example, if you have a wiki page 1. Add the new path to the **Title** field. For example, if you have a wiki page
called `about` under `company` and you want to move it to the wiki's root, called `about` under `company` and you want to move it to the wiki's root,
...@@ -164,8 +163,8 @@ From the history page you can see: ...@@ -164,8 +163,8 @@ From the history page you can see:
You can see the changes made in a version of a wiki page, similar to versioned diff file views: You can see the changes made in a version of a wiki page, similar to versioned diff file views:
1. Go to the page for your project or group. 1. Go to your project or group and select **Wiki**.
1. In the left sidebar, select **Wiki**, and go to the wiki page you're interested in. 1. Go to the wiki page you're interested in.
1. Select **Page history** to see all page versions. 1. Select **Page history** to see all page versions.
1. Select the commit message in the **Changes** column for the version you're interested in. 1. Select the commit message in the **Changes** column for the version you're interested in.
...@@ -192,8 +191,7 @@ You need Developer [permissions](../../permissions.md) or higher to customize th ...@@ -192,8 +191,7 @@ You need Developer [permissions](../../permissions.md) or higher to customize th
navigation sidebar. This process creates a wiki page named `_sidebar` which fully navigation sidebar. This process creates a wiki page named `_sidebar` which fully
replaces the default sidebar navigation: replaces the default sidebar navigation:
1. Go to the page for your project or group. 1. Go to your project or group and select **Wiki**.
1. In the left sidebar, select **Wiki**.
1. In the top right corner of the page, select **Edit sidebar**. 1. In the top right corner of the page, select **Edit sidebar**.
1. When complete, select **Save changes**. 1. When complete, select **Save changes**.
...@@ -243,7 +241,7 @@ and above. Group wiki repositories can be moved using the ...@@ -243,7 +241,7 @@ and above. Group wiki repositories can be moved using the
To add a link to an external wiki from a project's left sidebar: To add a link to an external wiki from a project's left sidebar:
1. In your project, go to **Settings > Integrations**. 1. Go to your project and select **Settings > Integrations**.
1. Select **External wiki**. 1. Select **External wiki**.
1. Add the URL to your external wiki. 1. Add the URL to your external wiki.
1. (Optional) Select **Test settings** to verify the connection. 1. (Optional) Select **Test settings** to verify the connection.
...@@ -258,16 +256,16 @@ To hide the internal wiki from the sidebar, [disable the project's wiki](#disabl ...@@ -258,16 +256,16 @@ To hide the internal wiki from the sidebar, [disable the project's wiki](#disabl
To hide the link to an external wiki: To hide the link to an external wiki:
1. In your project, go to **Settings > Integrations**. 1. Go to your project and select **Settings > Integrations**.
1. Select **External wiki**. 1. Select **External wiki**.
1. Unselect **Enable integration**. 1. In the **Enable integration** section, clear the **Active** checkbox.
1. Select **Save changes**. 1. Select **Save changes**.
## Disable the project's wiki ## Disable the project's wiki
To disable a project's internal wiki: To disable a project's internal wiki:
1. In your project, go to **Settings > General**. 1. Go to your project and select **Settings > General**.
1. Expand **Visibility, project features, permissions**. 1. Expand **Visibility, project features, permissions**.
1. Scroll down to find **Wiki** and toggle it off (in gray). 1. Scroll down to find **Wiki** and toggle it off (in gray).
1. Select **Save changes**. 1. Select **Save changes**.
......
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