Git-adattár importálása

Azure DevOps Services | Azure DevOps Server 2020 | 2019 Azure DevOps Server | TFS 2018

Ez a cikk bemutatja, hogyan importálhat egy meglévő Git-adattárat GitHub, Bitbucketből, GitLabből vagy más helyről egy új vagy üres meglévő adattárba az Azure DevOps-projektben.

Fontos

Az adattár importálása funkció jelenleg nem működik, ha TFS 2017.1-et használó GitHub-adattárat importál a TFS 2018.1-be. További információ erről a problémáról: Gyenge titkosítási szabványok eltávolításáról szóló értesítés, és a TLS 1.2 csak változása miatt nem lehet csatlakozni a GitHub

A problémának több kerülő megoldása is van:

  • A GitHub-adattárat a jelen cikk későbbi részében szereplő lépések végrehajtásával importálhatja az Azure Devopsba. Az adattár manuális importálása a Git CLI használatával.

  • Gépi szintű .NET beállításkulcsot állíthat be az alkalmazásréteg-kiszolgálókon, hogy az összes rendelkezésre álló TLS-protokollverziót használhassák. A beállításkulcsok beállítása után újra kell indítania a TFS-alkalmazáskészleteket (vagy újra kell indítania a kiszolgálókat) a beállítások aktiválásához. Nyisson meg egy rendszergazda jogú parancssort, és futtassa a következő parancsokat a beállításkulcsok beállításához.

     reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64
     reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32
    
  • Az alkalmazásréteg-kiszolgálókon módosíthatja a web.config fájlt, hogy a targetFramework elemet <httpRuntime targetFramework="4.5" a következőre <httpRuntime targetFramework="4.6"módosítsa.

Ez a probléma a 2018. Team Foundation Server 2. RC1-től és újabb verziójától kezdve megoldódott.

Előfeltételek

  • Egy szervezet az Azure DevOpsban. Ha még nincs ilyenje, ingyenesen regisztrálhat egyet. Minden szervezet ingyenes, korlátlan privát Git-adattárakat tartalmaz.
  • Adattár létrehozásához vagy importálásához a Project Rendszergazdák biztonsági csoport tagjának kell lennie, vagy engedélyeznie kell a Git projektszintű tárház-létrehozási engedélyt. További információ: Git-adattárengedélyek beállítása.
  • Az Azure DevOps Import-adattár funkció használatához a TFS 2017 1- vagy újabb frissítésével kell rendelkeznie.
  • Ha TFS 2017 RTM vagy korábbi verzió használatával szeretne adattárat importálni, olvassa el a Tárház manuális importálása a Git CLI használatával című témakört.

Importálás új adattárba

  1. Válassza az Adattárak, Fájlok lehetőséget.

    View your branches

  2. Az adattár legördülő menüjében válassza az Adattár importálása lehetőséget.

    Manage repositories

  3. Ha a forrásadattár nyilvánosan elérhető, csak adja meg a forrásadattár klónozott URL-címét és az új Git-adattár nevét.

    Ha a forrásadattár privát, de alapszintű hitelesítéssel (felhasználónév-jelszó, személyes hozzáférési jogkivonat stb.) érhető el, válassza az Engedélyezés szükséges lehetőséget, és adja meg a hitelesítő adatait. Az SSH-hitelesítés nem támogatott, de manuálisan is importálhat SSH-hitelesítést használó adattárat az adattár git parancssori felülettel történő manuális importálásának lépéseit követve.

    Import Repository Dialog

Az adattár legördülő menüjében válassza az Adattár importálása lehetőséget.

Import Repository Option

Ha a forrásadattár nyilvánosan elérhető, csak adja meg a forrásadattár klónozott URL-címét és az új Git-adattár nevét.

Ha a forrásadattár privát, de alapszintű hitelesítéssel (felhasználónév-jelszó, személyes hozzáférési jogkivonat stb.) érhető el, válassza az Engedélyezés szükséges lehetőséget, és adja meg a hitelesítő adatait. Az SSH-hitelesítés nem támogatott, de manuálisan is importálhat SSH-hitelesítést használó adattárat az adattár git parancssori felülettel történő manuális importálásának lépéseit követve.

Import Repository Dialog

Importálás meglévő üres adattárba

Az üres Git-adattár Fájlok lapján válassza az Importálás lehetőséget, és adja meg a klón URL-címét. Ha a forrásadattár hitelesítést igényel, meg kell adnia a hitelesítő adatokat.

Import Repository into an existing repository

Megjegyzés

