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:
Diffstat (limited to 'doc/raketasks/import.md')
-rw-r--r--doc/raketasks/import.md171
1 files changed, 3 insertions, 168 deletions
diff --git a/doc/raketasks/import.md b/doc/raketasks/import.md
index 5ab62215570..d3b734eba12 100644
--- a/doc/raketasks/import.md
+++ b/doc/raketasks/import.md
@@ -2,175 +2,10 @@
stage: Systems
group: Distribution
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
+remove_date: '2023-08-22'
---
-# Import bare repositories (deprecated) **(FREE SELF)**
+# Import bare repositories (removed) **(FREE SELF)**
-WARNING:
The Rake task for importing bare repositories was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108507)
-in GitLab 15.8 and will be removed in GitLab 16.0.
-
-Alternatives to using the `gitlab:import:repos` Rake task include:
-
-- Migrating projects using either [an export file](../user/project/settings/import_export.md) or [direct transfer](../user/group/import/index.md#migrate-groups-by-direct-transfer-recommended) migrate repositories as well.
-- Importing a [repository by URL](../user/project/import/repo_by_url.md).
-- Importing a [repositories from a non-GitLab source](../user/project/import/index.md).
-
-Rake tasks are available to import bare repositories into a GitLab instance.
-When migrating from an existing GitLab instance, and to preserve ownership by users and their namespaces,
-migrate projects using either:
-
-- [Direct transfer](../user/group/import/index.md#migrate-groups-by-direct-transfer-recommended).
-- [An export file](../user/project/settings/import_export.md).
-
-When you import a repository:
-
-- The owner of the project is the first administrator.
-- The groups are created as needed, including subgroups.
-- The owner of the group is the first administrator.
-- Existing projects are skipped.
-- Projects in hashed storage may be skipped. For more information, see
- [Importing bare repositories from hashed storage](#importing-bare-repositories-from-hashed-storage).
-- The existing Git repositories are moved from disk (removed from the original path).
-- You must manually [push Git LFS objects](#push-git-lfs-objects).
-
-To import bare repositories into a GitLab instance:
-
-1. Create a new folder to import your Git repositories from.
- You can also import projects into a (sub)group's namespace,
- instead of the administrator's namespace. To do so, create subfolders and
- give ownership and read/write/execute permissions of those subfolders to the
- `git` user and its group:
-
- ```shell
- sudo -u git mkdir -p /var/opt/gitlab/git-data/repository-import-$(date "+%Y-%m-%d")/<optional_groupname>/<optional_subgroup>
- ```
-
-1. Copy your bare repositories inside this newly created folder. Note:
-
- - Any `.git` repositories found on any of the subfolders are imported as projects.
- - Groups are created as needed, these could be nested folders.
-
- For example, if we copy the repositories to `/var/opt/gitlab/git-data/repository-import-2020-08-22`,
- and repository `A` must be under the groups `G1` and `G2`, it must be created under those folders:
- `/var/opt/gitlab/git-data/repository-import-2020-08-22/G1/G2/A.git`.
-
- ```shell
- sudo cp -r /old/git/foo.git /var/opt/gitlab/git-data/repository-import-$(date "+%Y-%m-%d")/<optional_groupname>/<optional_subgroup>
-
- # Do this once when you are done copying git repositories
- sudo chown -R git:git /var/opt/gitlab/git-data/repository-import-$(date "+%Y-%m-%d")
- ```
-
- `foo.git` must be owned by the `git` user and `git` users group.
-
- If you are using an installation from source, replace `/var/opt/gitlab/` with `/home/git`.
-
-1. Run the following command depending on your type of installation:
-
- - Omnibus Installation
-
- ```shell
- sudo gitlab-rake gitlab:import:repos["/var/opt/gitlab/git-data/repository-import-$(date "+%Y-%m-%d")"]
- ```
-
- - Installation from source. Before running this command you must change to the directory where
- your GitLab installation is located:
-
- ```shell
- cd /home/git/gitlab
- sudo -u git -H bundle exec rake gitlab:import:repos["/var/opt/gitlab/git-data/repository-import-$(date "+%Y-%m-%d")"] RAILS_ENV=production
- ```
-
-## Example output
-
-```plaintext
-Processing /var/opt/gitlab/git-data/repository-import-1/a/b/c/blah.git
- * Using namespace: a/b/c
- * Created blah (a/b/c/blah)
- * Skipping repo /var/opt/gitlab/git-data/repository-import-1/a/b/c/blah.wiki.git
-Processing /var/opt/gitlab/git-data/repository-import-1/abcd.git
- * Created abcd (abcd.git)
-Processing /var/opt/gitlab/git-data/repository-import-1/group/xyz.git
- * Using namespace: group (2)
- * Created xyz (group/xyz.git)
- * Skipping repo /var/opt/gitlab/git-data/repository-import-1/@shared/a/b/abcd.git
-[...]
-```
-
-## Importing bare repositories from hashed storage
-
-Projects in legacy storage have a directory structure that mirrors their full
-project path in GitLab, including their namespace structure. This information is
-leveraged by the bare repository importer to import projects into their proper
-locations. Each project and its parent namespaces are meaningfully named.
-
-However, the directory structure of projects in hashed storage do not contain
-this information. This is beneficial for a variety of reasons, especially
-improved performance and data integrity. See
-[Repository Storage Types](../administration/repository_storage_types.md) for
-more details.
-
-The repositories that are importable depends on the version of GitLab.
-
-### GitLab 10.3 or earlier
-
-Importing bare repositories from hashed storage is unsupported.
-
-### GitLab 10.4 and later
-
-To support importing bare repositories from hashed storage, GitLab 10.4 and
-later stores the full project path with each repository, in a special section of
-the Git repository's configuration file. This section is formatted as follows:
-
-```ini
-[gitlab]
- fullpath = gitlab-org/gitlab
-```
-
-However, existing repositories were not migrated to include this path.
-
-Bare repositories are importable if the following events occurred to the
-repository in GitLab 10.4 and later:
-
-- Created
-- Migrated to hashed storage
-- Renamed
-- Transferred to another namespace
-- Ancestor renamed
-- Ancestor transferred to another namespace
-
-Bare repositories are **not** importable by GitLab 10.4 to GitLab 11.6, if all the following are true about the repository:
-
-- It was created in GitLab 10.3 or earlier.
-- It was not renamed, transferred, or migrated to [hashed storage](../administration/repository_storage_types.md#hashed-storage) in GitLab 10.4 to GitLab 11.6.
-- Its ancestor namespaces were not renamed or transferred in GitLab 10.4 to GitLab 11.6.
-
-[In GitLab 11.6](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41776) and later, all
-bare repositories are importable.
-
-To manually migrate repositories yourself (for GitLab 10.4 to GitLab 11.6), you can use the
-[Rails console](../administration/operations/rails_console.md#starting-a-rails-console-session)
-to do so. In a Rails console session, run the following to migrate a project:
-
-```ruby
-project = Project.find_by_full_path('gitlab-org/gitlab')
-project.set_full_path
-```
-
-In a Rails console session, run the following to migrate all of a namespace's
-projects (this may take a while if there are thousands of projects in a namespace):
-
-```ruby
-namespace = Namespace.find_by_full_path('gitlab-org')
-namespace.send(:write_projects_repository_config)
-```
-
-## Push Git LFS objects
-
-The import task doesn't import Git LFS objects. You must manually push the LFS objects to the newly
-created GitLab repository using the following command:
-
-```shell
-git lfs push --all
-```
+in GitLab 15.8 and [removed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/118676) in GitLab 16.0.