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:32Az 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.
- Ha az repos parancsokat szeretné használni, kövesse az Azure DevOps CLI-vel Első lépések lépéseit.
- 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
Válassza az Adattárak, Fájlok lehetőséget.

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

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.

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

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

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.
Klónozza a forrásadattárat egy ideiglenes mappába a számítógépen a
barekövetkező parancssori példában látható módon, majd lépjen az adattár mappájába. A beállítássalbaretörténő klónozáskor a mappanév tartalmazza az.gitutótagot. Ebben a példábanhttps://github.com/contoso/old-contoso-repo.gitez a manuálisan importálandó forrásadattár.git clone --bare https://github.com/contoso/old-contoso-repo.git cd old-contoso-repo.gitHozzon 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-repoaz új céladattár URL-címe látható.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-repoFigyelmeztetés
A használat
--mirrorfelülírja a céladattár összes ágát, beleértve a forrásadattárban nem szereplő ágak törlését is.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-repoTö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?
- Mi a teendő, ha a forrásadattár nem támogatja multi_ack?
- Importálhatok a Team Foundation Server korábbi verzióiból?
- Használhatok MSA-alapú hitelesítő adatokat?
- Importálhatok a TFVC-ből?
- Mi történik, ha a forrásadattár git LFS-objektumokat tartalmaz?
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