Az importálási funkció letiltja a véglegesítési megjegyzésben említett munkaelemek automatikus csatolását, mivel előfordulhat, hogy a célprojekt munkaelem-azonosítói nem egyezhetnek meg a forrásprojektben lévőkkel. A véglegesítésben említett munkaelemek automatikus csatolása újra engedélyezhető a Gépház, a Verziókövetés, az adattár kiválasztása és a Beállítások lehetőség kiválasztásával. A véglegesítések munkahelyi elemekkel való összekapcsolásával kapcsolatos további információkért lásd: Munkaelemek csatolása véglegesítésekhez

Adattár manuális importálása az az repos parancssori felülettel

Az az repos import használatával importálhat egy adattárat az Azure DevOps-projektbe.

Megjegyzés

A Git-adattár importálása előtt először létre kell hoznia az adattárat az Azure DevOpsban. Emellett a létrehozott adattárnak üresnek kell lennie. Adattár létrehozásához lásd: Git-adattár létrehozása az Azure-adattárakban.

az repos import create --git-source-url
                       [--detect {false, true}]
                       [--git-service-endpoint-id]
                       [--org]
                       [--project]
                       [--repository]
                       [--requires-authorization]
                       [--subscription]
                       [--user-name]

Paraméterek

Paraméter Leírás
git-source-url Kötelező. Az importálandó forrás git-adattár URL-címe.
detect Választható. Automatikusan észleli a szervezetet. Elfogadott értékek: false, true.
git-service-endpoint-id Választható. Szolgáltatásvégpont a külső végponthoz való csatlakozáshoz.
org, organization Az Azure DevOps-szervezet URL-címe. Az alapértelmezett szervezetet a használatával az devops configure -d organization=<ORG_URL>konfigurálhatja. Kötelező , ha nem alapértelmezettként van konfigurálva, vagy git-konfiguráción keresztül van beállítva. Példa: https://dev.azure.com/MyOrganizationName/.
project, p A projekt neve vagy azonosítója. Az alapértelmezett projektet a használatával az devops configure -d project=<NAME_OR_ID>konfigurálhatja. Kötelező , ha nem alapértelmezettként van konfigurálva, vagy git-konfiguráción keresztül van beállítva.
repository Annak az adattárnak a neve vagy azonosítója, amelyben létre kívánja hozni az importálási kérelmet.
requires-authorization Jelző, amely jelzi, hogy a forrás Git-adattár privát-e. Ha hitelesítésre van szüksége, hozzon létre egy hitelesítési jogkivonatot a forrásadattárban, és állítsa a környezeti változót AZURE_DEVOPS_EXT_GIT_SOURCE_PASSWORD_OR_PAT a jogkivonat értékére. Ezután az importálási kérelem tartalmazza a hitelesítést.
subscription Az előfizetés neve vagy azonosítója. Az alapértelmezett előfizetést a használatával az account set -s <NAME_OR_ID>konfigurálhatja.
user-name A git-adattár privát állapotának megadásához használandó felhasználónév.

Példa

Az alábbi parancs importálja a fabrikam-open-source nyilvános adattárat az alapértelmezett konfigurációhoz az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"tartozó üres Git-adattár fabrikam-open-source eleméhez.

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"
}

Adattár manuális importálása a Git CLI használatával

Az importálási adattár funkció a TFS 2017 1. frissítésében jelent meg. Ha TFS 2017 RTM-et vagy korábbi verziót használ, az alábbi lépésekkel manuálisan importálhat adattárat a TFS-be. Ezeket a lépéseket követve manuálisan is importálhat adattárat egy Azure DevOps Services-adattárba. Ehhez cserélje le a TFS-t az Azure-adattárakra az alábbi lépésekben.

  1. Klónozza a forrásadattárat egy ideiglenes mappába a számítógépen a bare következő parancssori példában látható módon, majd lépjen az adattár mappájába. A beállítással bare történő klónozáskor a mappanév tartalmazza az .git utótagot. Ebben a példában https://github.com/contoso/old-contoso-repo.git ez a manuálisan importálandó forrásadattár.

    git clone --bare https://github.com/contoso/old-contoso-repo.git
    cd old-contoso-repo.git
    
  2. Hozzon létre egy céladattárat a TFS 2017 RTM használatával, és jegyezze fel a klón URL-címét. Ebben a példában https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo az új céladattár URL-címe látható.

  3. Futtassa a következő parancsot a forrásadattár céladattárba másolásához.

    git push --mirror https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo
    

    Figyelmeztetés

    A használat --mirror felülírja a céladattár összes ágát, beleértve a forrásadattárban nem szereplő ágak törlését is.

  4. Ha a forrásadattárban LFS-objektumok vannak, kérje le őket, és másolja őket a forrásadattárból a céltárházba.

    git lfs fetch origin --all
    git lfs push --all https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo
    
  5. Törölje az ideiglenes mappát az alábbi parancsok futtatásával.

    cd ..
    rm -rf old-contoso-repo.git
    

