debian-mirror-gitlab/doc/user/project/working_with_projects.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

609 lines
25 KiB
Markdown
Raw Normal View History

2021-03-11 19:13:27 +05:30
---
2021-11-18 22:05:49 +05:30
stage: Manage
group: Workspace
2022-11-25 23:54:43 +05:30
info: "To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments"
2021-03-11 19:13:27 +05:30
---
2022-01-26 12:08:38 +05:30
# Manage projects **(FREE)**
2021-03-11 19:13:27 +05:30
Most work in GitLab is done in a [project](../../user/project/index.md). Files and
code are saved in projects, and most features are in the scope of projects.
2022-01-26 12:08:38 +05:30
## View projects
2021-03-11 19:13:27 +05:30
2022-10-11 01:57:18 +05:30
To view projects, on the top bar, select **Main menu > Projects > View all projects**.
2021-03-11 19:13:27 +05:30
2022-11-25 23:54:43 +05:30
NOTE:
The **Explore projects** tab is visible to unauthenticated users unless the
[**Public** visibility level](../admin_area/settings/visibility_and_access_controls.md#restrict-visibility-levels)
is restricted. Then the tab is visible only to signed-in users.
2022-10-11 01:57:18 +05:30
### Who can view the Projects page
2022-01-26 12:08:38 +05:30
When you select a project, the project landing page shows the project contents.
For public projects, and members of internal and private projects
with [permissions to view the project's code](../permissions.md#project-members-permissions),
the project landing page shows:
- A [`README` or index file](repository/index.md#readme-and-index-files).
- A list of directories in the project's repository.
For users without permission to view the project's code, the landing page shows:
- The wiki homepage.
- The list of issues in the project.
### Access a project page with the project ID
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/53671) in GitLab 11.8.
To access a project from the GitLab UI using the project ID,
visit the `/projects/:id` URL in your browser or other tool accessing the project.
2021-09-30 23:02:18 +05:30
2021-12-11 22:18:48 +05:30
## Explore topics
2022-01-26 12:08:38 +05:30
To explore project topics:
2021-12-11 22:18:48 +05:30
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects > View all projects**.
1. Select the **Explore topics** tab.
1. To view projects associated with a topic, select a topic.
The **Explore topics** tab shows a list of topics sorted by the number of associated projects.
2021-12-11 22:18:48 +05:30
2022-07-23 23:45:48 +05:30
You can assign topics to a project on the [Project Settings page](settings/index.md#assign-topics-to-a-project).
2021-12-11 22:18:48 +05:30
If you're an instance administrator, you can administer all project topics from the
[Admin Area's Topics page](../admin_area/index.md#administering-topics).
2021-03-11 19:13:27 +05:30
## Create a project
To create a project in GitLab:
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects > View all projects**.
1. On the right of the page, select **New project**.
1. Select an option:
2022-01-26 12:08:38 +05:30
- Create a [blank project](#create-a-blank-project).
- Create a project from a:
- [built-in template](#create-a-project-from-a-built-in-template).
2022-07-23 23:45:48 +05:30
- [custom template](#create-a-project-from-a-custom-template).
2022-01-26 12:08:38 +05:30
- [HIPAA audit protocol template](#create-a-project-from-the-hipaa-audit-protocol-template).
- [Import a project](../../user/project/import/index.md)
2022-06-21 17:19:12 +05:30
from a different repository. Contact your GitLab administrator if this option is not available.
2022-01-26 12:08:38 +05:30
- [Connect an external repository to GitLab CI/CD](../../ci/ci_cd_for_external_repos/index.md).
2021-03-11 19:13:27 +05:30
2022-06-21 17:19:12 +05:30
- For a list of words that you cannot use as project names, see
[reserved project and group names](../../user/reserved_names.md).
- For a list of characters that you cannot use in project and group names, see
[limitations on project and group names](../../user/reserved_names.md#limitations-on-project-and-group-names).
2022-01-26 12:08:38 +05:30
## Create a blank project
To create a blank project:
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects > View all projects**.
1. On the right of the page, select **New project**.
2022-01-26 12:08:38 +05:30
1. Select **Create blank project**.
1. Enter the project details:
2022-05-07 20:08:51 +05:30
- In the **Project name** field, enter the name of your project. You cannot use special characters at
the start or end of a project name.
2022-01-26 12:08:38 +05:30
- In the **Project slug** field, enter the path to your project. The GitLab instance uses the
slug as the URL path to the project. To change the slug, first enter the project name,
then change the slug.
2022-11-25 23:54:43 +05:30
- In the **Project deployment target (optional)** field, select your project's deployment target.
2022-04-04 11:22:00 +05:30
This information helps GitLab better understand its users and their deployment requirements.
2022-06-21 17:19:12 +05:30
- To modify the project's [viewing and access rights](../public_access.md) for
users, change the **Visibility Level**.
2022-01-26 12:08:38 +05:30
- To create README file so that the Git repository is initialized, has a default branch, and
can be cloned, select **Initialize repository with a README**.
- To analyze the source code in the project for known security vulnerabilities,
2022-06-21 17:19:12 +05:30
select **Enable Static Application Security Testing (SAST)**.
2022-01-26 12:08:38 +05:30
1. Select **Create project**.
## Create a project from a built-in template
A built-in project template populates a new project with files to get you started.
Built-in templates are sourced from the following groups:
- [`project-templates`](https://gitlab.com/gitlab-org/project-templates)
- [`pages`](https://gitlab.com/pages)
2022-07-23 23:45:48 +05:30
Anyone can [contribute a built-in template](../../development/project_templates.md).
2022-01-26 12:08:38 +05:30
To create a project from a built-in template:
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects > View all projects**.
1. On the right of the page, select **New project**.
2022-01-26 12:08:38 +05:30
1. Select **Create from template**.
2021-06-08 01:23:25 +05:30
1. Select the **Built-in** tab.
2022-01-26 12:08:38 +05:30
1. From the list of templates:
- To view a preview of the template, select **Preview**.
- To use a template for the project, select **Use template**.
1. Enter the project details:
2022-05-07 20:08:51 +05:30
- In the **Project name** field, enter the name of your project. You cannot use special characters at
the start or end of a project name.
2022-01-26 12:08:38 +05:30
- In the **Project slug** field, enter the path to your project. The GitLab instance uses the
slug as the URL path to the project. To change the slug, first enter the project name,
then change the slug.
- In the **Project description (optional)** field, enter the description of your project's dashboard.
2022-06-21 17:19:12 +05:30
- To modify the project's [viewing and access rights](../public_access.md) for users,
change the **Visibility Level**.
2022-01-26 12:08:38 +05:30
1. Select **Create project**.
## Create a project from a custom template **(PREMIUM)**
2021-03-11 19:13:27 +05:30
2022-06-21 17:19:12 +05:30
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/6860) in GitLab 11.2.
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
Custom project templates are available at:
- The [instance-level](../../user/admin_area/custom_project_templates.md)
- The [group-level](../../user/group/custom_project_templates.md)
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects > View all projects**.
1. On the right of the page, select **New project**.
2022-01-26 12:08:38 +05:30
1. Select **Create from template**.
1. Select the **Instance** or **Group** tab.
1. From the list of templates:
- To view a preview of the template, select **Preview**.
- To use a template for the project, select **Use template**.
1. Enter the project details:
2022-05-07 20:08:51 +05:30
- In the **Project name** field, enter the name of your project. You cannot use special characters at
the start or end of a project name.
2022-01-26 12:08:38 +05:30
- In the **Project slug** field, enter the path to your project. The GitLab instance uses the
slug as the URL path to the project. To change the slug, first enter the project name,
then change the slug.
- The description of your project's dashboard in the **Project description (optional)** field.
2022-06-21 17:19:12 +05:30
- To modify the project's [viewing and access rights](../public_access.md) for users,
change the **Visibility Level**.
2022-01-26 12:08:38 +05:30
1. Select **Create project**.
## Create a project from the HIPAA Audit Protocol template **(ULTIMATE)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13756) in GitLab 12.10
The HIPAA Audit Protocol template contains issues for audit inquiries in the
HIPAA Audit Protocol published by the U.S Department of Health and Human Services.
To create a project from the HIPAA Audit Protocol template:
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects > View all projects**.
1. On the right of the page, select **New project**.
2022-01-26 12:08:38 +05:30
1. Select **Create from template**.
2021-06-08 01:23:25 +05:30
1. Select the **Built-in** tab.
2022-01-26 12:08:38 +05:30
1. Locate the **HIPAA Audit Protocol** template:
- To view a preview of the template, select **Preview**.
- To use the template for the project, select **Use template**.
1. Enter the project details:
2022-05-07 20:08:51 +05:30
- In the **Project name** field, enter the name of your project. You cannot use special characters at
the start or end of a project name.
2022-01-26 12:08:38 +05:30
- In the **Project slug** field, enter the path to your project. The GitLab instance uses the
slug as the URL path to the project. To change the slug, first enter the project name,
then change the slug.
- In the **Project description (optional)** field, enter the description of your project's dashboard.
2022-06-21 17:19:12 +05:30
- To modify the project's [viewing and access rights](../public_access.md) for users,
change the **Visibility Level**.
2022-01-26 12:08:38 +05:30
1. Select **Create project**.
2022-05-07 20:08:51 +05:30
## Create a new project with Git push
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/26388) in GitLab 10.5.
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
Use `git push` to push a local project repository to GitLab. After you push a repository,
GitLab creates your project in your chosen namespace.
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
You cannot use `git push` to create projects with project paths that:
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
- Have previously been used.
2022-08-13 15:12:31 +05:30
- Have been [renamed](settings/index.md#rename-a-repository).
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
Previously used project paths have a redirect. The redirect causes push attempts to redirect requests
to the renamed project location, instead of creating a new project. To create a new project for a previously
used or renamed project, use the [UI](#create-a-project) or the [Projects API](../../api/projects.md#create-project).
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
Prerequisites:
2021-03-11 19:13:27 +05:30
2022-06-21 17:19:12 +05:30
- To push with SSH, you must have [an SSH key](../ssh.md) that is
[added to your GitLab account](../ssh.md#add-an-ssh-key-to-your-gitlab-account).
2022-01-26 12:08:38 +05:30
- You must have permission to add new projects to a namespace. To check if you have permission:
2021-03-11 19:13:27 +05:30
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Groups** and find your group.
2022-01-26 12:08:38 +05:30
1. Confirm that **New project** is visible in the upper right
corner. Contact your GitLab
administrator if you require permission.
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
To push your repository and create a project:
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
1. Push with SSH or HTTPS:
- To push with SSH:
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
```shell
git push --set-upstream git@gitlab.example.com:namespace/myproject.git master
```
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
- To push with HTTPS:
2021-10-27 15:23:28 +05:30
2022-01-26 12:08:38 +05:30
```shell
git push --set-upstream https://gitlab.example.com/namespace/myproject.git master
```
2021-10-27 15:23:28 +05:30
2022-01-26 12:08:38 +05:30
- For `gitlab.example.com`, use the domain name of the machine that hosts your Git repository.
2022-08-27 11:52:29 +05:30
- For `namespace`, use the name of your [namespace](../namespace/index.md).
2022-01-26 12:08:38 +05:30
- For `myproject`, use the name of your project.
- Optional. To export existing repository tags, append the `--tags` flag to your `git push` command.
1. Optional. To configure the remote:
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
```shell
git remote add origin https://gitlab.example.com/namespace/myproject.git
```
2021-11-18 22:05:49 +05:30
2022-01-26 12:08:38 +05:30
When the push completes, GitLab displays the message:
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
```shell
remote: The private project namespace/myproject was created.
```
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
To view your new project, go to `https://gitlab.example.com/namespace/myproject`.
Your project's visibility is set to **Private** by default. To change project visibility, adjust your
2022-06-21 17:19:12 +05:30
[project's settings](../public_access.md#change-project-visibility).
2021-03-11 19:13:27 +05:30
## Star a project
2022-01-26 12:08:38 +05:30
You can add a star to projects you use frequently to make them easier to find.
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
To add a star to a project:
2021-03-11 19:13:27 +05:30
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects** and find your project.
2022-01-26 12:08:38 +05:30
1. In the upper right corner of the page, select **Star**.
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
## View starred projects
2021-03-11 19:13:27 +05:30
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects > View all projects**.
1. Select the **Starred projects** tab.
2021-03-11 19:13:27 +05:30
1. GitLab displays information about your starred projects, including:
2022-01-26 12:08:38 +05:30
- Project description, including name, description, and icon.
- Number of times this project has been starred.
- Number of times this project has been forked.
- Number of open merge requests.
- Number of open issues.
2021-03-11 19:13:27 +05:30
2022-07-16 23:28:13 +05:30
## View personal projects
Personal projects are projects created under your personal namespace.
For example, if you create an account with the username `alex`, and create a project
called `my-project` under your username, the project is created at `https://gitlab.example.com/alex/my-project`.
To view your personal projects:
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects > View all projects**.
1. In the **Your projects** tab, select **Personal**.
2022-07-16 23:28:13 +05:30
2021-03-11 19:13:27 +05:30
## Delete a project
2022-01-26 12:08:38 +05:30
After you delete a project, projects in personal namespaces are deleted immediately. To delay deletion of projects in a group
2022-08-27 11:52:29 +05:30
you can [enable delayed project removal](../group/manage.md#enable-delayed-project-deletion).
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
To delete a project:
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects** and find your project.
2022-01-26 12:08:38 +05:30
1. Select **Settings > General**.
2021-03-11 19:13:27 +05:30
1. Expand the **Advanced** section.
1. Scroll down to the **Delete project** section.
2022-05-07 20:08:51 +05:30
1. Select **Delete project**.
2022-01-26 12:08:38 +05:30
1. Confirm this action by completing the field.
2021-03-11 19:13:27 +05:30
2022-05-07 20:08:51 +05:30
## View projects pending deletion **(PREMIUM)**
2022-04-04 11:22:00 +05:30
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/37014) in GitLab 13.3 for Administrators.
> - [Tab renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/347468) from **Deleted projects** in GitLab 14.6.
> - [Available to all users](https://gitlab.com/gitlab-org/gitlab/-/issues/346976) in GitLab 14.8 [with a flag](../../administration/feature_flags.md) named `project_owners_list_project_pending_deletion`. Enabled by default.
2022-05-07 20:08:51 +05:30
> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/351556) in GitLab 14.9. [Feature flag `project_owners_list_project_pending_deletion`](https://gitlab.com/gitlab-org/gitlab/-/issues/351556) removed.
2022-04-04 11:22:00 +05:30
2022-08-27 11:52:29 +05:30
When delayed project deletion is [enabled for a group](../group/manage.md#enable-delayed-project-deletion),
2022-06-21 17:19:12 +05:30
projects within that group are not deleted immediately, but only after a delay.
2022-05-07 20:08:51 +05:30
To view a list of all projects that are pending deletion:
2022-04-04 11:22:00 +05:30
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects > View all projects**.
2022-05-07 20:08:51 +05:30
1. Based on your GitLab version:
- GitLab 14.6 and later: select the **Pending deletion** tab.
- GitLab 14.5 and earlier: select the **Deleted projects** tab.
2022-04-04 11:22:00 +05:30
2022-05-07 20:08:51 +05:30
Each project in the list shows:
2022-04-04 11:22:00 +05:30
- The time the project was marked for deletion.
- The time the project is scheduled for final deletion.
- A **Restore** link to stop the project being eventually deleted.
2022-01-26 12:08:38 +05:30
## View project activity
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
To view the activity of a project:
2021-03-11 19:13:27 +05:30
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects** and find your project..
2022-01-26 12:08:38 +05:30
1. On the left sidebar, select **Project information > Activity**.
1. Select a tab to view the type of project activity.
2021-03-11 19:13:27 +05:30
2022-07-23 23:45:48 +05:30
## Search in projects
You can search through your projects.
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu**.
2022-07-23 23:45:48 +05:30
1. In **Search your projects**, type the project name.
GitLab filters as you type.
You can also look for the projects you [starred](#star-a-project) (**Starred projects**).
You can **Explore** all public and internal projects available in GitLab.com, from which you can filter by visibility,
through **Trending**, best rated with **Most stars**, or **All** of them.
You can sort projects by:
- Name
- Created date
- Updated date
- Owner
You can also choose to hide or show archived projects.
2023-03-04 22:38:38 +05:30
## Change the visibility of individual features in a project
You can change the visibility of individual features in a project.
Prerequisite:
- You must have the Owner role for the project.
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > General**.
1. Expand **Visibility, project features, permissions**.
1. Use the toggle by each feature you want to turn on or off, or change access for.
1. Select **Save changes**.
2022-01-26 12:08:38 +05:30
## Leave a project
2021-03-11 19:13:27 +05:30
2023-03-04 22:38:38 +05:30
When you leave a project:
- You are no longer a project member and cannot contribute.
- All the issues and merge requests that were assigned
to you are unassigned.
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
To leave a project:
2021-09-04 01:27:46 +05:30
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Projects** and find your project.
2022-01-26 12:08:38 +05:30
1. Select **Leave project**. The **Leave project** option only displays
on the project dashboard when a project is part of a group under a
2022-08-27 11:52:29 +05:30
[group namespace](../namespace/index.md).
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
## Use a project as a Go package
Prerequisites:
- Contact your administrator to enable the [GitLab Go Proxy](../packages/go_proxy/index.md).
2022-03-02 08:16:31 +05:30
- To use a private project in a subgroup as a Go package, you must [authenticate Go requests](#authenticate-go-requests-to-private-projects). Go requests that are not authenticated cause
2022-01-26 12:08:38 +05:30
`go get` to fail. You don't need to authenticate Go requests for projects that are not in subgroups.
To use a project as a Go package, use the `go get` and `godoc.org` discovery requests. You can use the meta tags:
- [`go-import`](https://pkg.go.dev/cmd/go#hdr-Remote_import_paths)
- [`go-source`](https://github.com/golang/gddo/wiki/Source-Code-Links)
### Authenticate Go requests to private projects
Prerequisites:
- Your GitLab instance must be accessible with HTTPS.
2022-08-13 15:12:31 +05:30
- You must have a [personal access token](../profile/personal_access_tokens.md) with `read_api` scope.
2022-01-26 12:08:38 +05:30
To authenticate Go requests, create a [`.netrc`](https://everything.curl.dev/usingcurl/netrc) file with the following information:
2021-03-11 19:13:27 +05:30
```plaintext
machine gitlab.example.com
login <gitlab_user_name>
password <personal_access_token>
```
On Windows, Go reads `~/_netrc` instead of `~/.netrc`.
2022-01-26 12:08:38 +05:30
The `go` command does not transmit credentials over insecure connections. It authenticates
HTTPS requests made by Go, but does not authenticate requests made
through Git.
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
### Authenticate Git requests
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
If Go cannot fetch a module from a proxy, it uses Git. Git uses a `.netrc` file to authenticate requests, but you can
configure other authentication methods.
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
Configure Git to either:
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
- Embed credentials in the request URL:
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
```shell
git config --global url."https://${user}:${personal_access_token}@gitlab.example.com".insteadOf "https://gitlab.example.com"
```
- Use SSH instead of HTTPS:
```shell
2022-08-13 15:12:31 +05:30
git config --global url."git@gitlab.example.com:".insteadOf "https://gitlab.example.com/"
2022-01-26 12:08:38 +05:30
```
### Disable Go module fetching for private projects
To [fetch modules or packages](../../development/go_guide/dependencies.md#fetching), Go uses
the [environment variables](../../development/go_guide/dependencies.md#proxies):
2021-11-11 11:23:49 +05:30
2022-01-26 12:08:38 +05:30
- `GOPRIVATE`
- `GONOPROXY`
- `GONOSUMDB`
2021-11-11 11:23:49 +05:30
2022-01-26 12:08:38 +05:30
To disable fetching:
2021-11-11 11:23:49 +05:30
2022-01-26 12:08:38 +05:30
1. Disable `GOPRIVATE`:
- To disable queries for one project, disable `GOPRIVATE=gitlab.example.com/my/private/project`.
- To disable queries for all projects on GitLab.com, disable `GOPRIVATE=gitlab.example.com`.
1. Disable proxy queries in `GONOPROXY`.
1. Disable checksum queries in `GONOSUMDB`.
2021-11-11 11:23:49 +05:30
2022-01-26 12:08:38 +05:30
- If the module name or its prefix is in `GOPRIVATE` or `GONOPROXY`, Go does not query module
2022-06-21 17:19:12 +05:30
proxies.
2022-01-26 12:08:38 +05:30
- If the module name or its prefix is in `GONOPRIVATE` or `GONOSUMDB`, Go does not query
2022-06-21 17:19:12 +05:30
Checksum databases.
2021-11-11 11:23:49 +05:30
2022-01-26 12:08:38 +05:30
### Fetch Go modules from Geo secondary sites
Use [Geo](../../administration/geo/index.md) to access Git repositories that contain Go modules
on secondary Geo servers.
You can use SSH or HTTP to access the Geo secondary server.
#### Use SSH to access the Geo secondary server
To access the Geo secondary server with SSH:
2021-11-11 11:23:49 +05:30
1. Reconfigure Git on the client to send traffic for the primary to the secondary:
2022-01-26 12:08:38 +05:30
```shell
2021-11-11 11:23:49 +05:30
git config --global url."git@gitlab-secondary.example.com".insteadOf "https://gitlab.example.com"
git config --global url."git@gitlab-secondary.example.com".insteadOf "http://gitlab.example.com"
```
2022-01-26 12:08:38 +05:30
- For `gitlab.example.com`, use the primary site domain name.
- For `gitlab-secondary.example.com`, use the secondary site domain name.
1. Ensure the client is set up for SSH access to GitLab repositories. You can test this on the primary,
and GitLab replicates the public key to the secondary.
The `go get` request generates HTTP traffic to the primary Geo server. When the module
download starts, the `insteadOf` configuration sends the traffic to the secondary Geo server.
2021-11-11 11:23:49 +05:30
#### Use HTTP to access the Geo secondary
2022-01-26 12:08:38 +05:30
You must use persistent access tokens that replicate to the secondary server. You cannot use
CI/CD job tokens to fetch Go modules with HTTP.
2021-11-11 11:23:49 +05:30
2022-01-26 12:08:38 +05:30
To access the Geo secondary server with HTTP:
2021-11-11 11:23:49 +05:30
2022-01-26 12:08:38 +05:30
1. Add a Git `insteadOf` redirect on the client:
2021-11-11 11:23:49 +05:30
2022-01-26 12:08:38 +05:30
```shell
2021-11-11 11:23:49 +05:30
git config --global url."https://gitlab-secondary.example.com".insteadOf "https://gitlab.example.com"
```
2022-01-26 12:08:38 +05:30
- For `gitlab.example.com`, use the primary site domain name.
- For `gitlab-secondary.example.com`, use the secondary site domain name.
2021-11-11 11:23:49 +05:30
1. Generate a [personal access token](../profile/personal_access_tokens.md) and
2022-01-26 12:08:38 +05:30
add the credentials in the client's `~/.netrc` file:
2021-11-11 11:23:49 +05:30
2022-01-26 12:08:38 +05:30
```shell
2021-11-11 11:23:49 +05:30
machine gitlab.example.com login USERNAME password TOKEN
machine gitlab-secondary.example.com login USERNAME password TOKEN
```
2022-01-26 12:08:38 +05:30
The `go get` request generates HTTP traffic to the primary Geo server. When the module
download starts, the `insteadOf` configuration sends the traffic to the secondary Geo server.
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
## Related topics
2021-03-11 19:13:27 +05:30
2022-01-26 12:08:38 +05:30
- [Import a project](../../user/project/import/index.md).
- [Connect an external repository to GitLab CI/CD](../../ci/ci_cd_for_external_repos/index.md).
- [Fork a project](repository/forking_workflow.md#creating-a-fork).
2022-07-23 23:45:48 +05:30
- [Adjust project visibility and access levels](settings/index.md#configure-project-visibility-features-and-permissions).
2022-05-07 20:08:51 +05:30
- [Limitations on project and group names](../../user/reserved_names.md#limitations-on-project-and-group-names)
2022-11-25 23:54:43 +05:30
## Troubleshooting
When working with projects, you might encounter the following issues, or require alternate methods to complete specific tasks.
### Find projects using an SQL query
While in [a Rails console session](../../administration/operations/rails_console.md#starting-a-rails-console-session), you can find and store an array of projects based on a SQL query:
```ruby
# Finds projects that end with '%ject'
projects = Project.find_by_sql("SELECT * FROM projects WHERE name LIKE '%ject'")
=> [#<Project id:12 root/my-first-project>>, #<Project id:13 root/my-second-project>>]
```
### Clear a project's or repository's cache
If a project or repository has been updated but the state is not reflected in the UI, you may need to clear the project's or repository's cache.
You can do so through [a Rails console session](../../administration/operations/rails_console.md#starting-a-rails-console-session) and one of the following:
WARNING:
2023-01-13 00:05:48 +05:30
Commands that change data can cause damage if not run correctly or under the right conditions. Always run commands in a test environment first and have a backup instance ready to restore.
2022-11-25 23:54:43 +05:30
```ruby
## Clear project cache
ProjectCacheWorker.perform_async(project.id)
## Clear repository .exists? cache
project.repository.expire_exists_cache
```
### Find projects that are pending deletion
If you need to find all projects marked for deletion but that have not yet been deleted,
[start a Rails console session](../../administration/operations/rails_console.md#starting-a-rails-console-session) and run the following:
```ruby
projects = Project.where(pending_delete: true)
projects.each do |p|
puts "Project ID: #{p.id}"
puts "Project name: #{p.name}"
puts "Repository path: #{p.repository.full_path}"
end
```
### Delete a project using console
If a project cannot be deleted, you can attempt to delete it through [Rails console](../../administration/operations/rails_console.md#starting-a-rails-console-session).
WARNING:
2023-01-13 00:05:48 +05:30
Commands that change data can cause damage if not run correctly or under the right conditions. Always run commands in a test environment first and have a backup instance ready to restore.
2022-11-25 23:54:43 +05:30
```ruby
project = Project.find_by_full_path('<project_path>')
user = User.find_by_username('<username>')
ProjectDestroyWorker.new.perform(project.id, user.id, {})
```
If this fails, display why it doesn't work with:
```ruby
project = Project.find_by_full_path('<project_path>')
project.delete_error
```
### Toggle a feature for all projects within a group
While toggling a feature in a project can be done through the [projects API](../../api/projects.md),
you may need to do this for a large number of projects.
To toggle a specific feature, you can [start a Rails console session](../../administration/operations/rails_console.md#starting-a-rails-console-session)
and run the following function:
WARNING:
2023-01-13 00:05:48 +05:30
Commands that change data can cause damage if not run correctly or under the right conditions. Always run commands in a test environment first and have a backup instance ready to restore.
2022-11-25 23:54:43 +05:30
```ruby
projects = Group.find_by_name('_group_name').projects
projects.each do |p|
## replace <feature-name> with the appropriate feature name in all instances
state = p.<feature-name>
if state != 0
puts "#{p.name} has <feature-name> already enabled. Skipping..."
else
puts "#{p.name} didn't have <feature-name> enabled. Enabling..."
p.project_feature.update!(<feature-name>: ProjectFeature::PRIVATE)
end
end
```
To find features that can be toggled, run `pp p.project_feature`.
Available permission levels are listed in
[concerns/featurable.rb](https://gitlab.com/gitlab-org/gitlab/blob/master/app/models/concerns/featurable.rb).