Import úložiště Git

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

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

  • Organizace v Azure DevOps. Pokud ho nemáte, můžete si ho zdarma zaregistrovat . Každá organizace zahrnuje bezplatná neomezená privátní úložiště Git.
  • Pokud chcete vytvořit nebo importovat úložiště, musíte být členem skupiny zabezpečení Projectu Správa istrátory nebo mít oprávnění k vytvoření úložiště na úrovni projektu Git nastavené na Povolit. Další informace najdete v tématu Nastavení oprávnění úložiště Git.
  • Pokud chcete použít funkci úložiště Import Azure DevOps, musíte mít TFS 2017 Update 1 nebo novější.
  • Pokud chcete importovat úložiště pomocí TFS 2017 RTM nebo starší verze, přečtěte si téma Ruční import úložiště pomocí git CLI.
  • Pokud chcete použít příkazy az repos , nezapomeňte postupovat podle kroků v tématu Začínáme s Azure DevOps CLI.
  • Organizace v Azure DevOps. Pokud ho nemáte, můžete si ho zdarma zaregistrovat . Každá organizace zahrnuje bezplatná neomezená privátní úložiště Git.
  • Pokud chcete vytvořit nebo importovat úložiště, musíte být členem skupiny zabezpečení Projectu Správa istrátory nebo mít oprávnění k vytvoření úložiště na úrovni projektu Git nastavené na Povolit. Další informace najdete v tématu Nastavení oprávnění úložiště Git.
  • Pokud chcete použít funkci úložiště Import Azure DevOps, musíte mít TFS 2017 Update 1 nebo novější.
  • Pokud chcete importovat úložiště pomocí TFS 2017 RTM nebo starší verze, přečtěte si téma Ruční import úložiště pomocí git CLI.

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 master, 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í.

Import do nového úložiště

  1. Vyberte Úložiště, Soubory.

    Zobrazení větví

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

    Správa úložišť

  3. Pokud je zdrojové úložiště veřejně dostupné, stačí zadat adresu URL klonu zdrojového úložiště a název nového úložiště Git.

    Pokud je zdrojové úložiště soukromé, ale můžete k němu získat přístup pomocí základního ověřování (uživatelské jméno a heslo, token patového přístupu atd.), vyberte Možnost Vyžaduje autorizaci a zadejte svoje přihlašovací údaje. Ověřování SSH se nepodporuje, ale úložiště, které používá ověřování SSH, můžete ručně importovat pomocí postupu v části Ruční import úložiště pomocí git CLI.

    Dialogové okno Importovat úložiště

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í, budete muset zadat přihlašovací údaje.

Import úložiště do existujícího ú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í je možné znovu povolit tak, že přejdete na Nastavení, správu 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 .

Poznámka:

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. Požadavek na import pak bude obsahovat ověřování.
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 do prázdného úložiště Git 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

Funkce úložiště importu byla zavedena v TFS 2017 Update 1. Pokud používáte TFS 2017 RTM nebo starší, můžete ručně importovat úložiště do TFS pomocí následujícího postupu. Tímto postupem můžete také ručně importovat úložiště do úložiště Azure DevOps Services tak, že v následujících krocích nahradíte TFS azure Repos.

  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 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ě pomocí TFS 2017 RTM 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
    

    Upozorňující

    Použití --mirror přepíše všechny větve v cílovém úložišti, včetně odstranění všech větví, které nejsou ve zdrojovém úložišti.

  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ž je import ve většině případů úspěšný, můžou problémy způsobit následující podmínky.

Co když je zdrojové úložiště za dvoufaktorovým ověřováním?

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, jako je GitHub a Azure DevOps Services , podporuje osobní tokeny, které je možné doručovat do služby importu.

Co když zdrojové úložiště nepodporuje multi_ack?

Služba importu používá během importu funkci multi_ack protokolu Git. Pokud zdrojové úložiště tuto funkci neposkytuje, služba importu nemůže importovat z daného zdroje. K tomuto selhání může dojít při vytváření žádosti o import nebo při probíhajícím importu.

Můžu importovat z předchozích verzí Team Foundation Serveru?

Pokud je zdrojové úložiště Git ve verzi TFS starší než TFS 2017 RTM, import se nezdaří. K tomu dochází kvůli neshodě kontraktů mezi nejnovějšími verzemi TFS a Azure DevOps Services/TFS a verzemi TFS před 2017 RTM.

Můžu použít přihlašovací údaje založené na MSA?

Přihlašovací údaje založené na účtu Microsoft (účet Microsoft, dříve Live ID) bohužel nebudou fungovat. 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 nebo heslo, které používáte, nejsou základní ověřování, ověřování selže a import selže. Jedním ze způsobů, jak zkontrolovat, jestli uživatelské jméno nebo heslo, které používáte, jsou základní ověřování nebo ne, je zkusit pomocí Gitu naklonovat úložiště pomocí následujícího formátu.

git clone https://<<username>>:<<password>>@<<remaining clone Url>>

Můžu importovat z TFVC?

Kód můžete migrovat z existujícího úložiště TFVC do nového úložiště Git v rámci stejného účtu. I když migrace na Git má mnoho výhod, jedná se o proces 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ů. Jedná se o rušivý změnu, která vyžaduje pečlivé plánování. Další informace najdete v tématu Import z TFVC do Gitu.

Co když zdrojové úložiště obsahuje objekty Git LFS?

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. Tím se zkopírují všechny objekty Gitu ze zdroje do Azure DevOps (tím se také naimportují ukazatele LFS, které jsou objekty Gitu, ale ne soubory LFS).

Pokud chcete přejít přes soubory LFS (budete potřebovat klienta Git.exe i klienta LFS ve stejném poli a přístup k zdrojovému úložišti i cílovému úložišti).

  • Klonování importovaného úložiště z Azure DevOps do místního systému, klonování bude fungovat, ale při rezervaci souborů LFS selže.
  • Přidejte zdrojové úložiště jako vzdálené (řekněme "source").
  • Proveďte git lfs fetch source --all (tím se přenesou všechny soubory LFS ze zdroje do místního úložiště).
  • Za předpokladu, že cílové úložiště VSTS je vaše cílové vzdálené úložiště
  • Provést git lfs push target --all

Můžu naimportovat aktualizace, pokud se zdroj později změní?

Služba importu slouží k počátečnímu importu celého úložiště. K pozdějšímu zrcadlení změn budete potřebovat místní klon úložiště se vzdálenými soubory nastavenými 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 původním úložištěm jako origin s původním úložištěm.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