Gyakori kérdések

Bár az importálás többnyire sikeres, az alábbi feltételek problémákat okozhatnak.

Mi a teendő, ha a forrásadattáram kétfaktoros hitelesítés mögött áll?

Az importálási szolgáltatás REST API-kat használ az importálás ellenőrzéséhez és aktiválásához, és nem használható közvetlenül kétfaktoros hitelesítést igénylő adattárakkal. A Legtöbb Git-szolgáltató, például a GitHub és az Azure DevOps Services támogatja az importálási szolgáltatáshoz adható személyes jogkivonatokat.

Mi a teendő, ha a forrásadattár nem támogatja multi_ack?

Az importálási szolgáltatás a Git-protokoll multi_ack képességét használja az importálás során. Ha a forrásadattár nem biztosítja ezt a képességet, az importálási szolgáltatás nem tud importálni az adott forrásból. Ez a hiba akkor fordulhat elő, ha importálási kérelmet hoz létre, vagy amíg az importálás folyamatban van.

Importálhatok a Team Foundation Server korábbi verzióiból?

Ha a forrás Git-adattár a TFS 2017 RTM-nél korábbi TFS-verzióban található, akkor az importálás sikertelen lesz. Ez az Azure DevOps Services/TFS legújabb és a TFS 2017 előtti RTM-verziói közötti szerződéseltérés miatt fordul elő.

Használhatok MSA-alapú hitelesítő adatokat?

Sajnos az MSA(Microsoft-fiók, korábbi nevén Live ID) alapú hitelesítő adatok nem fognak működni. Az importálási szolgáltatás alapszintű hitelesítésre támaszkodik a forrásadattárral való kommunikációhoz. Ha a használt felhasználónév/jelszó nem alapszintű hitelesítés, akkor a hitelesítés sikertelen lesz, és az importálás sikertelen lesz. Az egyik módja annak, hogy ellenőrizze, hogy a használt felhasználónév/jelszó alapszintű-e vagy sem, ha megpróbálja klónozni az adattárat a Git használatával az alábbi formátumban

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

Importálhatok a TFVC-ből?

A kódot áttelepítheti egy meglévő TFVC-adattárból egy új Git-adattárba ugyanabban a fiókban. Bár a Gitre való migrálás számos előnnyel jár, ez egy nagy TFVC-adattárak és csapatok számára készült folyamat. A központosított verziókövetési rendszerek, például a TFVC, alapvető módon viselkednek, mint a Git. A váltás sokkal több, mint az új parancsok elsajátítása. Ez egy zavaró változás, amely gondos tervezést igényel. További információ: Importálás TFVC-ből Gitbe.

Mi történik, ha a forrásadattár git LFS-objektumokat tartalmaz?

A Git-importálás nem importál Git LFS-objektumokat.

Az LFS-objektumok az alábbi lépésekkel helyezhetők át:

  • Importálja az adattárat az Adattár importálása funkcióval az Azure DevOpsba. Ezzel átmásolja az összes Git-objektumot a forrásból az Azure DevOpsba (ez az LFS-mutatókat is importálja, amelyek Git-objektumok, de nem az LFS-fájlok)

Ha át szeretne lépni az LFS-fájlokon (Git.exe és LFS-ügyfélre is szüksége lesz ugyanabban a mezőben, és hozzáféréssel kell rendelkeznie a forrás- és a céladattárhoz is)

  • Klónozza az importált adattárat az Azure DevOpsból a helyi rendszerbe. A klónozás működni fog, de sikertelen lesz az LFS-fájlok kivétele során
  • Adja hozzá a forrásadattárat távoliként (például forrásként)
  • Végrehajtás git lfs fetch source --all (ez az összes LFS-fájlt átviszi a forrásból a helyi tárházba)
  • Feltéve, hogy a cél VSTS-adattár a "cél" távoli
  • Végre git lfs push target --all

Importálhatok frissítéseket, ha a forrás később megváltozik?

Az importálási szolgáltatás egy teljes tárház első importálására szolgál. A későbbi módosítások tükrözéséhez szüksége lesz az adattár helyi klónjára, amely a forrásra és a célra is be van állítva.

A módosításokat az alábbi parancsokkal szinkronizálhatja. Az Azure-adattárak importálását úgy fogjuk kezelni, mint origin az eredeti adattárat upstream.

git clone --bare <Azure-Repos-clone-URL>
cd <name-of-repo>
git remote add --mirror=fetch upstream <original-repo-URL>
git fetch upstream --tags
git push origin --all

Következő lépések