Import úložiště Git do projektu

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Důležité

Zvažte použití bezpečnějších tokenů Microsoft Entra nad tokeny s vyšším rizikem pro osobní přístupové tokeny. Další informace najdete v tématu Snížení využití PAT. Projděte si doprovodné materiály k ověřování a zvolte správný mechanismus ověřování pro vaše potřeby.

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.
Povolení - Zobrazit kód v soukromých projektech: Alespoň Základní přístup.
- Klonovat nebo přispívat do kódu v soukromých projektech: Člen skupiny Contributors nebo odpovídající oprávnění v projektu.
– Nastavení oprávnění k větvi nebo úložišti: Správa oprávnění jsou oprávnění pro větev nebo úložiště.
– Změnit výchozí větev: Oprávnění k úpravám jsou určená pro repozitář.
– 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.
Services Repozitáře povoleny.
Tools Nepovinné. Použití az repos příkazů: 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.
Povolení - 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.
Services 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í.

  1. V prohlížeči se přihlaste ke své organizaci a vyberte Úložiště>Soubory.

    Snímek obrazovky zobrazující pohled na soubory úložiště.

  2. V rozevíracím seznamu úložiště vyberte Importovat úložiště.

    Snímek obrazovky s možností Importovat úložiště

  3. Zadejte adresu URL klonu zdrojového úložiště a název nového úložiště Git.

    Snímek obrazovky s dialogovým oknem Importovat úložiště s ukázkovou adresou URL úložiště

  4. 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.

Snímek obrazovky s možností Importovat pro prázdné úložiště

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í můžete znovu povolit tak, že přejdete na Nastavení, Správa 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 repozitáře pomocí CLI nástroje 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. Pokud je to možné, pro lepší zabezpečení použijte tokeny MICROSOFT Entra ID. 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é repo fabrikam-open-source do prázdného Git repo fabrikam-open-source pro výchozí konfiguraci az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber".

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

  1. Naklonujte zdrojové úložiště do dočasné složky v počítači pomocí bare možnosti, jak je znázorněno v následujícím příkladu příkazového řádku, a pak přejděte do složky úložiště. Při klonování pomocí bare té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.git které se má importovat ručně.

    git clone --bare https://github.com/contoso/old-contoso-repo.git
    cd old-contoso-repo.git
    
  2. Vytvoř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-repo je adresa URL nového cílového úložiště.

  3. 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-repo
    

    Upozornění

    Použití --mirror př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.

  4. 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-repo
    
  5. Odstraň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.

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 tsv
    
  • Objekt 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řechod zahrnuje mnohem víc než osvojování 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 úložiště importu do Azure DevOps. Tato akce zkopíruje všechny objekty Gitu 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 Git.exe i klienta LFS na stejném počítači s přístupem 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. Klonování funguje, ale při stahování souborů LFS selže.
  • Přidejte zdrojové úložiště jako vzdálené, například "source".
  • Spusťte git lfs fetch source --allpříkaz , který přenese všechny soubory LFS ze zdroje do místního úložiště.
  • Za předpokladu, že cílové úložiště Azure DevOps je vaším "target" vzdáleným úložištěm.
  • Spusťte 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ů. Následující příklad zachází 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

Další kroky