Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Tento článek ukazuje, jak importovat existující úložiště Git z GitHubu, Bitbucketu, GitLabu nebo jiného umístění do nového nebo prázdného existujícího úložiště v projektu Azure DevOps.
Požadavky
| Kategorie | Požadavky |
|---|---|
| Přístup k projektu | Člen projektu. |
| Oprávnění | - Zobrazit kód v soukromých projektech: Alespoň Základní přístup. - Klonování nebo přispívání do kódu v soukromých projektech: Člen skupiny zabezpečení Contributors nebo osoba s odpovídajícími oprávněními v projektu. – Nastavte oprávnění pro větev nebo úložiště: Správa oprávnění oprávnění pro větev nebo úložiště. – Změnit výchozí větev: Upravit zásady oprávnění pro úložiště. – Import úložiště: Člen skupiny zabezpečení Projektoví administrátoři nebo oprávnění Vytvořit úložiště na úrovni projektu Git nastavená na Povolit. Další informace najdete v tématu Nastavení oprávnění úložiště Git. |
| Služby | Repozitáře povoleny. |
| Nářadí | Nepovinné. Použijte příkazy az repos: Azure DevOps CLI. |
Poznámka:
Ve veřejných projektech mají uživatelé s přístupem Stakeholder plný přístup do Azure Repos, kde mohou zobrazovat, klonovat a přispívat ke kódu.
| Kategorie | Požadavky |
|---|---|
| Přístup k projektu | Člen projektu. |
| Oprávnění | - Zobrazit kód: Alespoň základní přístup. - Klonování nebo přispívání do kódu: Člen skupiny zabezpečení Přispěvatelé nebo odpovídající oprávnění v rámci projektu. |
| Služby | Repozitáře povoleny. |
Import do nového úložiště
Při importu do nového úložiště proveďte následující kroky:
Poznámka:
Po dokončení importu úložiště nastaví Azure DevOps výchozí větev pro toto importované úložiště. Pokud importované úložiště obsahuje větev s názvem main, nastaví se jako výchozí větev, jinak se první větev (v abecedním pořadí) importovaného úložiště nastaví jako Výchozí.
V prohlížeči se přihlaste ke své organizaci a vyberte Úložiště>Soubory.
V rozevíracím seznamu úložiště vyberte Importovat úložiště.
Zadejte adresu URL klonu zdrojového úložiště a název nového úložiště Git.
- Vyberte Importovat úložiště.
Úložiště se naimportuje.
Import do existujícího prázdného úložiště
Na stránce Soubory prázdného úložiště Git vyberte Importovat a zadejte adresu URL klonování. Pokud zdrojové úložiště vyžaduje ověření, zadejte přihlašovací údaje.
Poznámka:
Funkce importu zakáže automatizované propojení pracovních položek uvedených v komentáři potvrzení, protože ID pracovních položek v cílovém projektu nemusí být stejná jako id pracovních položek ve zdrojovém projektu. Automatické propojení pracovních položek uvedených v potvrzení je možné znovu povolit tak, že přejdete do nastavení, správy verzí, vyberete úložiště a zvolíte Možnosti. Další informace o propojení potvrzení s pracovními položkami najdete v tématu Propojení pracovních položek s potvrzeními.
Ruční import úložiště pomocí rozhraní příkazového řádku az repos
K importu úložiště do projektu Azure DevOps můžete použít příkaz az repos import .
Než budete moct importovat úložiště Git, musíte nejprve vytvořit úložiště v Azure DevOps. Úložiště, které vytvoříte, musí být také prázdné. Pokud chcete vytvořit úložiště, přečtěte si téma Vytvoření úložiště Git v Azure Repos.
az repos import create --git-source-url
[--detect {false, true}]
[--git-service-endpoint-id]
[--org]
[--project]
[--repository]
[--requires-authorization]
[--subscription]
[--user-name]
Parametry
| Parametr | Popis |
|---|---|
git-source-url |
Požadováno. Adresa URL zdrojového úložiště Git, které chcete importovat. |
detect |
Nepovinné. Automaticky rozpozná organizaci. Přijaté hodnoty: false, true. |
git-service-endpoint-id |
Nepovinné. Koncový bod služby pro připojení k externímu koncovému bodu |
org, organization |
Adresa URL organizace Azure DevOps Výchozí organizaci můžete nakonfigurovat pomocí .az devops configure -d organization=<ORG_URL>
Vyžaduje se, pokud není nakonfigurované jako výchozí nebo vyzvednuto prostřednictvím konfigurace Gitu. Příklad: https://dev.azure.com/MyOrganizationName/. |
project, p |
Název nebo ID projektu. Výchozí projekt můžete nakonfigurovat pomocí az devops configure -d project=<NAME_OR_ID>.
Vyžaduje se, pokud není nakonfigurované jako výchozí nebo vyzvednuto prostřednictvím konfigurace Gitu. |
repository |
Název nebo ID úložiště pro vytvoření žádosti o import. |
requires-authorization |
Příznak označující, jestli je zdrojové úložiště Git soukromé. Pokud požadujete ověření, vygenerujte ve zdrojovém úložišti ověřovací token a nastavte proměnnou AZURE_DEVOPS_EXT_GIT_SOURCE_PASSWORD_OR_PAT prostředí na hodnotu tokenu. Pro lepší zabezpečení doporučujeme používat tokeny Microsoft Entra ID, pokud je to možné. Požadavek na import pak zahrnuje ověření. |
subscription |
Název nebo ID předplatného. Výchozí předplatné můžete nakonfigurovat pomocí az account set -s <NAME_OR_ID>. |
user-name |
Uživatelské jméno, které určí, kdy je úložiště Git soukromé. |
Příklad
Následující příkaz naimportuje veřejné úložiště fabrikam-open-source
az repos import create --git-source-url https://github.com/fabrikamprime/fabrikam-open-source --repository fabrikam-open-source
{
"detailedStatus": {
"allSteps": [
"Processing request",
"Analyzing repository objects",
"Storing objects",
"Storing index file",
"Updating references",
"Import completed successfully"
],
"currentStep": 6,
"errorMessage": null
},
"importRequestId": 8,
"parameters": {
"deleteServiceEndpointAfterImportIsDone": null,
"gitSource": {
"overwrite": false,
"url": "https://github.com/fabrikamprime/fabrikam-open-source"
},
"serviceEndpointId": null,
"tfvcSource": null
},
"repository": {
"defaultBranch": null,
"id": "0f6919cd-a4db-4f34-a73f-2354114a66c4",
"isDisabled": false,
"isFork": null,
"name": "new-empty-repo",
"parentRepository": null,
"project": {
"abbreviation": null,
"defaultTeamImageUrl": null,
"description": "Guidance and source control to foster a vibrant ecosystem for Fabrikam Fiber applications and extensions.",
"id": "56af920d-393b-4236-9a07-24439ccaa85c",
"lastUpdateTime": "2021-05-24T21:52:14.95Z",
"name": "Fabrikam Fiber",
"revision": 438023732,
"state": "wellFormed",
"url": "https://dev.azure.com/fabrikamprime/_apis/projects/56af920d-393b-4236-9a07-24439ccaa85c",
"visibility": "private"
},
"remoteUrl": "https://fabrikamprime@dev.azure.com/fabrikamprime/Fabrikam%20Fiber/_git/fabrikam-open-source",
"size": 12477,
"sshUrl": "git@ssh.dev.azure.com:v3/kelliott/Fabrikam%20Fiber/new-empty-repo",
"url": "https://dev.azure.com/fabrikamprime/56af920d-393b-4236-9a07-24439ccaa85c/_apis/git/repositories/0f6919cd-a4db-4f34-a73f-2354114a66c4",
"validRemoteUrls": null,
"webUrl": "https://dev.azure.com/fabrikamprime/Fabrikam%20Fiber/_git/fabrikam-open-source"
},
"status": "completed",
"url": "https://dev.azure.com/fabrikamprime/Fabrikam%20Fiber/_apis/git/repositories/0f6919cd-a4db-4f34-a73f-2354114a66c4/importRequests/8"
}
Ruční import úložiště pomocí rozhraní příkazového řádku git
Naklonujte zdrojové úložiště do dočasné složky v počítači pomocí
baremožnosti, jak je znázorněno v následujícím příkladu příkazového řádku, a přejděte do složky úložiště. Při klonování pomocíbaretéto možnosti obsahuje název složky příponu.git. V tomto příkladu je zdrojové úložiště,https://github.com/contoso/old-contoso-repo.gitkteré se má importovat ručně.git clone --bare https://github.com/contoso/old-contoso-repo.git cd old-contoso-repo.gitVytvořte cílové úložiště a poznamenejte si adresu URL klonování. V tomto příkladu
https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repoje adresa URL nového cílového úložiště.Spuštěním následujícího příkazu zkopírujte zdrojové úložiště do cílového úložiště.
git push --mirror https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repoUpozorňující
Použití
--mirrorpřepisuje všechny větve v cílovém repozitáři, což zahrnuje smazání všech větví, které neexistují ve zdrojovém repozitáři.Pokud má zdrojové úložiště objekty LFS, načtěte je a zkopírujte je ze zdrojového úložiště do cílového úložiště.
git lfs fetch origin --all git lfs push --all https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repoOdstraňte dočasnou složku spuštěním následujících příkazů.
cd .. rm -rf old-contoso-repo.git
Nejčastější dotazy
I když jsou importy nejčastěji úspěšné, můžou způsobit problémy následující podmínky.
- Co když je zdrojové úložiště za dvoufaktorovým ověřováním?
- Co když moje zdrojové úložiště nepodporuje multi_ack?
- Můžu importovat z předchozích místních verzí?
- Můžu použít přihlašovací údaje založené na MSA?
- Můžu importovat z TFVC?
- Co když zdrojové úložiště obsahuje objekty Git LFS?
Otázka: Co když je zdrojové úložiště chráněno dvoufaktorovým ověřováním?
A: Služba importu používá rozhraní REST API k ověření a aktivaci importu a nemůže pracovat přímo s úložišti, která vyžadují dvojúrovňové ověřování.
Většina poskytovatelů hostingu Git podporuje ověřovací tokeny, které je možné do služby importu zadat:
Tokeny ID Microsoft Entra (doporučeno): Tokeny MICROSOFT Entra ID poskytují lepší zabezpečení a představují doporučenou metodu ověřování. Tyto tokeny můžete získat prostřednictvím:
Azure CLI (pro vývoj/testování):
az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsvObjekt služby (pro produkční/automatizované scénáře):
- Registrace aplikace v Microsoft Entra ID
- Vytvoření tajného klíče klienta pro aplikaci
- Udělení příslušných oprávnění aplikace v Azure DevOps
- Použijte přihlašovací údaje hlavní služby k získání tokenů programově.
Osobní přístupové tokeny (alternativně):GitHub a Azure DevOps také podporují osobní přístupové tokeny.
Otázka: Co když zdrojové úložiště nepodporuje multi_ack?
A: Služba importu používá během importu funkci multi_ack protokolu Git. Pokud zdrojové úložiště tuto funkci neposkytuje, může služba importu z daného zdroje selhat. K tomuto selhání může dojít při vytváření žádosti o import nebo při probíhajícím importu.
Otázka: Můžu importovat z předchozích verzí?
A: Pokud je zdrojové úložiště Git v místní verzi starší než 2017 RTM, import selže kvůli neshodě kontraktů mezi nejnovějšími verzemi Azure DevOps a předchozími verzemi.
Otázka: Můžu použít přihlašovací údaje založené na MSA?
A: Přihlašovací údaje založené na účtu Microsoft bohužel nefungují. Služba importu spoléhá na základní ověřování při komunikaci se zdrojovým úložištěm. Pokud uživatelské jméno a heslo, které používáte, není základní ověřování, přihlášení a import se nezdaří. Jedním ze způsobů, jak zkontrolovat, zda uživatelské jméno a heslo, které používáte, jsou základní ověřování, je zkusit pomocí Gitu klonovat svůj úložiště s použitím následujícího formátu:
git clone https://<<username>>:<<password>>@<<remaining clone Url>>
Otázka: Můžu importovat z TFVC?
A: Kód můžete migrovat z existujícího úložiště TFVC do nového úložiště Git ve stejném účtu. Migrace na Git má mnoho výhod, ale je to proces, který se týká velkých úložišť a týmů TFVC. Centralizované systémy správy verzí, jako je TFVC, se chovají jinak než Git základními způsoby. Přepínač zahrnuje mnohem víc než učení nových příkazů. Je to rušivá změna, která vyžaduje pečlivé plánování. Další informace najdete v tématu Import z TFVC do Gitu.
Otázka: Co když zdrojové úložiště obsahuje objekty Git LFS?
A: Import Gitu neimportuje objekty Git LFS.
Objekty LFS je možné přesunout pomocí následujícího postupu:
- Importujte úložiště pomocí funkce importu úložiště do Azure DevOps. Tato akce zkopíruje všechny objekty Git ze zdroje do Azure DevOps, což také importuje ukazatele LFS, které jsou objekty Gitu, ale ne soubory LFS.
Pokud chcete přesunout soubory LFS, potřebujete ve stejném poli Git.exe i klienta LFS a přístup ke zdrojovému úložišti i cílovému úložišti.
- Naklonujte importované úložiště z Azure DevOps do místního systému. Klon funguje, ale při načítání souborů LFS selže.
- Přidejte zdrojové úložiště jako vzdálené, například "source".
- Provést
git lfs fetch source --all, který přenese všechny soubory LFS ze zdroje do místního úložiště - Za předpokladu, že úložiště VSTS je vaším "cílovým" vzdáleným.
- Provést
git lfs push target --all
Otázka: Můžu importovat aktualizace, pokud se zdroj později změní?
A: Služba importu slouží k počátečnímu importu celého úložiště. Pokud chcete později synchronizovat změny, potřebujete místní klon úložiště s nastavenými vzdálenými odkazy na zdroj i cíl.
Změny můžete synchronizovat pomocí následujících příkazů.
Zacházíme s importem Azure Repos jako s origin a s původním úložištěm jako s upstream.
git clone --bare <Azure-Repos-clone-URL>.git
cd <name-of-repo>
git remote add --mirror=fetch upstream <original-repo-URL>
git fetch upstream --tags
git push origin --all