From 1f126e43f5bef9750a1da8701d8320d2763c7b54 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 25 May 2021 00:10:54 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- doc/api/commits.md | 2 +- doc/user/group/index.md | 4 +- doc/user/profile/index.md | 2 +- .../repository/img/download_source_code.png | Bin 19681 -> 0 bytes .../img/file_ext_icons_repo_v12_10.png | Bin 73624 -> 0 bytes doc/user/project/repository/index.md | 418 ++++++++---------- doc/user/project/settings/index.md | 4 +- doc/user/project/working_with_projects.md | 2 +- doc/user/shortcuts.md | 2 +- lib/gitlab/email/attachment_uploader.rb | 2 +- .../ci_configuration/base_build_action.rb | 2 +- spec/fixtures/emails/no_content_type.eml | 18 + .../gitlab/email/attachment_uploader_spec.rb | 10 + .../sast_build_action_spec.rb | 18 +- .../secret_detection_build_action_spec.rb | 8 +- 15 files changed, 230 insertions(+), 262 deletions(-) delete mode 100644 doc/user/project/repository/img/download_source_code.png delete mode 100644 doc/user/project/repository/img/file_ext_icons_repo_v12_10.png create mode 100644 spec/fixtures/emails/no_content_type.eml 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 8d62d19b29171e7fd764939749a1df58b5a5600b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19681 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 MR_68q-P9}ozds3GlmGw# 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 04a8f38871bdaa8f2a6c441de159ea87119d1484..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73624 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 Q>C;Ck$fyDvq|Czp3#`7?HUIzs 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. -To get started with the command line, please read through the -[command line basics documentation](../../../gitlab-basics/command-line-commands.md). +Projects that contain a `.xcodeproj` or `.xcworkspace` directory can be cloned +into Xcode on macOS. -### Find files +1. From the GitLab UI, go to the project's overview page. +1. Select **Clone**. +1. Select **Xcode**. -Use the GitLab [file finder](file_finder.md) to search for files in a repository. +The project is cloned onto your computer and you are +prompted to open XCode. -### Supported markup languages and extensions +### Clone and open in Visual Studio Code -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. +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/220957) in GitLab 13.10. -Just pick the right extension for your files and GitLab renders them -according to the markup language. +All projects can be cloned into Visual Studio Code. + +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 +### 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. +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). -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`. - -### Jupyter Notebook files - -[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). +## Repository contributor graph -## Project and repository size +All code contributors are displayed under your project's **Repository > Contributors**. -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. - -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 +## Repository history 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: +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. + +Go to your project's **Repository > Graph**. ![repository Git flow](img/repo_graph.png) -Find it under your project's **Repository > Graph**. +## What happens when a repository path changes -## Repository languages +When a repository path changes, GitLab handles the transition from the +old location to the new one with a redirect. -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. +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): -![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. - -When VS Code has successfully cloned your project, it opens the folder. - -## Download source code - -> - 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 - -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. - -Depending on the situation, different things apply. - -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): - -- 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: +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 ) + 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: +X-Mailer: mail (GNU Mailutils 3.10) +Message-Id: +From: Frank C Example +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