From 3c31d793c8321e7b02c36ea81c82ff63fed55d12 Mon Sep 17 00:00:00 2001 From: Marcel Amirault Date: Wed, 5 Jun 2019 03:29:33 +0000 Subject: [PATCH] Docs: Update all links to relative in /workflow and /administration --- doc/administration/auth/google_secure_ldap.md | 2 +- doc/administration/compliance.md | 4 +- doc/administration/custom_hooks.md | 5 +- .../geo/disaster_recovery/planned_failover.md | 2 +- .../geo/replication/database.md | 2 +- .../geo/replication/external_database.md | 2 +- .../geo/replication/high_availability.md | 4 +- doc/administration/geo/replication/index.md | 4 +- doc/administration/geo/replication/tuning.md | 2 +- .../high_availability/img/geo-ha-diagram.png | Bin 0 -> 43826 bytes doc/administration/high_availability/nfs.md | 2 +- doc/administration/incoming_email.md | 2 +- doc/administration/index.md | 35 ++++------ .../operations/fast_ssh_key_lookup.md | 4 +- doc/administration/packages.md | 6 +- .../raketasks/project_import_export.md | 1 - doc/workflow/README.md | 10 +-- doc/workflow/gitlab_flow.md | 2 +- .../lfs/migrate_from_git_annex_to_git_lfs.md | 64 ++++++++---------- doc/workflow/merge_request_approvals.md | 4 +- doc/workflow/repository_mirroring.md | 4 +- 21 files changed, 74 insertions(+), 87 deletions(-) create mode 100644 doc/administration/high_availability/img/geo-ha-diagram.png diff --git a/doc/administration/auth/google_secure_ldap.md b/doc/administration/auth/google_secure_ldap.md index 65a51fc4aa0..760af0cfd1a 100644 --- a/doc/administration/auth/google_secure_ldap.md +++ b/doc/administration/auth/google_secure_ldap.md @@ -27,7 +27,7 @@ The steps below cover: 'Entire domain (GitLab)' or 'Selected organizational units' for both 'Verify user credentials' and 'Read user information'. Select 'Add LDAP Client' - TIP: **Tip:** If you plan to use GitLab [LDAP Group Sync](https://docs.gitlab.com/ee/administration/auth/ldap-ee.html#group-sync) + TIP: **Tip:** If you plan to use GitLab [LDAP Group Sync](ldap-ee.md#group-sync) , turn on 'Read group information'. ![Add LDAP Client Step 2](img/google_secure_ldap_add_step_2.png) diff --git a/doc/administration/compliance.md b/doc/administration/compliance.md index 9c13ff772b3..246addb6dc9 100644 --- a/doc/administration/compliance.md +++ b/doc/administration/compliance.md @@ -12,7 +12,7 @@ GitLab’s [security features](../security/README.md) may also help you meet rel |**[Email all users of a project, group, or entire server](../user/admin_area/settings/terms.md)**
An admin can email groups of users based on project or group membership, or email everyone using the GitLab instance. This is great for scheduled maintenance or upgrades.|Starter+|| |**[Omnibus package supports log forwarding](https://docs.gitlab.com/omnibus/settings/logs.html#udp-log-forwarding)**
Forward your logs to a central system.|Starter+|| |**[Lock project membership to group](../user/group/index.md#member-lock-starter)**
Group owners can prevent new members from being added to projects within a group.|Starter+|✓| -|**[LDAP group sync](https://docs.gitlab.com/ee/administration/auth/ldap-ee.html#group-sync)**
GitLab Enterprise Edition gives admins the ability to automatically sync groups and manage SSH keys, permissions, and authentication, so you can focus on building your product, not configuring your tools.|Starter+|| -|**[LDAP group sync filters](https://docs.gitlab.com/ee/administration/auth/ldap-ee.html#group-sync)**
GitLab Enterprise Edition Premium gives more flexibility to synchronize with LDAP based on filters, meaning you can leverage LDAP attributes to map GitLab permissions.|Premium+|| +|**[LDAP group sync](auth/ldap-ee.md#group-sync)**
GitLab Enterprise Edition gives admins the ability to automatically sync groups and manage SSH keys, permissions, and authentication, so you can focus on building your product, not configuring your tools.|Starter+|| +|**[LDAP group sync filters](auth/ldap-ee.md#group-sync)**
GitLab Enterprise Edition Premium gives more flexibility to synchronize with LDAP based on filters, meaning you can leverage LDAP attributes to map GitLab permissions.|Premium+|| |**[Audit logs](audit_events.md)**
To maintain the integrity of your code, GitLab Enterprise Edition Premium gives admins the ability to view any modifications made within the GitLab server in an advanced audit log system, so you can control, analyze and track every change.|Premium+|| |**[Auditor users](auditor_users.md)**
Auditor users are users who are given read-only access to all projects, groups, and other resources on the GitLab instance.|Premium+|| diff --git a/doc/administration/custom_hooks.md b/doc/administration/custom_hooks.md index 288cb1bf0bb..113514e1ee8 100644 --- a/doc/administration/custom_hooks.md +++ b/doc/administration/custom_hooks.md @@ -5,11 +5,11 @@ Custom Git hooks must be configured on the filesystem of the GitLab server. Only GitLab server administrators will be able to complete these tasks. Please explore [webhooks] and [CI] as an option if you do not have filesystem access. For a user configurable Git hook interface, see -[Push Rules](https://docs.gitlab.com/ee/push_rules/push_rules.html), +[Push Rules](../push_rules/push_rules.md), available in GitLab Enterprise Edition. NOTE: **Note:** -Custom Git hooks won't be replicated to secondary nodes if you use [GitLab Geo][gitlab-geo] +Custom Git hooks won't be replicated to secondary nodes if you use [GitLab Geo](geo/replication/index.md) Git natively supports hooks that are executed on different actions. Examples of server-side git hooks include pre-receive, post-receive, and update. @@ -123,6 +123,5 @@ exit 1 [CI]: ../ci/README.md [hooks]: https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks#Server-Side-Hooks [webhooks]: ../user/project/integrations/webhooks.md -[gitlab-geo]: https://docs.gitlab.com/ee/administration/geo/replication/index.html [5073]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5073 [93]: https://gitlab.com/gitlab-org/gitlab-shell/merge_requests/93 diff --git a/doc/administration/geo/disaster_recovery/planned_failover.md b/doc/administration/geo/disaster_recovery/planned_failover.md index 88ab12d910a..b8071b5993f 100644 --- a/doc/administration/geo/disaster_recovery/planned_failover.md +++ b/doc/administration/geo/disaster_recovery/planned_failover.md @@ -113,7 +113,7 @@ If any objects are failing to replicate, this should be investigated before scheduling the maintenance window. Following a planned failover, anything that failed to replicate will be **lost**. -You can use the [Geo status API](https://docs.gitlab.com/ee/api/geo_nodes.html#retrieve-project-sync-or-verification-failures-that-occurred-on-the-current-node) to review failed objects and +You can use the [Geo status API](../../../api/geo_nodes.md#retrieve-project-sync-or-verification-failures-that-occurred-on-the-current-node) to review failed objects and the reasons for failure. A common cause of replication failures is the data being missing on the diff --git a/doc/administration/geo/replication/database.md b/doc/administration/geo/replication/database.md index a0c2cf0eced..c0cdea216cb 100644 --- a/doc/administration/geo/replication/database.md +++ b/doc/administration/geo/replication/database.md @@ -445,7 +445,7 @@ The replication process is now complete. PostgreSQL connections. We recommend using PGBouncer if you use GitLab in a high-availability configuration with a cluster of nodes supporting a Geo **primary** node and another cluster of nodes supporting a Geo **secondary** node. For more -information, see the [Omnibus HA](https://docs.gitlab.com/ee/administration/high_availability/database.html#configure-using-omnibus-for-high-availability) +information, see the [Omnibus HA](../../high_availability/database.md#configure-using-omnibus) documentation. For a Geo **secondary** node to work properly with PGBouncer in front of the database, diff --git a/doc/administration/geo/replication/external_database.md b/doc/administration/geo/replication/external_database.md index dae5ed911b0..177ca68613e 100644 --- a/doc/administration/geo/replication/external_database.md +++ b/doc/administration/geo/replication/external_database.md @@ -129,7 +129,7 @@ To configure the connection to the external read-replica database and enable Log database to keep track of replication status and automatically recover from potential replication issues. Omnibus automatically configures a tracking database when `roles ['geo_secondary_role']` is set. For high availability, -refer to [Geo High Availability](https://docs.gitlab.com/ee/administration/high_availability). +refer to [Geo High Availability](../../high_availability/README.md). If you want to run this database external to Omnibus, please follow the instructions below. The tracking database requires an [FDW](https://www.postgresql.org/docs/9.6/static/postgres-fdw.html) diff --git a/doc/administration/geo/replication/high_availability.md b/doc/administration/geo/replication/high_availability.md index 715a83a9ff3..921a3ef1c7a 100644 --- a/doc/administration/geo/replication/high_availability.md +++ b/doc/administration/geo/replication/high_availability.md @@ -6,7 +6,7 @@ described, it is possible to adapt these instructions to your needs. ## Architecture overview -![Geo HA Diagram](https://docs.gitlab.com/ee/administration/img/high_availability/geo-ha-diagram.png) +![Geo HA Diagram](../../high_availability/img/geo-ha-diagram.png) _[diagram source - gitlab employees only][diagram-source]_ @@ -68,7 +68,7 @@ NOTE: **Note:** PostgreSQL and Redis should have already been disabled on the application servers, and connections from the application servers to those services on the backend servers configured, during normal GitLab HA set up. See high availability configuration documentation for -[PostgreSQL](https://docs.gitlab.com/ee/administration/high_availability/database.html#configuring-the-application-nodes) +[PostgreSQL](../../high_availability/database.md#configuring-the-application-nodes) and [Redis](../../high_availability/redis.md#example-configuration-for-the-gitlab-application). The **primary** database will require modification later, as part of diff --git a/doc/administration/geo/replication/index.md b/doc/administration/geo/replication/index.md index b2f71d82cfc..54377f7ae4e 100644 --- a/doc/administration/geo/replication/index.md +++ b/doc/administration/geo/replication/index.md @@ -179,7 +179,7 @@ The steps below should be followed in the order they appear. **Make sure the Git If you installed GitLab using the Omnibus packages (highly recommended): 1. [Install GitLab Enterprise Edition](https://about.gitlab.com/installation/) on the server that will serve as the **secondary** node. Do not create an account or log in to the new **secondary** node. -1. [Upload the GitLab License](https://docs.gitlab.com/ee/user/admin_area/license.html) on the **primary** node to unlock Geo. The license must be for [GitLab Premium](https://about.gitlab.com/pricing/) or higher. +1. [Upload the GitLab License](../../../user/admin_area/license.md) on the **primary** node to unlock Geo. The license must be for [GitLab Premium](https://about.gitlab.com/pricing/) or higher. 1. [Set up the database replication](database.md) (`primary (read-write) <-> secondary (read-only)` topology). 1. [Configure fast lookup of authorized SSH keys in the database](../../operations/fast_ssh_key_lookup.md). This step is required and needs to be done on **both** the **primary** and **secondary** nodes. 1. [Configure GitLab](configuration.md) to set the **primary** and **secondary** nodes. @@ -261,7 +261,7 @@ Take special note that these examples of GitLab features are both: Examples include: -- [Elasticsearch integration](https://docs.gitlab.com/ee/integration/elasticsearch.html). +- [Elasticsearch integration](../../../integration/elasticsearch.md). - [Container Registry](../../container_registry.md). [Object Storage](object_storage.md) can mitigate this. - [GitLab Pages](../../pages/index.md). - [Mattermost integration](https://docs.gitlab.com/omnibus/gitlab-mattermost/). diff --git a/doc/administration/geo/replication/tuning.md b/doc/administration/geo/replication/tuning.md index b9921b2e69f..1943f2230df 100644 --- a/doc/administration/geo/replication/tuning.md +++ b/doc/administration/geo/replication/tuning.md @@ -13,5 +13,5 @@ However, this may not lead to more downloads in parallel unless the number of available Sidekiq threads is also increased. For example, if repository sync capacity is increased from 25 to 50, you may also want to increase the number of Sidekiq threads from 25 to 50. See the -[Sidekiq concurrency documentation](https://docs.gitlab.com/ee/administration/operations/extra_sidekiq_processes.html#number-of-threads) +[Sidekiq concurrency documentation](../../operations/extra_sidekiq_processes.md#number-of-threads) for more details. diff --git a/doc/administration/high_availability/img/geo-ha-diagram.png b/doc/administration/high_availability/img/geo-ha-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..da5d612827ca7aea8ef083b85f1f726b92975374 GIT binary patch literal 43826 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 the NFS server can cause data corruption problems. For supported database architecture, please see our documentation on -[Configuring a Database for GitLab HA](https://docs.gitlab.com/ee/administration/high_availability/database.html). +[Configuring a Database for GitLab HA](database.md). ## NFS Client mount options diff --git a/doc/administration/incoming_email.md b/doc/administration/incoming_email.md index 9ac310af248..8271c579f5b 100644 --- a/doc/administration/incoming_email.md +++ b/doc/administration/incoming_email.md @@ -10,7 +10,7 @@ GitLab has several features based on receiving incoming emails: - [New merge request by email](../user/project/merge_requests/index.md#create-new-merge-requests-by-email): allow GitLab users to create a new merge request by sending an email to a user-specific email address. -- [Service Desk](https://docs.gitlab.com/ee/user/project/service_desk.html): provide e-mail support to +- [Service Desk](../user/project/service_desk.md): provide e-mail support to your customers through GitLab. **[PREMIUM]** ## Requirements diff --git a/doc/administration/index.md b/doc/administration/index.md index 797a7242bd0..95a0e84deb6 100644 --- a/doc/administration/index.md +++ b/doc/administration/index.md @@ -20,7 +20,7 @@ GitLab Community Edition installations only have access to Core features. GitLab.com is administered by GitLab, Inc., therefore, only GitLab team members have access to its admin configurations. If you're a GitLab.com user, please check the -[user documentation](../user/index.html). +[user documentation](../user/index.md). NOTE: **Note:** Non-administrator users don’t have access to GitLab administration tools and settings. @@ -37,9 +37,9 @@ Learn how to install, configure, update, and maintain your GitLab instance. - [Omnibus support for log forwarding](https://docs.gitlab.com/omnibus/settings/logs.html#udp-log-shipping-gitlab-enterprise-edition-only) **[STARTER ONLY]** - [High Availability](high_availability/README.md): Configure multiple servers for scaling or high availability. - [High Availability on AWS](../university/high-availability/aws/README.md): Set up GitLab HA on Amazon AWS. -- [Geo](https://docs.gitlab.com/ee/administration/geo/replication/index.html): Replicate your GitLab instance to other geographic locations as a read-only fully operational version. **[PREMIUM ONLY]** -- [Disaster Recovery](https://docs.gitlab.com/ee/administration/geo/disaster_recovery/index.html): Quickly fail-over to a different site with minimal effort in a disaster situation. **[PREMIUM ONLY]** -- [Pivotal Tile](https://docs.gitlab.com/ee/install/pivotal/index.html): Deploy GitLab as a pre-configured appliance using Ops Manager (BOSH) for Pivotal Cloud Foundry. **[PREMIUM ONLY]** +- [Geo](geo/replication/index.md): Replicate your GitLab instance to other geographic locations as a read-only fully operational version. **[PREMIUM ONLY]** +- [Disaster Recovery](geo/disaster_recovery/index.md): Quickly fail-over to a different site with minimal effort in a disaster situation. **[PREMIUM ONLY]** +- [Pivotal Tile](../install/pivotal/index.md): Deploy GitLab as a pre-configured appliance using Ops Manager (BOSH) for Pivotal Cloud Foundry. **[PREMIUM ONLY]** - [Add License](../user/admin_area/license.md): Upload a license at install time to unlock features that are in paid tiers of GitLab. **[STARTER ONLY]** ### Configuring GitLab @@ -61,9 +61,9 @@ Learn how to install, configure, update, and maintain your GitLab instance. - [Diff limits](../user/admin_area/diff_limits.md): Configure the diff rendering size limits of branch comparison pages. - [Merge request diffs storage](merge_request_diffs.md): Configure merge requests diffs external storage. - [Broadcast Messages](../user/admin_area/broadcast_messages.md): Send messages to GitLab users through the UI. -- [Elasticsearch](https://docs.gitlab.com/ee/integration/elasticsearch.html): Enable Elasticsearch to empower GitLab's Advanced Global Search. Useful when you deal with a huge amount of data. **[STARTER ONLY]** +- [Elasticsearch](../integration/elasticsearch.md): Enable Elasticsearch to empower GitLab's Advanced Global Search. Useful when you deal with a huge amount of data. **[STARTER ONLY]** - [External Classification Policy Authorization](../user/admin_area/settings/external_authorization.md) **[PREMIUM ONLY]** -- [Upload a license](https://docs.gitlab.com/ee/user/admin_area/license.html): Upload a license to unlock features that are in paid tiers of GitLab. **[STARTER ONLY]** +- [Upload a license](../user/admin_area/license.md): Upload a license to unlock features that are in paid tiers of GitLab. **[STARTER ONLY]** - [Admin Area](../user/admin_area/index.md): for self-managed instance-wide configuration and maintenance. #### Customizing GitLab's appearance @@ -73,7 +73,7 @@ Learn how to install, configure, update, and maintain your GitLab instance. - [Branded login page](../customization/branded_login_page.md): Customize the login page with your own logo, title, and description. - [Welcome message](../customization/welcome_message.md): Add a custom welcome message to the sign-in page. - ["New Project" page](../customization/new_project_page.md): Customize the text to be displayed on the page that opens whenever your users create a new project. -- [Additional custom email text](https://docs.gitlab.com/ee/user/admin_area/settings/email.html#custom-additional-text-premium-only): Add additional custom text to emails sent from GitLab. **[PREMIUM ONLY]** +- [Additional custom email text](../user/admin_area/settings/email.md#custom-additional-text-premium-only): Add additional custom text to emails sent from GitLab. **[PREMIUM ONLY]** ### Maintaining GitLab @@ -108,34 +108,29 @@ Learn how to install, configure, update, and maintain your GitLab instance. - [Sign-up restrictions](../user/admin_area/settings/sign_up_restrictions.md): block email addresses of specific domains, or whitelist only specific domains. - [Access restrictions](../user/admin_area/settings/visibility_and_access_controls.md#enabled-git-access-protocols): Define which Git access protocols can be used to talk to GitLab (SSH, HTTP, HTTPS). - [Authentication and Authorization](auth/README.md): Configure external authentication with LDAP, SAML, CAS and additional providers. - - [Sync LDAP](https://docs.gitlab.com/ee/administration/auth/ldap-ee.html) **[STARTER ONLY]** - - [Kerberos authentication](https://docs.gitlab.com/ee/integration/kerberos.html) **[STARTER ONLY]** + - [Sync LDAP](auth/ldap-ee.md) **[STARTER ONLY]** + - [Kerberos authentication](../integration/kerberos.md) **[STARTER ONLY]** - See also other [authentication](../topics/authentication/index.md#gitlab-administrators) topics (for example, enforcing 2FA). -- [Email users](https://docs.gitlab.com/ee/tools/email.html): Email GitLab users from within GitLab. **[STARTER ONLY]** +- [Email users](../tools/email.md): Email GitLab users from within GitLab. **[STARTER ONLY]** - [User Cohorts](../user/admin_area/user_cohorts.md): Display the monthly cohorts of new users and their activities over time. - [Audit logs and events](audit_events.md): View the changes made within the GitLab server for: - Groups and projects. **[STARTER]** - Instances. **[PREMIUM ONLY]** - [Auditor users](auditor_users.md): Users with read-only access to all projects, groups, and other resources on the GitLab instance. **[PREMIUM ONLY]** - [Incoming email](incoming_email.md): Configure incoming emails to allow - users to [reply by email], create [issues by email] and - [merge requests by email], and to enable [Service Desk]. + users to [reply by email](reply_by_email.md), create [issues by email](../user/project/issues/create_new_issue.md#new-issue-via-email) and + [merge requests by email](../user/project/merge_requests/index.md#create-new-merge-requests-by-email), and to enable [Service Desk](../user/project/service_desk.md). - [Postfix for incoming email](reply_by_email_postfix_setup.md): Set up a basic Postfix mail server with IMAP authentication on Ubuntu for incoming emails. - [Abuse reports](../user/admin_area/abuse_reports.md): View and resolve abuse reports from your users. -[reply by email]: reply_by_email.md -[issues by email]: ../user/project/issues/create_new_issue.md#new-issue-via-email -[merge requests by email]: ../user/project/merge_requests/index.md#create-new-merge-requests-by-email -[Service Desk]: https://docs.gitlab.com/ee/user/project/service_desk.html - ## Project settings - [Container Registry](container_registry.md): Configure Container Registry with GitLab. - [Issue closing pattern](issue_closing_pattern.md): Customize how to close an issue from commit messages. - [Gitaly](gitaly/index.md): Configuring Gitaly, GitLab's Git repository storage service. -- [Default labels](../user/admin_area/labels.html): Create labels that will be automatically added to every new project. +- [Default labels](../user/admin_area/labels.md): Create labels that will be automatically added to every new project. - [Restrict the use of public or internal projects](../public_access/public_access.md#restricting-the-use-of-public-or-internal-projects): Restrict the use of visibility levels for users when they create a project or a snippet. - [Custom project templates](../user/admin_area/custom_project_templates.md): Configure a set of projects to be used as custom templates when creating a new project. **[PREMIUM ONLY]** - [Packages](packages.md): Enable GitLab to act as a Maven repository or NPM registry. **[PREMIUM ONLY]** @@ -145,7 +140,7 @@ Learn how to install, configure, update, and maintain your GitLab instance. - [Repository checks](repository_checks.md): Periodic Git repository checks. - [Repository storage paths](repository_storage_paths.md): Manage the paths used to store repositories. - [Repository storage rake tasks](raketasks/storage.md): A collection of rake tasks to list and migrate existing projects and attachments associated with it from Legacy storage to Hashed storage. -- [Limit repository size](https://docs.gitlab.com/ee/user/admin_area/settings/account_and_limit_settings.html): Set a hard limit for your repositories' size. **[STARTER ONLY]** +- [Limit repository size](../user/admin_area/settings/account_and_limit_settings.md): Set a hard limit for your repositories' size. **[STARTER ONLY]** ## Continuous Integration settings @@ -154,7 +149,7 @@ Learn how to install, configure, update, and maintain your GitLab instance. - [Job artifacts](job_artifacts.md): Enable, disable, and configure job artifacts (a set of files and directories which are outputted by a job when it completes successfully). - [Job traces](job_traces.md): Information about the job traces (logs). - [Register Shared and specific Runners](../ci/runners/README.md#registering-a-shared-runner): Learn how to register and configure Shared and specific Runners to your own instance. -- [Shared Runners pipelines quota](https://docs.gitlab.com/ee/user/admin_area/settings/continuous_integration.html#shared-runners-pipeline-minutes-quota-starter-only): Limit the usage of pipeline minutes for Shared Runners. **[STARTER ONLY]** +- [Shared Runners pipelines quota](../user/admin_area/settings/continuous_integration.md#shared-runners-pipeline-minutes-quota-starter-only): Limit the usage of pipeline minutes for Shared Runners. **[STARTER ONLY]** - [Enable/disable Auto DevOps](../topics/autodevops/index.md#enablingdisabling-auto-devops): Enable or disable Auto DevOps for your instance. ## Git configuration options diff --git a/doc/administration/operations/fast_ssh_key_lookup.md b/doc/administration/operations/fast_ssh_key_lookup.md index 69f110805b7..3631ea0822f 100644 --- a/doc/administration/operations/fast_ssh_key_lookup.md +++ b/doc/administration/operations/fast_ssh_key_lookup.md @@ -34,10 +34,10 @@ feature for CentOS 6, follow [the instructions on how to build and install a cus By default, GitLab manages an `authorized_keys` file, which contains all the public SSH keys for users allowed to access GitLab. However, to maintain a -single source of truth, [Geo](https://docs.gitlab.com/ee/administration/geo/replication/index.html) needs to be configured to perform SSH fingerprint +single source of truth, [Geo](../geo/replication/index.md) needs to be configured to perform SSH fingerprint lookups via database lookup. -As part of [setting up Geo](https://docs.gitlab.com/ee/administration/geo/replication/index.html#setup-instructions), +As part of [setting up Geo](../geo/replication/index.md#setup-instructions), you will be required to follow the steps outlined below for both the primary and secondary nodes, but note that the `Write to "authorized keys" file` checkbox only needs to be unchecked on the primary node since it will be reflected diff --git a/doc/administration/packages.md b/doc/administration/packages.md index 5b9a13e3859..0d5f784b71e 100644 --- a/doc/administration/packages.md +++ b/doc/administration/packages.md @@ -8,12 +8,12 @@ The Packages feature allows GitLab to act as a repository for the following: | Software repository | Description | Available in GitLab version | | ------------------- | ----------- | --------------------------- | -| [Maven Repository](https://docs.gitlab.com/ee/user/project/packages/maven_repository.html) | The GitLab Maven Repository enables every project in GitLab to have its own space to store [Maven](https://maven.apache.org/) packages. | 11.3+ | -| [NPM Registry](https://docs.gitlab.com/ee/user/project/packages/npm_registry.html) | The GitLab NPM Registry enables every project in GitLab to have its own space to store [NPM](https://www.npmjs.com/) packages. | 11.7+ | +| [Maven Repository](../user/project/packages/maven_repository.md) | The GitLab Maven Repository enables every project in GitLab to have its own space to store [Maven](https://maven.apache.org/) packages. | 11.3+ | +| [NPM Registry](../user/project/packages/npm_registry.md) | The GitLab NPM Registry enables every project in GitLab to have its own space to store [NPM](https://www.npmjs.com/) packages. | 11.7+ | Don't you see your package management system supported yet? Please consider contributing -to GitLab. This [development documentation](https://docs.gitlab.com/ee/development/packages.html) will guide you through the process. +to GitLab. This [development documentation](../development/packages.md) will guide you through the process. ## Enabling the Packages feature diff --git a/doc/administration/raketasks/project_import_export.md b/doc/administration/raketasks/project_import_export.md index f43bba0a7a7..6ca23aabdec 100644 --- a/doc/administration/raketasks/project_import_export.md +++ b/doc/administration/raketasks/project_import_export.md @@ -32,5 +32,4 @@ bundle exec rake gitlab:import_export:data RAILS_ENV=production ``` [ce-3050]: https://gitlab.com/gitlab-org/gitlab-ce/issues/3050 -[feature-flags]: https://docs.gitlab.com/ee/api/features.html [tmp]: ../../development/shared_files.md diff --git a/doc/workflow/README.md b/doc/workflow/README.md index 84ab7840140..40e2486ace5 100644 --- a/doc/workflow/README.md +++ b/doc/workflow/README.md @@ -13,15 +13,15 @@ comments: false - [Groups](../user/group/index.md) - Issues - The GitLab Issue Tracker is an advanced and complete tool for tracking the evolution of a new idea or the process of solving a problem. - - [Exporting Issues](https://docs.gitlab.com/ee/user/project/issues/csv_export.html) **[STARTER]** Export issues as a CSV, emailed as an attachment. + - [Exporting Issues](../user/project/issues/csv_export.md) **[STARTER]** Export issues as a CSV, emailed as an attachment. - [Confidential issues](../user/project/issues/confidential_issues.md) - [Due date for issues](../user/project/issues/due_dates.md) - [Issue Board](../user/project/issue_board.md) - [Keyboard shortcuts](shortcuts.md) - [File finder](file_finder.md) -- [File lock](https://docs.gitlab.com/ee/user/project/file_lock.html) **[PREMIUM]** +- [File lock](../user/project/file_lock.md) **[PREMIUM]** - [Labels](../user/project/labels.md) -- [Issue weight](https://docs.gitlab.com/ee/workflow/issue_weight.html) **[STARTER]** +- [Issue weight](issue_weight.md) **[STARTER]** - [Notification emails](notifications.md) - [Projects](../user/project/index.md) - [Project forking workflow](forking_workflow.md) @@ -44,9 +44,9 @@ comments: false - [Merge requests versions](../user/project/merge_requests/versions.md) - ["Work In Progress" merge requests](../user/project/merge_requests/work_in_progress_merge_requests.md) - [Fast-forward merge requests](../user/project/merge_requests/fast_forward_merge.md) - - [Merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/merge_request_approvals.html) **[STARTER]** + - [Merge request approvals](../user/project/merge_requests/merge_request_approvals.md) **[STARTER]** - [Repository mirroring](repository_mirroring.md) **[STARTER]** -- [Service Desk](https://docs.gitlab.com/ee/user/project/service_desk.html) **[PREMIUM]** +- [Service Desk](../user/project/service_desk.md) **[PREMIUM]** - [Manage large binaries with Git LFS](lfs/manage_large_binaries_with_git_lfs.md) - [Importing from SVN, GitHub, Bitbucket, etc](importing/README.md) - [Todos](todos.md) diff --git a/doc/workflow/gitlab_flow.md b/doc/workflow/gitlab_flow.md index 1b9fb504b15..7d0abb93262 100644 --- a/doc/workflow/gitlab_flow.md +++ b/doc/workflow/gitlab_flow.md @@ -166,7 +166,7 @@ This branch is the place for any work related to this change. NOTE: **Note:** The name of a branch might be dictated by organizational standards. -For example, in GitLab, any branches in GitLab EE that are equivalent to branches in GitLab CE [must end in `-ee`](https://docs.gitlab.com/ee/development/automatic_ce_ee_merge.html#cherry-picking-from-ce-to-ee). +For example, in GitLab, any branches in GitLab EE that are equivalent to branches in GitLab CE [must end in `-ee`](../development/automatic_ce_ee_merge.md#cherry-picking-from-ce-to-ee). When you are done or want to discuss the code, open a merge request. A merge request is an online place to discuss the change and review the code. diff --git a/doc/workflow/lfs/migrate_from_git_annex_to_git_lfs.md b/doc/workflow/lfs/migrate_from_git_annex_to_git_lfs.md index 1aeab5980a3..71c73e3dffe 100644 --- a/doc/workflow/lfs/migrate_from_git_annex_to_git_lfs.md +++ b/doc/workflow/lfs/migrate_from_git_annex_to_git_lfs.md @@ -42,7 +42,7 @@ Annex to Git LFS. ### TL; DR If you know what you are doing and want to skip the reading, this is what you -need to do (we assume you have [git-annex enabled][annex-gitlab-use] in your +need to do (we assume you have [git-annex enabled](../git_annex.md#using-gitlab-git-annex) in your repository and that you have made backups in case something goes wrong). Fire up a terminal, navigate to your Git repository and: @@ -82,7 +82,7 @@ Make sure the you read about the [`direct` mode][annex-direct] as it contains useful information that may fit in your use case. Note that `annex direct` is deprecated in Git Annex version 6, so you may need to upgrade your repository if the server also has Git Annex 6 installed. Read more in the -[Git Annex troubleshooting tips][annex-tips] section. +[Git Annex troubleshooting tips](../git_annex.md#troubleshooting-tips) section. 1. Backup your repository @@ -166,44 +166,45 @@ GitLab.com), therefore, you don't need to do anything server-side. 1. First, make sure you have `git-lfs` installed locally: - ```bash - git lfs help - ``` + ```bash + git lfs help + ``` - If the terminal doesn't prompt you with a full response on `git-lfs` commands, - [install the Git LFS client][install-lfs] first. + If the terminal doesn't prompt you with a full response on `git-lfs` commands, + [install the Git LFS client][install-lfs] first. 1. Inside the repo, run the following command to initiate LFS: - ```bash - git lfs install - ``` + ```bash + git lfs install + ``` 1. Enable `git-lfs` for the group of files you want to track. You can track specific files, all files containing the same extension, or an entire directory: - ```bash - git lfs track images/01.png # per file - git lfs track **/*.png # per extension - git lfs track images/ # per directory - ``` + ```bash + git lfs track images/01.png # per file + git lfs track **/*.png # per extension + git lfs track images/ # per directory + ``` - Once you do that, run `git status` and you'll see `.gitattributes` added - to your repo. It collects all file patterns that you chose to track via - `git-lfs`. + Once you do that, run `git status` and you'll see `.gitattributes` added + to your repo. It collects all file patterns that you chose to track via + `git-lfs`. 1. Add the files, commit and push them to GitLab: - ```bash - git add . - git commit -m "commit message" - git push - ``` + ```bash + git add . + git commit -m "commit message" + git push + ``` - If your remote is set up with HTTP, you will be asked to enter your login - credentials. If you have [2FA enabled][2fa], make sure to use a - [personal access token][token] instead of your password. + If your remote is set up with HTTP, you will be asked to enter your login + credentials. If you have [2FA enabled](../../user/profile/account/two_factor_authentication.md), make sure to use a + [personal access token](../../user/profile/account/two_factor_authentication.md#personal-access-tokens) + instead of your password. ## Removing the Git Annex branches @@ -238,18 +239,11 @@ git annex uninit - (Blog Post) [Getting Started with Git FLS][post-1] - (Blog Post) [Announcing LFS Support in GitLab][post-2] - (Blog Post) [GitLab Annex Solves the Problem of Versioning Large Binaries with Git][post-3] -- (GitLab Docs) [Git Annex][doc-1] -- (GitLab Docs) [Git LFS][doc-2] +- (GitLab Docs) [Git Annex](../git_annex.md) +- (GitLab Docs) [Git LFS](manage_large_binaries_with_git_lfs.md) -[2fa]: ../../user/profile/account/two_factor_authentication.md -[token]: ../../user/profile/account/two_factor_authentication.html#personal-access-tokens -[annex-tips]: ../git_annex.html#troubleshooting-tips [annex-direct]: https://git-annex.branchable.com/direct_mode/ -[annex-gitlab-use]: ../git_annex.md#using-gitlab-git-annex -[annex-ee]: https://docs.gitlab.com/ee/workflow/git_annex.html [bkp-ext-drive]: https://www.thomas-krenn.com/en/wiki/Git-annex_Repository_on_an_External_Hard_Drive -[doc-1]: https://docs.gitlab.com/ee/workflow/git_annex.html -[doc-2]: https://docs.gitlab.com/ee/workflow/lfs/manage_large_binaries_with_git_lfs.html [Git Annex]: http://git-annex.branchable.com/ [Git LFS]: https://git-lfs.github.com/ [install-lfs]: https://git-lfs.github.com/ diff --git a/doc/workflow/merge_request_approvals.md b/doc/workflow/merge_request_approvals.md index f8a99ec3d57..bfcd8faf236 100644 --- a/doc/workflow/merge_request_approvals.md +++ b/doc/workflow/merge_request_approvals.md @@ -1,5 +1,5 @@ --- -redirect_to: 'https://docs.gitlab.com/ee/user/project/merge_requests/merge_request_approvals.html' +redirect_to: '../user/project/merge_requests/merge_request_approvals.md' --- -This document was moved to [user/project/merge_requests/merge_request_approvals](https://docs.gitlab.com/ee/user/project/merge_requests/merge_request_approvals.html). +This document was moved to [another location](../user/project/merge_requests/merge_request_approvals.md). diff --git a/doc/workflow/repository_mirroring.md b/doc/workflow/repository_mirroring.md index 5bc5cf427ce..9772bd385ba 100644 --- a/doc/workflow/repository_mirroring.md +++ b/doc/workflow/repository_mirroring.md @@ -283,10 +283,10 @@ project mirroring again by [Forcing an update](#forcing-an-update-core). [GitLab Starter](https://about.gitlab.com/pricing/) 10.3. Pull mirroring uses polling to detect new branches and commits added upstream, often minutes -afterwards. If you notify GitLab by [API](https://docs.gitlab.com/ee/api/projects.html#start-the-pull-mirroring-process-for-a-project), +afterwards. If you notify GitLab by [API](https://docs.gitlab.com/ee/api/projects.html#start-the-pull-mirroring-process-for-a-project-starter), updates will be pulled immediately. -For more information, see [Start the pull mirroring process for a Project](https://docs.gitlab.com/ee/api/projects.html#start-the-pull-mirroring-process-for-a-project). +For more information, see [Start the pull mirroring process for a Project](https://docs.gitlab.com/ee/api/projects.html#start-the-pull-mirroring-process-for-a-project-starter). ## Forcing an update **[CORE]**