Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-25 03:10:54 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-25 03:10:54 +0300
commit1f126e43f5bef9750a1da8701d8320d2763c7b54 (patch)
tree7fe79fe484f1e6d367a128949a8507cac840b0d0
parent1506430b8c751d6bd7bf6de49752b8ba39f11edc (diff)
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--doc/api/commits.md2
-rw-r--r--doc/user/group/index.md4
-rw-r--r--doc/user/profile/index.md2
-rw-r--r--doc/user/project/repository/img/download_source_code.pngbin19681 -> 0 bytes
-rw-r--r--doc/user/project/repository/img/file_ext_icons_repo_v12_10.pngbin73624 -> 0 bytes
-rw-r--r--doc/user/project/repository/index.md418
-rw-r--r--doc/user/project/settings/index.md4
-rw-r--r--doc/user/project/working_with_projects.md2
-rw-r--r--doc/user/shortcuts.md2
-rw-r--r--lib/gitlab/email/attachment_uploader.rb2
-rw-r--r--lib/security/ci_configuration/base_build_action.rb2
-rw-r--r--spec/fixtures/emails/no_content_type.eml18
-rw-r--r--spec/lib/gitlab/email/attachment_uploader_spec.rb10
-rw-r--r--spec/lib/security/ci_configuration/sast_build_action_spec.rb18
-rw-r--r--spec/lib/security/ci_configuration/secret_detection_build_action_spec.rb8
15 files changed, 230 insertions, 262 deletions
diff --git a/doc/api/commits.md b/doc/api/commits.md
index 22d98b2b0a6..8feea5fa9c2 100644
--- a/doc/api/commits.md
+++ b/doc/api/commits.md
@@ -7,7 +7,7 @@ type: reference, api
# Commits API **(FREE)**
-This API operates on [repository commits](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository). Read more about [GitLab-specific information](../user/project/repository/index.md#commits) for commits.
+This API operates on [repository commits](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository). Read more about [GitLab-specific information](../user/project/repository/index.md#commit-changes-to-a-repository) for commits.
## List repository commits
diff --git a/doc/user/group/index.md b/doc/user/group/index.md
index 7f2e502b94b..a0c54fd09f5 100644
--- a/doc/user/group/index.md
+++ b/doc/user/group/index.md
@@ -351,7 +351,7 @@ You can transfer groups in the following ways:
When transferring groups, note:
-- Changing a group's parent can have unintended side effects. See [Redirects when changing repository paths](../project/repository/index.md#redirects-when-changing-repository-paths).
+- Changing a group's parent can have unintended side effects. See [what happens when a repository path changes](../project/repository/index.md#what-happens-when-a-repository-path-changes).
- You can only transfer groups to groups you manage.
- You must update your local repositories to point to the new location.
- If the immediate parent group's visibility is lower than the group's current visibility, visibility levels for subgroups and projects change to match the new parent group's visibility.
@@ -361,7 +361,7 @@ When transferring groups, note:
## Change a group's path
Changing a group's path (group URL) can have unintended side effects. Read
-[how redirects behave](../project/repository/index.md#redirects-when-changing-repository-paths)
+[how redirects behave](../project/repository/index.md#what-happens-when-a-repository-path-changes)
before you proceed.
If you are changing the path so it can be claimed by another group or user,
diff --git a/doc/user/profile/index.md b/doc/user/profile/index.md
index 17c24a6b63f..9bc069f602d 100644
--- a/doc/user/profile/index.md
+++ b/doc/user/profile/index.md
@@ -42,7 +42,7 @@ If you don't know your current password, select the **I forgot my password** lin
Your username has a unique [namespace](../group/index.md#namespaces),
which is updated when you change your username. Before you change your username, read about
-[how redirects behave](../project/repository/index.md#redirects-when-changing-repository-paths).
+[how redirects behave](../project/repository/index.md#what-happens-when-a-repository-path-changes).
If you do not want to update the namespace, you can create a new user or group and transfer projects to it instead.
Prerequisites:
diff --git a/doc/user/project/repository/img/download_source_code.png b/doc/user/project/repository/img/download_source_code.png
deleted file mode 100644
index 8d62d19b291..00000000000
--- a/doc/user/project/repository/img/download_source_code.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/project/repository/img/file_ext_icons_repo_v12_10.png b/doc/user/project/repository/img/file_ext_icons_repo_v12_10.png
deleted file mode 100644
index 04a8f38871b..00000000000
--- a/doc/user/project/repository/img/file_ext_icons_repo_v12_10.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/project/repository/index.md b/doc/user/project/repository/index.md
index ed5bcc1f85a..ad54def0c2b 100644
--- a/doc/user/project/repository/index.md
+++ b/doc/user/project/repository/index.md
@@ -8,75 +8,142 @@ type: concepts, howto
# Repository **(FREE)**
A [repository](https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository)
-is what you use to store your codebase in GitLab and change it with version control.
-A repository is part of a [project](../index.md), which has a lot of other features.
+is where you store your code and make changes to it. Your changes are tracked with version control.
+
+Each [project](../index.md) contains a repository.
## Create a repository
-To create a new repository, all you need to do is
-[create a new project](../../../user/project/working_with_projects.md#create-a-project) or
-[fork an existing project](forking_workflow.md).
+To create a repository, you can:
-Once you create a new project, you can add new files via UI
-(read the section below) or via command line.
-To add files from the command line, follow the instructions
-presented on the screen when you create a new project, or read
-through them in the [command line basics](../../../gitlab-basics/start-using-git.md)
-documentation.
+- [Create a project](../../../user/project/working_with_projects.md#create-a-project) or
+- [Fork an existing project](forking_workflow.md).
-> **Important:**
-For security reasons, when using the command line, we strongly recommend
-that you [connect with GitLab via SSH](../../../ssh/README.md).
+## Add files to a repository
-## Files
+You can add files to a repository:
-Use a repository to store your files in GitLab. In [GitLab 12.10 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/33806),
-an icon identifying the extension is shown next to the filename:
+- When you create a project.
+- After you create a project:
+ - By using [the web editor](web_editor.md).
+ - [From the command line](../../../gitlab-basics/command-line-commands.md).
-![Repository file icons](img/file_ext_icons_repo_v12_10.png)
+## Commit changes to a repository
-### Create and edit files
+You can [commit your changes](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository),
+to a branch in the repository. When you use the command line, you can commit multiple times before you push.
-Host your codebase in GitLab repositories by pushing your files to GitLab.
-You can either use the user interface (UI), or connect your local computer
-with GitLab [through the command line](../../../gitlab-basics/command-line-commands.md#start-working-on-your-project).
+- **Commit message:**
+ A commit message identities what is being changed and why.
+ In GitLab, you can add keywords to the commit
+ message to perform one of the following actions:
+ - **Trigger a GitLab CI/CD pipeline:**
+ If the project is configured with [GitLab CI/CD](../../../ci/README.md),
+ you trigger a pipeline per push, not per commit.
+ - **Skip pipelines:**
+ Add the [`ci skip`](../../../ci/yaml/README.md#skip-pipeline) keyword to
+ your commit message to make GitLab CI/CD skip the pipeline.
+ - **Cross-link issues and merge requests:**
+ Use [cross-linking](../issues/crosslinking_issues.md#from-commit-messages)
+ to keep track of related parts of your workflow.
+ If you mention an issue or a merge request in a commit message, they are displayed
+ on their respective thread.
+- **Cherry-pick a commit:**
+ In GitLab, you can
+ [cherry-pick a commit](../merge_requests/cherry_pick_changes.md#cherry-picking-a-commit)
+ from the UI.
+- **Revert a commit:**
+ [Revert a commit](../merge_requests/revert_changes.md#reverting-a-commit)
+ from the UI to a selected branch.
+- **Sign a commit:**
+ Use GPG to [sign your commits](gpg_signed_commits/index.md).
-To configure [GitLab CI/CD](../../../ci/README.md) to build, test, and deploy
-your code, add a file called [`.gitlab-ci.yml`](../../../ci/quick_start/index.md)
-to your repository's root.
+## Clone a repository
-**From the user interface:**
+You can [clone a repository by using the command line](../../../gitlab-basics/start-using-git.md#clone-a-repository).
-The GitLab UI allows you to perform lots of Git commands without having to
-touch the command line. Even if you use the command line regularly, sometimes
-it's easier to do so [via GitLab UI](web_editor.md):
+Alternatively, you can clone directly into a code editor.
-- [Create a file](web_editor.md#create-a-file)
-- [Upload a file](web_editor.md#upload-a-file)
-- [File templates](web_editor.md#template-dropdowns)
-- [Create a directory](web_editor.md#create-a-directory)
-- [Start a merge request](web_editor.md#tips)
-- [Find file history](git_history.md)
-- [Identify changes by line (Git blame)](git_blame.md)
+### Clone and open in Apple Xcode
-**From the command line:**
+> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/45820) in GitLab 11.0.
+
+Projects that contain a `.xcodeproj` or `.xcworkspace` directory can be cloned
+into Xcode on macOS.
-To get started with the command line, please read through the
-[command line basics documentation](../../../gitlab-basics/command-line-commands.md).
+1. From the GitLab UI, go to the project's overview page.
+1. Select **Clone**.
+1. Select **Xcode**.
-### Find files
+The project is cloned onto your computer and you are
+prompted to open XCode.
-Use the GitLab [file finder](file_finder.md) to search for files in a repository.
+### Clone and open in Visual Studio Code
-### Supported markup languages and extensions
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/220957) in GitLab 13.10.
-GitLab supports a number of markup languages (sometimes called [lightweight
-markup languages](https://en.wikipedia.org/wiki/Lightweight_markup_language))
-that you can use for the content of your files in a repository. They are mostly
-used for documentation purposes.
+All projects can be cloned into Visual Studio Code.
-Just pick the right extension for your files and GitLab renders them
-according to the markup language.
+1. From the GitLab UI, go to the project's overview page.
+1. Select **Clone**.
+1. Select **Visual Studio Code**.
+1. Select a folder to clone the project into.
+
+When VS Code has successfully cloned your project, it opens the folder.
+
+## Download the code in a repository
+
+> - Support for directory download was [introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/24704) in GitLab 11.11.
+> - Support for [including Git LFS blobs](../../../topics/git/lfs#lfs-objects-in-project-archives) was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/15079) in GitLab 13.5.
+
+You can download the source code that's stored in a repository.
+
+1. Above the file list, select the download icon (**{download}**).
+1. From the options, select the files you want to download.
+
+ - **Source code:**
+ Download the source code from the current branch you're viewing.
+ Available extensions: `zip`, `tar`, `tar.gz`, and `tar.bz2`.
+ - **Directory:**
+ Download a specific directory. Visible only when you view a subdirectory.
+ Available extensions: `zip`, `tar`, `tar.gz`, and `tar.bz2`.
+ - **Artifacts:**
+ Download the artifacts from the latest CI job.
+
+## Repository languages
+
+For the default branch of each repository, GitLab determines which programming languages
+are used. This information is displayed on the project overview page.
+
+![Repository Languages bar](img/repository_languages_v12_2.gif)
+
+When new files are added, this information can take up to five minutes to update.
+
+### Add repository languages
+
+Not all files are detected and listed on the project overview page. Documentation,
+vendor code, and most markup languages are excluded.
+
+You can change this behavior by overriding the default settings.
+
+1. In your repository's root directory, create a file named `.gitattributes`.
+1. Add a line that tells GitLab to include files of this type. For example,
+ to enable `.proto` files, add the following code:
+
+ ```plaintext
+ *.proto linguist-detectable=true
+ ```
+
+View a list of
+[supported data types](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml).
+
+This feature can use excessive CPU.
+For more information, see the [troubleshooting section](#repository-languages-excessive-cpu-use).
+
+### Supported markup languages
+
+If your file has one of the following file extensions, GitLab renders the
+contents of the file's [markup language](https://en.wikipedia.org/wiki/Lightweight_markup_language) in the UI.
| Markup language | Extensions |
| --------------- | ---------- |
@@ -90,38 +157,25 @@ according to the markup language.
| [creole](http://www.wikicreole.org/) | `creole` |
| [MediaWiki](https://www.mediawiki.org/wiki/MediaWiki) | `wiki`, `mediawiki` |
-### Repository README and index files
-
-When a `README` or `index` file is present in a repository, its contents are
-automatically pre-rendered by GitLab without opening it.
-
-They can either be plain text or have an extension of a
-[supported markup language](#supported-markup-languages-and-extensions):
-
-Some things to note about precedence:
-
-1. When both a `README` and an `index` file are present, the `README` always
- takes precedence.
-1. When more than one file is present with different extensions, they are
- ordered alphabetically, with the exception of a file without an extension,
- which is always last in precedence. For example, `README.adoc` takes
- precedence over `README.md`, and `README.rst` takes precedence over
- `README`.
+### README and index files
-### Jupyter Notebook files
+When a `README` or `index` file is present in a repository, GitLab renders its contents.
+These files can either be plain text or have the extension of a
+[supported markup language](#supported-markup-languages).
-[Jupyter](https://jupyter.org/) Notebook (previously IPython Notebook) files are used for
-interactive computing in many fields and contain a complete record of the
-user's sessions and include code, narrative text, equations, and rich output.
-
-[Read how to use Jupyter notebooks with GitLab.](jupyter_notebooks/index.md)
+- When both a `README` and an `index` file are present, the `README` always
+ takes precedence.
+- When multiple files have the same name but a different extension, the files are
+ ordered alphabetically. Any file without an extension is ordered last.
+ For example, `README.adoc` takes precedence over `README.md`, and `README.rst`
+ takes precedence over `README`.
### OpenAPI viewer
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/19515) in GitLab 12.6.
-GitLab can render OpenAPI specification files with its file viewer, provided
-their filenames include `openapi` or `swagger` and their extension is `yaml`,
+GitLab can render OpenAPI specification files. The filename
+must include `openapi` or `swagger` and the extension must be `yaml`,
`yml`, or `json`. The following examples are all correct:
- `openapi.yml`
@@ -138,200 +192,73 @@ their filenames include `openapi` or `swagger` and their extension is `yaml`,
- `openapi.gitlab.yml`
- `gitlab.openapi.yml`
-Then, to render them:
+To render an OpenAPI file:
-1. Navigate to the OpenAPI file in your repository in the GitLab UI.
-1. Click the "Display OpenAPI" button which is located between the "Display source"
- and "Edit" buttons (when an OpenAPI file is found, it replaces the
- "Display rendered file" button).
+1. Go to the OpenAPI file in your repository.
+1. Between the **Display source** and **Edit** buttons, select **Display OpenAPI**. When an OpenAPI file is found, it replaces the
+ **Display rendered file** button.
-## Branches
+## Repository size
-For details, see [Branches](branches/index.md).
+The project overview page shows the size of all files in the repository. The size is
+updated, at most, every 15 minutes. The file size includes repository files, artifacts, and LFS.
-## Commits
+The size can differ slightly from one instance to another due to compression, housekeeping, and other factors.
-When you [commit your changes](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository),
-you are introducing those changes to your branch.
-Via command line, you can commit multiple times before pushing.
+Administrators can set a [repository size limit](../../admin_area/settings/account_and_limit_settings.md).
+[GitLab sets the size limits for GitLab.com](../../gitlab_com/index.md#account-and-limit-settings).
-- **Commit message:**
- A commit message is important to identity what is being changed and,
- more importantly, why. In GitLab, you can add keywords to the commit
- message that performs one of the actions below:
- - **Trigger a GitLab CI/CD pipeline:**
- If you have your project configured with [GitLab CI/CD](../../../ci/README.md),
- you trigger a pipeline per push, not per commit.
- - **Skip pipelines:**
- You can add to your commit message the keyword
- [`[ci skip]`](../../../ci/yaml/README.md#skip-pipeline),
- and GitLab CI/CD skips that pipeline.
- - **Cross-link issues and merge requests:**
- [Cross-linking](../issues/crosslinking_issues.md#from-commit-messages)
- is great to keep track of what's is somehow related in your workflow.
- If you mention an issue or a merge request in a commit message, they are shown
- on their respective thread.
-- **Cherry-pick a commit:**
- In GitLab, you can
- [cherry-pick a commit](../merge_requests/cherry_pick_changes.md#cherry-picking-a-commit)
- right from the UI.
-- **Revert a commit:**
- Easily [revert a commit](../merge_requests/revert_changes.md#reverting-a-commit)
- from the UI to a selected branch.
-- **Sign a commit:**
- Use GPG to [sign your commits](gpg_signed_commits/index.md).
-
-## Project and repository size
+## Repository contributor graph
-A project's size is reported on the project's **Details** page. The reported size is
-updated every 15 minutes at most, so may not reflect recent activity. The displayed files size includes repository files, artifacts, and LFS.
+All code contributors are displayed under your project's **Repository > Contributors**.
-The project size may differ slightly from one instance to another due to compression, housekeeping, and other factors.
-
-[Repository size limit](../../admin_area/settings/account_and_limit_settings.md) may be set by administrators.
-GitLab.com's repository size limit [is set by GitLab](../../gitlab_com/index.md#account-and-limit-settings).
-
-## Contributors
-
-All the contributors to your codebase are displayed under your project's **Settings > Contributors**.
-
-They are ordered from the collaborator with the greatest number
-of commits to the fewest, and displayed on a nice graph:
+The graph shows the contributor with the most commits to the fewest.
![contributors to code](img/contributors_graph.png)
-## Repository graph
-
-The repository graph displays the history of the repository network visually, including branches and merges. This can help you visualize the Git flow strategy used in the repository:
-
-![repository Git flow](img/repo_graph.png)
-
-Find it under your project's **Repository > Graph**.
-
-## Repository languages
-
-For the default branch of each repository, GitLab determines what programming languages
-were used and displays this on the project's pages. If this information is missing, it's
-added after updating the default branch for the project. This process can take up to five
-minutes.
-
-![Repository Languages bar](img/repository_languages_v12_2.gif)
-
-Not all files are detected, among others; documentation,
-vendored code, and most markup languages are excluded. This behavior can be
-adjusted by overriding the default. For example, to enable `.proto` files to be
-detected, add the following to `.gitattributes` in the root of your repository.
-
-```plaintext
-*.proto linguist-detectable=true
-```
-
-Sometimes this feature can use excessive CPU.
-[Read about troubleshooting this](#repository-languages-excessive-cpu-use)
-and also more about customizing this feature using `.gitattributes`.
-
-## Locked files **(PREMIUM)**
-
-Use [File Locking](../file_lock.md) to
-lock your files to prevent any conflicting changes.
-
-## Repository's API
-
-You can access your repositories via [repository API](../../../api/repositories.md).
-
-## Clone a repository
-
-Learn how to [clone a repository through the command line](../../../gitlab-basics/start-using-git.md#clone-a-repository).
-
-Alternatively, clone directly into a code editor as documented below.
-
-### Clone and open in Apple Xcode
-
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/45820) in GitLab 11.0.
-
-Projects that contain a `.xcodeproj` or `.xcworkspace` directory can now be cloned
-into Xcode on macOS. To do that:
-
-1. From the GitLab UI, go to the project's overview page.
-1. Click **Clone**.
-1. Select **Xcode**.
-
-The project is cloned onto your computer in a folder of your choice and you are
-prompted to open XCode.
-
-### Clone and open in Visual Studio Code
-
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/220957) in GitLab 13.10.
-
-All projects can be cloned into Visual Studio Code. To do that:
-
-1. From the GitLab UI, go to the project's overview page.
-1. Click **Clone**.
-1. Select **VS Code**.
-1. Select a folder to clone the project into.
+## Repository history graph
-When VS Code has successfully cloned your project, it opens the folder.
+A repository graph displays a visual history of the repository network, including branches and merges.
+This graph can help you visualize the Git flow strategy used in the repository.
-## Download source code
+Go to your project's **Repository > Graph**.
-> - Support for directory download was [introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/24704) in GitLab 11.11.
-> - Support for [including Git LFS blobs](../../../topics/git/lfs#lfs-objects-in-project-archives) was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/15079) in GitLab 13.5.
-
-The source code stored in a repository can be downloaded from the UI.
-By clicking the download icon, a dropdown opens with links to download the following:
-
-![Download source code](img/download_source_code.png)
-
-- **Source code:**
- allows users to download the source code on branch they're currently
- viewing. Available extensions: `zip`, `tar`, `tar.gz`, and `tar.bz2`.
-- **Directory:**
- only shows up when viewing a sub-directory. This allows users to download
- the specific directory they're currently viewing. Also available in `zip`,
- `tar`, `tar.gz`, and `tar.bz2`.
-- **Artifacts:**
- allows users to download the artifacts of the latest CI build.
-
-## Redirects when changing repository paths
+![repository Git flow](img/repo_graph.png)
-When a repository path changes, it is essential to smoothly transition from the
-old location to the new one. GitLab provides two kinds of redirects: the web UI
-and Git push/pull redirects.
+## What happens when a repository path changes
-Depending on the situation, different things apply.
+When a repository path changes, GitLab handles the transition from the
+old location to the new one with a redirect.
-When [renaming a user](../../profile/index.md#change-your-username),
-[changing a group path](../../group/index.md#change-a-groups-path) or [renaming a repository](../settings/index.md#renaming-a-repository):
+When you [rename a user](../../profile/index.md#change-your-username),
+[change a group path](../../group/index.md#change-a-groups-path), or [rename a repository](../settings/index.md#renaming-a-repository):
-- Existing web URLs for the namespace and anything under it (such as projects) will
- redirect to the new URLs.
-- Starting with GitLab 10.3, existing Git remote URLs for projects under the
- namespace redirect to the new remote URL. Every time you push/pull to a
- repository that has changed its location, a warning message to update
- your remote is displayed instead of rejecting your action.
- This means that any automation scripts, or Git clients continue to
- work after a rename, making any transition a lot smoother.
+- URLs for the namespace and everything under it, like projects, are
+ redirected to the new URLs.
+- Git remote URLs for projects under the
+ namespace redirect to the new remote URL. When you push or pull to a
+ repository that has changed location, a warning message to update
+ your remote is displayed. Automation scripts or Git clients continue to
+ work after a rename.
- The redirects are available as long as the original path is not claimed by
- another group, user or project.
+ another group, user, or project.
## Troubleshooting
### Repository Languages: excessive CPU use
-GitLab uses a Ruby gem to scan all the files in the repository to determine what languages are used.
-[Sometimes this can use excessive CPU](https://gitlab.com/gitlab-org/gitaly/-/issues/1565) if
-a file type needs to be parsed by the gem to determine what sort of file it is.
+To determine which languages are in a repository's files, GitLab uses a Ruby gem.
+When the gem parses a file to determine which type it is, [the process can use excessive CPU](https://gitlab.com/gitlab-org/gitaly/-/issues/1565).
The gem contains a [heuristics configuration file](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.yml)
-that defines what file extensions need to be parsed.
+that defines which file extensions must be parsed.
-Excessive CPU use has been reported for files with the extension `.txt` and XML files with
-a file extension that is not defined by the gem.
+Files with the `.txt` extension and XML files with an extension not defined by the gem can take excessive CPU.
-The workaround is to specify what language to assign to specific file extensions.
+The workaround is to specify the language to assign to specific file extensions.
The same approach should also allow misidentified file types to be fixed.
-1. Identify which language to specify. The gem contains a [configuration file for known data types](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml).
- The entry for `Text` files, for example:
+1. Identify the language to specify. The gem contains a [configuration file for known data types](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml).
+ To add an entry for text files, for example:
```yaml
Text:
@@ -350,4 +277,17 @@ The same approach should also allow misidentified file types to be fixed.
*.txt linguist-language=Text
```
- `*.txt` files have an entry in the heuristics file. The example above prevents parsing of these files.
+ `*.txt` files have an entry in the heuristics file. This example prevents parsing of these files.
+
+## Related topics
+
+- To lock files and prevent change conflicts, use [file locking](../file_lock.md).
+- [Repository API](../../../api/repositories.md).
+- [Find files](file_finder.md) in a repository.
+- [Branches](branches/index.md).
+- [File templates](web_editor.md#template-dropdowns).
+- [Create a directory](web_editor.md#create-a-directory).
+- [Start a merge request](web_editor.md#tips).
+- [Find file history](git_history.md).
+- [Identify changes by line (Git blame)](git_blame.md).
+- [Use Jupyter notebooks with GitLab](jupyter_notebooks/index.md).
diff --git a/doc/user/project/settings/index.md b/doc/user/project/settings/index.md
index bb716b1103f..6c2acf260ff 100644
--- a/doc/user/project/settings/index.md
+++ b/doc/user/project/settings/index.md
@@ -273,7 +273,7 @@ To rename a repository:
Remember that this can have unintended side effects since everyone with the
old URL can't push or pull. Read more about what happens with the
-[redirects when renaming repositories](../repository/index.md#redirects-when-changing-repository-paths).
+[redirects when renaming repositories](../repository/index.md#what-happens-when-a-repository-path-changes).
#### Transferring an existing project into another namespace
@@ -297,7 +297,7 @@ To transfer a project:
Once done, you are redirected to the new project's namespace. At this point,
read what happens with the
-[redirects from the old project to the new one](../repository/index.md#redirects-when-changing-repository-paths).
+[redirects from the old project to the new one](../repository/index.md#what-happens-when-a-repository-path-changes).
NOTE:
GitLab administrators can use the administration interface to move any project to any
diff --git a/doc/user/project/working_with_projects.md b/doc/user/project/working_with_projects.md
index ddca0b64f81..b96e990c4e8 100644
--- a/doc/user/project/working_with_projects.md
+++ b/doc/user/project/working_with_projects.md
@@ -333,7 +333,7 @@ For public projects, and to members of internal and private projects
with [permissions to view the project's code](../permissions.md#project-members-permissions):
- The content of a
- [`README` or an index file](repository/#repository-readme-and-index-files)
+ [`README` or an index file](repository/index.md#readme-and-index-files)
is displayed (if any), followed by the list of directories in the
project's repository.
- If the project doesn't contain either of these files, the
diff --git a/doc/user/shortcuts.md b/doc/user/shortcuts.md
index 6673611267d..29e0f797260 100644
--- a/doc/user/shortcuts.md
+++ b/doc/user/shortcuts.md
@@ -126,7 +126,7 @@ These shortcuts are available when editing a file with the [Web IDE](project/web
### Repository graph
-These shortcuts are available when viewing the project [repository graph](project/repository/index.md#repository-graph)
+These shortcuts are available when viewing the project [repository graph](project/repository/index.md#repository-history-graph)
page (navigate to **Repository > Graph**):
| Keyboard shortcut | Description |
diff --git a/lib/gitlab/email/attachment_uploader.rb b/lib/gitlab/email/attachment_uploader.rb
index 70e281fd4a3..e213adbfcfd 100644
--- a/lib/gitlab/email/attachment_uploader.rb
+++ b/lib/gitlab/email/attachment_uploader.rb
@@ -40,7 +40,7 @@ module Gitlab
def filter_signature_attachments(message)
attachments = message.attachments
content_type = normalize_mime(message.content_type)
- protocol = normalize_mime(message.content_type_parameters[:protocol])
+ protocol = normalize_mime(message.content_type_parameters&.fetch(:protocol, nil))
if content_type == 'multipart/signed' && protocol
attachments.delete_if { |attachment| protocol == normalize_mime(attachment.content_type) }
diff --git a/lib/security/ci_configuration/base_build_action.rb b/lib/security/ci_configuration/base_build_action.rb
index b169d780cad..e7a1b4770b9 100644
--- a/lib/security/ci_configuration/base_build_action.rb
+++ b/lib/security/ci_configuration/base_build_action.rb
@@ -42,7 +42,7 @@ module Security
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
YAML
end
end
diff --git a/spec/fixtures/emails/no_content_type.eml b/spec/fixtures/emails/no_content_type.eml
new file mode 100644
index 00000000000..18232851bb9
--- /dev/null
+++ b/spec/fixtures/emails/no_content_type.eml
@@ -0,0 +1,18 @@
+Return-path: <frank@example.org>
+Envelope-to: gitlab+gitlab-instance-administrators-9a72b788-code-hello-world-php-2-issue-@qyber.black
+Delivery-date: Sun, 23 May 2021 10:28:57 +0100
+Received: from example.plus.com ([212.159.19.195] helo=nut.example.org)
+ by se.example.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
+ (Exim 4.93)
+ (envelope-from <frank@example.org>)
+ id 1lkkPp-009OFG-9z
+ for gitlab+gitlab-instance-administrators-9a72b788-code-hello-world-php-2-issue-@qyber.black; Sun, 23 May 2021 10:28:57 +0100
+Received: ***REMOVED***
+To: <gitlab+gitlab-instance-administrators-9a72b788-code-hello-world-php-2-issue-@qyber.black>
+X-Mailer: mail (GNU Mailutils 3.10)
+Message-Id: <E1lkkPn-00DuvG-Rf@set>
+From: Frank C Example <frank@example.org>
+Date: Sun, 23 May 2021 10:28:55 +0100
+Subject: Testing Service Desk E-Mail
+
+Test.
diff --git a/spec/lib/gitlab/email/attachment_uploader_spec.rb b/spec/lib/gitlab/email/attachment_uploader_spec.rb
index 6beadb6e1a5..4b4e671f001 100644
--- a/spec/lib/gitlab/email/attachment_uploader_spec.rb
+++ b/spec/lib/gitlab/email/attachment_uploader_spec.rb
@@ -46,5 +46,15 @@ RSpec.describe Gitlab::Email::AttachmentUploader do
expect(image_link[:url]).to include('gitlab_logo.png')
end
end
+
+ context 'with a message with no content type' do
+ let(:message_raw) { fixture_file("emails/no_content_type.eml") }
+
+ it 'uploads all attachments except the signature' do
+ links = described_class.new(message).execute(upload_parent: project, uploader_class: FileUploader)
+
+ expect(links).to eq([])
+ end
+ end
end
end
diff --git a/spec/lib/security/ci_configuration/sast_build_action_spec.rb b/spec/lib/security/ci_configuration/sast_build_action_spec.rb
index 6a1ea68fdd6..36517b02aa6 100644
--- a/spec/lib/security/ci_configuration/sast_build_action_spec.rb
+++ b/spec/lib/security/ci_configuration/sast_build_action_spec.rb
@@ -345,7 +345,7 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- test
sast:
@@ -364,7 +364,7 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- test
sast:
@@ -380,7 +380,7 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- test
- security
@@ -402,7 +402,7 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- build
- test
@@ -437,7 +437,7 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- test
- security
@@ -461,7 +461,7 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- test
- security
@@ -483,7 +483,7 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- test
- security
@@ -506,7 +506,7 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- test
- security
@@ -529,7 +529,7 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- test
- security
diff --git a/spec/lib/security/ci_configuration/secret_detection_build_action_spec.rb b/spec/lib/security/ci_configuration/secret_detection_build_action_spec.rb
index 31854fcf3a7..f6181c6ef7a 100644
--- a/spec/lib/security/ci_configuration/secret_detection_build_action_spec.rb
+++ b/spec/lib/security/ci_configuration/secret_detection_build_action_spec.rb
@@ -17,7 +17,7 @@ RSpec.describe Security::CiConfiguration::SecretDetectionBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- test
- security
@@ -63,7 +63,7 @@ RSpec.describe Security::CiConfiguration::SecretDetectionBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- test
variables:
@@ -112,7 +112,7 @@ RSpec.describe Security::CiConfiguration::SecretDetectionBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
include:
- template: Security/Secret-Detection.gitlab-ci.yml
CI_YML
@@ -132,7 +132,7 @@ RSpec.describe Security::CiConfiguration::SecretDetectionBuildAction do
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Note that environment variables can be set in several places
- # See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
+ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
include:
- template: Auto-DevOps.gitlab-ci.yml
CI_YML