Pontos de extremidade da API REST para importações de origem
Use a API REST para iniciar uma importação de um repositório de origem do Git.
Sobre as importações de origem
Warning
Devido aos níveis muito baixos de uso e alternativas disponíveis, a API Source Imports foi descontinuado. Para obter mais detalhes e alternativas, consulte o log de mudanças.
Você pode usar esses pontos de extremidade para iniciar uma importação de um repositório Git hospedado com outro serviço. Esta é a mesma funcionalidade que a do importador GitHub. Para obter mais informações, confira "Importar um repositório usando o Importador do GitHub". Uma importação de código-fonte típica iniciaria a importação e, em seguida, (opcionalmente) atualizaria os autores e/ou atualizaria a preferência pelo uso do Git LFS se existissem arquivos grandes na importação. Você também pode criar um webhook que escuta no RepositoryImportEvent
para descobrir o status da importação.
Note
Esses pontos de extremidade só dão suporte à autenticação por meio de um personal access token (classic). Para obter mais informações, confira "Gerenciar seus tokens de acesso pessoal".
O seguinte diagrama fornece um exemplo mais detalhado:
+---------+ +--------+ +---------------------+
| Tooling | | GitHub | | Original Repository |
+---------+ +--------+ +---------------------+
| | |
| Start import | |
|----------------------------->| |
| | |
| | Download source data |
| |--------------------------------------------->|
| | Begin streaming data |
| |<---------------------------------------------|
| | |
| Get import progress | |
|----------------------------->| |
| "status": "importing" | |
|<-----------------------------| |
| | |
| Get commit authors | |
|----------------------------->| |
| | |
| Map a commit author | |
|----------------------------->| |
| | |
| | |
| | Finish streaming data |
| |<---------------------------------------------|
| | |
| | Rewrite commits with mapped authors |
| |------+ |
| | | |
| |<-----+ |
| | |
| | Update repository on GitHub |
| |------+ |
| | | |
| |<-----+ |
| | |
| Map a commit author | |
|----------------------------->| |
| | Rewrite commits with mapped authors |
| |------+ |
| | | |
| |<-----+ |
| | |
| | Update repository on GitHub |
| |------+ |
| | | |
| |<-----+ |
| | |
| Get large files | |
|----------------------------->| |
| | |
| opt_in to Git LFS | |
|----------------------------->| |
| | Rewrite commits for large files |
| |------+ |
| | | |
| |<-----+ |
| | |
| | Update repository on GitHub |
| |------+ |
| | | |
| |<-----+ |
| | |
| Get import progress | |
|----------------------------->| |
| "status": "complete" | |
|<-----------------------------| |
| | |
| | |
Get an import status
View the progress of an import.
Warning
Endpoint closing down notice: Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the changelog.
Import status
This section includes details about the possible values of the status
field of the Import Progress response.
An import that does not have errors will progress through these steps:
detecting
- the "detection" step of the import is in progress because the request did not include avcs
parameter. The import is identifying the type of source control present at the URL.importing
- the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will includecommit_count
(the total number of raw commits that will be imported) andpercent
(0 - 100, the current progress through the import).mapping
- the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information.pushing
- the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will includepush_percent
, which is the percent value reported bygit push
when it is "Writing objects".complete
- the import is complete, and the repository is ready on GitHub.
If there are problems, you will see one of these in the status
field:
auth_failed
- the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the Update an import section.error
- the import encountered an error. The import progress response will include thefailed_step
and an error message. Contact GitHub Support for more information.detection_needs_auth
- the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the Update an import section.detection_found_nothing
- the importer didn't recognize any source control at the URL. To resolve, Cancel the import and retry with the correct URL.detection_found_multiple
- the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include aproject_choices
field with the possible project choices as values. To update project choice, please see the Update an import section.
The project_choices field
When multiple projects are found at the provided URL, the response hash will include a project_choices
field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type.
Git LFS related fields
This section includes details about Git LFS related fields that may be present in the Import Progress response.
use_lfs
- describes whether the import has been opted in or out of using Git LFS. The value can beopt_in
,opt_out
, orundecided
if no action has been taken.has_large_files
- the boolean value describing whether files larger than 100MB were found during theimporting
step.large_files_size
- the total size in gigabytes of files larger than 100MB found in the originating repository.large_files_count
- the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request.
Tokens de acesso refinados para "Get an import status"
Esse ponto de extremidade funciona com os seguintes tipos de token refinados:
O token refinado deve ter os seguintes conjuntos de permissões:
- "Contents" repository permissions (read)
Parâmetros para "Get an import status"
Nome, Tipo, Descrição |
---|
accept string Setting to |
Nome, Tipo, Descrição |
---|
owner string ObrigatórioThe account owner of the repository. The name is not case sensitive. |
repo string ObrigatórioThe name of the repository without the |
Códigos de status de resposta HTTP para "Get an import status"
Código de status | Descrição |
---|---|
200 | OK |
404 | Resource not found |
503 | Unavailable due to service under maintenance. |
Exemplos de código para "Get an import status"
Exemplo de solicitação
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/OWNER/REPO/import
Response
Status: 200
{
"vcs": "subversion",
"use_lfs": true,
"vcs_url": "http://svn.mycompany.com/svn/myproject",
"status": "complete",
"status_text": "Done",
"has_large_files": true,
"large_files_size": 132331036,
"large_files_count": 1,
"authors_count": 4,
"url": "https://api.github.com/repos/octocat/socm/import",
"html_url": "https://import.github.com/octocat/socm/import",
"authors_url": "https://api.github.com/repos/octocat/socm/import/authors",
"repository_url": "https://api.github.com/repos/octocat/socm"
}
Start an import
Start a source import to a GitHub repository using GitHub Importer.
Importing into a GitHub repository with GitHub Actions enabled is not supported and will
return a status 422 Unprocessable Entity
response.
Warning
Endpoint closing down notice: Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the changelog.
Tokens de acesso refinados para "Start an import"
Esse ponto de extremidade funciona com os seguintes tipos de token refinados:
O token refinado deve ter os seguintes conjuntos de permissões:
- "Contents" repository permissions (write)
Parâmetros para "Start an import"
Nome, Tipo, Descrição |
---|
accept string Setting to |
Nome, Tipo, Descrição |
---|
owner string ObrigatórioThe account owner of the repository. The name is not case sensitive. |
repo string ObrigatórioThe name of the repository without the |
Nome, Tipo, Descrição |
---|
vcs_url string ObrigatórioThe URL of the originating repository. |
vcs string The originating VCS type. Without this parameter, the import job will take additional time to detect the VCS type before beginning the import. This detection step will be reflected in the response. Pode ser um dos: |
vcs_username string If authentication is required, the username to provide to |
vcs_password string If authentication is required, the password to provide to |
tfvc_project string For a tfvc import, the name of the project that is being imported. |
Códigos de status de resposta HTTP para "Start an import"
Código de status | Descrição |
---|---|
201 | Created |
404 | Resource not found |
422 | Validation failed, or the endpoint has been spammed. |
503 | Unavailable due to service under maintenance. |
Exemplos de código para "Start an import"
Exemplo de solicitação
curl -L \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/OWNER/REPO/import \
-d '{"vcs":"subversion","vcs_url":"http://svn.mycompany.com/svn/myproject","vcs_username":"octocat","vcs_password":"secret"}'
Response
Status: 201
{
"vcs": "subversion",
"use_lfs": true,
"vcs_url": "http://svn.mycompany.com/svn/myproject",
"status": "importing",
"status_text": "Importing...",
"has_large_files": false,
"large_files_size": 0,
"large_files_count": 0,
"authors_count": 0,
"commit_count": 1042,
"url": "https://api.github.com/repos/octocat/socm/import",
"html_url": "https://import.github.com/octocat/socm/import",
"authors_url": "https://api.github.com/repos/octocat/socm/import/authors",
"repository_url": "https://api.github.com/repos/octocat/socm"
}
Update an import
An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API request. If no parameters are provided, the import will be restarted.
Some servers (e.g. TFS servers) can have several projects at a single URL. In those cases the import progress will
have the status detection_found_multiple
and the Import Progress response will include a project_choices
array.
You can select the project to import by providing one of the objects in the project_choices
array in the update request.
Warning
Endpoint closing down notice: Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the changelog.
Tokens de acesso refinados para "Update an import"
Esse ponto de extremidade funciona com os seguintes tipos de token refinados:
O token refinado deve ter os seguintes conjuntos de permissões:
- "Contents" repository permissions (write)
Parâmetros para "Update an import"
Nome, Tipo, Descrição |
---|
accept string Setting to |
Nome, Tipo, Descrição |
---|
owner string ObrigatórioThe account owner of the repository. The name is not case sensitive. |
repo string ObrigatórioThe name of the repository without the |
Nome, Tipo, Descrição |
---|
vcs_username string The username to provide to the originating repository. |
vcs_password string The password to provide to the originating repository. |
vcs string The type of version control system you are migrating from. Pode ser um dos: |
tfvc_project string For a tfvc import, the name of the project that is being imported. |
Códigos de status de resposta HTTP para "Update an import"
Código de status | Descrição |
---|---|
200 | OK |
503 | Unavailable due to service under maintenance. |
Exemplos de código para "Update an import"
Exemplos de solicitação
curl -L \
-X PATCH \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/OWNER/REPO/import \
-d '{"vcs_username":"octocat","vcs_password":"secret"}'
Example 1
Status: 200
{
"vcs": "subversion",
"use_lfs": true,
"vcs_url": "http://svn.mycompany.com/svn/myproject",
"status": "detecting",
"url": "https://api.github.com/repos/octocat/socm/import",
"html_url": "https://import.github.com/octocat/socm/import",
"authors_url": "https://api.github.com/repos/octocat/socm/import/authors",
"repository_url": "https://api.github.com/repos/octocat/socm"
}
Cancel an import
Stop an import for a repository.
Warning
Endpoint closing down notice: Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the changelog.
Tokens de acesso refinados para "Cancel an import"
Esse ponto de extremidade funciona com os seguintes tipos de token refinados:
O token refinado deve ter os seguintes conjuntos de permissões:
- "Contents" repository permissions (write)
Parâmetros para "Cancel an import"
Nome, Tipo, Descrição |
---|
accept string Setting to |
Nome, Tipo, Descrição |
---|
owner string ObrigatórioThe account owner of the repository. The name is not case sensitive. |
repo string ObrigatórioThe name of the repository without the |
Códigos de status de resposta HTTP para "Cancel an import"
Código de status | Descrição |
---|---|
204 | No Content |
503 | Unavailable due to service under maintenance. |
Exemplos de código para "Cancel an import"
Exemplo de solicitação
curl -L \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/OWNER/REPO/import
Response
Status: 204
Get commit authors
Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username hubot
into something like hubot <hubot@12341234-abab-fefe-8787-fedcba987654>
.
This endpoint and the Map a commit author endpoint allow you to provide correct Git author information.
Warning
Endpoint closing down notice: Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the changelog.
Tokens de acesso refinados para "Get commit authors"
Esse ponto de extremidade funciona com os seguintes tipos de token refinados:
O token refinado deve ter os seguintes conjuntos de permissões:
- "Contents" repository permissions (read)
Parâmetros para "Get commit authors"
Nome, Tipo, Descrição |
---|
accept string Setting to |
Nome, Tipo, Descrição |
---|
owner string ObrigatórioThe account owner of the repository. The name is not case sensitive. |
repo string ObrigatórioThe name of the repository without the |
Nome, Tipo, Descrição |
---|
since integer A user ID. Only return users with an ID greater than this ID. |
Códigos de status de resposta HTTP para "Get commit authors"
Código de status | Descrição |
---|---|
200 | OK |
404 | Resource not found |
503 | Unavailable due to service under maintenance. |
Exemplos de código para "Get commit authors"
Exemplo de solicitação
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/OWNER/REPO/import/authors
Response
Status: 200
[
{
"id": 2268557,
"remote_id": "nobody@fc7da526-431c-80fe-3c8c-c148ff18d7ef",
"remote_name": "nobody",
"email": "hubot@github.com",
"name": "Hubot",
"url": "https://api.github.com/repos/octocat/socm/import/authors/2268557",
"import_url": "https://api.github.com/repos/octocat/socm/import"
},
{
"id": 2268558,
"remote_id": "svner@fc7da526-431c-80fe-3c8c-c148ff18d7ef",
"remote_name": "svner",
"email": "svner@fc7da526-431c-80fe-3c8c-c148ff18d7ef",
"name": "svner",
"url": "https://api.github.com/repos/octocat/socm/import/authors/2268558",
"import_url": "https://api.github.com/repos/octocat/socm/import"
},
{
"id": 2268559,
"remote_id": "svner@example.com@fc7da526-431c-80fe-3c8c-c148ff18d7ef",
"remote_name": "svner@example.com",
"email": "svner@example.com@fc7da526-431c-80fe-3c8c-c148ff18d7ef",
"name": "svner@example.com",
"url": "https://api.github.com/repos/octocat/socm/import/authors/2268559",
"import_url": "https://api.github.com/repos/octocat/socm/import"
}
]
Map a commit author
Update an author's identity for the import. Your application can continue updating authors any time before you push new commits to the repository.
Warning
Endpoint closing down notice: Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the changelog.
Tokens de acesso refinados para "Map a commit author"
Esse ponto de extremidade funciona com os seguintes tipos de token refinados:
O token refinado deve ter os seguintes conjuntos de permissões:
- "Contents" repository permissions (write)
Parâmetros para "Map a commit author"
Nome, Tipo, Descrição |
---|
accept string Setting to |
Nome, Tipo, Descrição |
---|
owner string ObrigatórioThe account owner of the repository. The name is not case sensitive. |
repo string ObrigatórioThe name of the repository without the |
author_id integer Obrigatório |
Nome, Tipo, Descrição |
---|
email string The new Git author email. |
name string The new Git author name. |
Códigos de status de resposta HTTP para "Map a commit author"
Código de status | Descrição |
---|---|
200 | OK |
404 | Resource not found |
422 | Validation failed, or the endpoint has been spammed. |
503 | Unavailable due to service under maintenance. |
Exemplos de código para "Map a commit author"
Exemplo de solicitação
curl -L \
-X PATCH \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/OWNER/REPO/import/authors/AUTHOR_ID \
-d '{"email":"hubot@github.com","name":"Hubot the Robot"}'
Response
Status: 200
{
"id": 2268557,
"remote_id": "nobody@fc7da526-431c-80fe-3c8c-c148ff18d7ef",
"remote_name": "nobody",
"email": "hubot@github.com",
"name": "Hubot",
"url": "https://api.github.com/repos/octocat/socm/import/authors/2268557",
"import_url": "https://api.github.com/repos/octocat/socm/import"
}
Get large files
List files larger than 100MB found during the import
Warning
Endpoint closing down notice: Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the changelog.
Tokens de acesso refinados para "Get large files"
Esse ponto de extremidade funciona com os seguintes tipos de token refinados:
O token refinado deve ter os seguintes conjuntos de permissões:
- "Contents" repository permissions (read)
Parâmetros para "Get large files"
Nome, Tipo, Descrição |
---|
accept string Setting to |
Nome, Tipo, Descrição |
---|
owner string ObrigatórioThe account owner of the repository. The name is not case sensitive. |
repo string ObrigatórioThe name of the repository without the |
Códigos de status de resposta HTTP para "Get large files"
Código de status | Descrição |
---|---|
200 | OK |
503 | Unavailable due to service under maintenance. |
Exemplos de código para "Get large files"
Exemplo de solicitação
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/OWNER/REPO/import/large_files
Response
Status: 200
[
{
"ref_name": "refs/heads/master",
"path": "foo/bar/1",
"oid": "d3d9446802a44259755d38e6d163e820",
"size": 10485760
},
{
"ref_name": "refs/heads/master",
"path": "foo/bar/2",
"oid": "6512bd43d9caa6e02c990b0a82652dca",
"size": 11534336
},
{
"ref_name": "refs/heads/master",
"path": "foo/bar/3",
"oid": "c20ad4d76fe97759aa27a0c99bff6710",
"size": 12582912
}
]
Update Git LFS preference
You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability is powered by Git LFS.
You can learn more about our LFS feature and working with large files on our help site.
Warning
Endpoint closing down notice: Due to very low levels of usage and available alternatives, this endpoint is closing down and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the changelog.
Tokens de acesso refinados para "Update Git LFS preference"
Esse ponto de extremidade funciona com os seguintes tipos de token refinados:
O token refinado deve ter os seguintes conjuntos de permissões:
- "Contents" repository permissions (write)
Parâmetros para "Update Git LFS preference"
Nome, Tipo, Descrição |
---|
accept string Setting to |
Nome, Tipo, Descrição |
---|
owner string ObrigatórioThe account owner of the repository. The name is not case sensitive. |
repo string ObrigatórioThe name of the repository without the |
Nome, Tipo, Descrição |
---|
use_lfs string ObrigatórioWhether to store large files during the import. Pode ser um dos: |
Códigos de status de resposta HTTP para "Update Git LFS preference"
Código de status | Descrição |
---|---|
200 | OK |
422 | Validation failed, or the endpoint has been spammed. |
503 | Unavailable due to service under maintenance. |
Exemplos de código para "Update Git LFS preference"
Exemplo de solicitação
curl -L \
-X PATCH \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/OWNER/REPO/import/lfs \
-d '{"use_lfs":"opt_in"}'
Response
Status: 200
{
"vcs": "subversion",
"use_lfs": true,
"vcs_url": "http://svn.mycompany.com/svn/myproject",
"status": "complete",
"status_text": "Done",
"has_large_files": true,
"large_files_size": 132331036,
"large_files_count": 1,
"authors_count": 4,
"url": "https://api.github.com/repos/octocat/socm/import",
"html_url": "https://import.github.com/octocat/socm/import",
"authors_url": "https://api.github.com/repos/octocat/socm/import/authors",
"repository_url": "https://api.github.com/repos/octocat/socm"
}