doc-locale/fr-fr/api/import.md
{{< details >}}
{{< /details >}}
{{< history >}}
user_mapping_to_personal_namespace_owner. Désactivé par défaut.user_mapping_to_personal_namespace_owner a été supprimé.{{< /history >}}
[!flag] La disponibilité de cette fonctionnalité est contrôlée par un feature flag. Pour plus d'informations, consultez l'historique.
Utilisez cette API pour importer des dépôts depuis des sources externes.
[!note] Le mappage des contributions des utilisateurs n'est pas pris en charge lorsque vous importez des projets vers un espace de nommage personnel. Lorsque vous importez vers un espace de nommage personnel, toutes les contributions sont attribuées au propriétaire de l'espace de nommage personnel et ne peuvent pas être réattribuées.
{{< history >}}
collaborators_import dans optional_stages a été introduite dans GitLab 16.0.github_import_extended_events a été introduit dans GitLab 16.8. Désactivé par défaut. Ce flag améliore les performances des importations mais désactive l'étape facultative single_endpoint_issue_events_import.github_import_extended_events a été activé sur GitLab.com et GitLab Self-Managed dans GitLab 16.9.github_import_extended_events a été supprimé.{{< /history >}}
Importe un dépôt depuis GitHub vers GitLab.
Prérequis :
target_namespace doit exister.POST /import/github
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
personal_access_token | string | Oui | Jeton d'accès personnel GitHub. |
repo_id | integer | Oui | ID de dépôt GitHub. |
target_namespace | string | Oui | Espace de nommage dans lequel importer le dépôt. Prend en charge les sous-groupes comme /namespace/subgroup. Ne doit pas être vide. |
github_hostname | string | Non | Nom d'hôte GitHub Enterprise personnalisé. Ne pas définir pour GitHub.com. De GitLab 16.5 à GitLab 17.1, vous devez inclure le chemin /api/v3. |
new_name | string | Non | Nom du nouveau projet. Également utilisé comme nouveau chemin, il ne doit donc pas commencer ou se terminer par un caractère spécial et ne doit pas contenir de caractères spéciaux consécutifs. |
optional_stages | objet | Non | Éléments supplémentaires à importer. |
pagination_limit | integer | Non | Nombre d'éléments récupérés par requête API REST vers GitHub. La valeur par défaut est 100 éléments par page. Pour les importations de projets à partir de grands dépôts, un nombre inférieur peut réduire le risque que les points de terminaison de l'API GitHub retournent des erreurs 500 ou 502. Cependant, une taille de page plus petite augmente les temps de migration. |
timeout_strategy | string | Non | Stratégie de gestion des délais d'expiration d'importation. Les valeurs valides sont optimistic (continuer vers l'étape suivante de l'importation) ou pessimistic (échouer immédiatement). La valeur par défaut est pessimistic. Introduite dans GitLab 16.5. |
curl --request POST \
--url "https://gitlab.example.com/api/v4/import/github" \
--header "content-type: application/json" \
--header "Authorization: Bearer <your_access_token>" \
--data '{
"personal_access_token": "aBc123abC12aBc123abC12abC123+_A/c123",
"repo_id": "12345",
"target_namespace": "group/subgroup",
"new_name": "NEW-NAME",
"github_hostname": "https://github.example.com",
"optional_stages": {
"single_endpoint_notes_import": true,
"attachments_import": true,
"collaborators_import": true
}
}'
Les clés suivantes sont disponibles pour optional_stages :
attachments_import, pour l'importation des pièces jointes Markdown.collaborators_import, pour l'importation des collaborateurs directs du dépôt qui ne sont pas des collaborateurs externes.single_endpoint_issue_events_import, pour l'importation des événements de tickets et de pull requests. Cette étape facultative a été supprimée dans GitLab 16.9.single_endpoint_notes_import, pour une importation de commentaires alternative et plus complète.Pour plus d'informations, voir sélectionner des éléments supplémentaires à importer.
Exemple de réponse :
{
"id": 27,
"name": "my-repo",
"full_path": "/root/my-repo",
"full_name": "Administrator / my-repo",
"refs_url": "/root/my-repo/refs",
"import_source": "my-github/repo",
"import_status": "scheduled",
"human_import_status_name": "scheduled",
"provider_link": "/my-github/repo",
"relation_type": null,
"import_warning": null
}
Lorsque vous importez un projet de GitHub vers GitLab via l'API à l'aide d'un jeton d'accès de groupe :
path ou target_namespace n'existe pas, l'importation du projet échoue.Annule une importation de projet GitHub en cours.
POST /import/github/cancel
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
project_id | integer | Oui | ID de projet GitLab. |
curl --request POST \
--url "https://gitlab.example.com/api/v4/import/github/cancel" \
--header "content-type: application/json" \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data '{
"project_id": 12345
}'
Exemple de réponse :
{
"id": 160,
"name": "my-repo",
"full_path": "/root/my-repo",
"full_name": "Administrator / my-repo",
"import_source": "source/source-repo",
"import_status": "canceled",
"human_import_status_name": "canceled",
"provider_link": "/source/source-repo"
}
Renvoie les codes d'état suivants :
200 OK : l'importation du projet est en cours d'annulation.400 Bad Request : l'importation du projet ne peut pas être annulée.404 Not Found : le projet associé à project_id n'existe pas.Importe des gists GitHub personnels dans des snippets GitLab. Vous pouvez importer des gists comportant jusqu'à 10 fichiers. Les gists GitHub comportant plus de 10 fichiers sont ignorés. Vous devez migrer manuellement ces gists GitHub.
Si des gists n'ont pas pu être importés, un e-mail est envoyé avec la liste des gists qui n'ont pas été importés.
POST /import/github/gists
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
personal_access_token | string | Oui | Jeton d'accès personnel GitHub. |
curl --request POST \
--url "https://gitlab.example.com/api/v4/import/github/gists" \
--header "content-type: application/json" \
--header "PRIVATE-TOKEN: <your_gitlab_access_token>" \
--data '{
"personal_access_token": "<your_github_personal_access_token>"
}'
Renvoie les codes d'état suivants :
202 Accepted : l'importation des gists est en cours de démarrage.401 Unauthorized : le jeton d'accès personnel GitHub de l'utilisateur est invalide.422 Unprocessable Entity : l'importation des gists est déjà en cours.429 Too Many Requests : l'utilisateur a dépassé la limite de débit de GitHub.{{< history >}}
bitbucket_server_project et de bitbucket_server_repo a été introduite dans GitLab 19.1.{{< /history >}}
Importe un dépôt depuis Bitbucket Server vers GitLab.
La clé de projet Bitbucket est uniquement utilisée pour trouver le dépôt dans Bitbucket. Vous devez spécifier un target_namespace si vous souhaitez importer le dépôt dans un groupe GitLab. Si vous ne spécifiez pas target_namespace, le projet est importé dans votre espace de nommage utilisateur personnel.
Prérequis :
POST /import/bitbucket_server
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
bitbucket_server_project | string | Oui | Clé de projet Bitbucket. Doit contenir uniquement des lettres, des chiffres, des tirets, des traits de soulignement, des points ou des espaces blancs. Les clés de projet personnel commencent par ~. |
bitbucket_server_repo | string | Oui | Nom du dépôt Bitbucket. Doit contenir uniquement des lettres, des chiffres, des tirets, des traits de soulignement, des points ou des espaces blancs. |
bitbucket_server_url | string | Oui | URL de Bitbucket Server. |
bitbucket_server_username | string | Oui | Nom d'utilisateur Bitbucket Server. |
personal_access_token | string | Oui | Jeton d'accès personnel ou mot de passe Bitbucket Server. |
new_name | string | Non | Nom du nouveau projet. Également utilisé comme nouveau chemin, il ne doit donc pas commencer ou se terminer par un caractère spécial et ne doit pas contenir de caractères spéciaux consécutifs. Dans GitLab 16.9 et versions antérieures, le chemin du projet était copié depuis Bitbucket à la place. Dans GitLab 16.10, le comportement a été rétabli au comportement d'origine. |
target_namespace | string | Non | Espace de nommage dans lequel importer le dépôt. Prend en charge les sous-groupes comme /namespace/subgroup. |
timeout_strategy | string | Non | Stratégie de gestion des délais d'expiration d'importation. Les valeurs valides sont optimistic (continuer vers l'étape suivante de l'importation) ou pessimistic (échouer immédiatement). La valeur par défaut est pessimistic. Introduite dans GitLab 16.5. |
curl --request POST \
--url "https://gitlab.example.com/api/v4/import/bitbucket_server" \
--header "content-type: application/json" \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data '{
"bitbucket_server_url": "http://bitbucket.example.com",
"bitbucket_server_username": "root",
"personal_access_token": "Nzk4MDcxODY4MDAyOiP8y410zF3tGAyLnHRv/E0+3xYs",
"bitbucket_server_project": "NEW",
"bitbucket_server_repo": "my-repo",
"new_name": "NEW-NAME"
}'
{{< history >}}
{{< /history >}}
Importe un dépôt depuis Bitbucket Cloud vers GitLab.
Prérequis :
POST /import/bitbucket
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
bitbucket_api_token | string | Oui | Jeton d'API Bitbucket Cloud. |
bitbucket_email | string | Oui | E-mail Bitbucket Cloud. |
repo_path | string | Oui | Chemin vers le dépôt. |
target_namespace | string | Oui | Espace de nommage dans lequel importer le dépôt. Prend en charge les sous-groupes comme /namespace/subgroup. |
new_name | string | Non | Nom du nouveau projet. Également utilisé comme nouveau chemin, il ne doit donc pas commencer ou se terminer par un caractère spécial et ne doit pas contenir de caractères spéciaux consécutifs. |
curl --request POST \
--url "https://gitlab.example.com/api/v4/import/bitbucket" \
--header "content-type: application/json" \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data '{
"bitbucket_email": "[email protected]",
"bitbucket_api_token": "your_bitbucket_api_token",
"repo_path": "username/my_project",
"target_namespace": "my_group/my_subgroup",
"new_name": "new_project_name"
}'
Si vous utilisez un jeton d'API Bitbucket Cloud pour l'authentification, le jeton doit disposer des portées suivantes :
read:repository:bitbucketread:pullrequest:bitbucketread:issue:bitbucketread:wiki:bitbucket