Een Git-opslagplaats importeren

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

In dit artikel leest u hoe u een bestaande Git-opslagplaats importeert vanuit GitHub, Bitbucket, GitLab of een andere locatie in een nieuwe of lege bestaande opslagplaats in uw Azure DevOps-project.

Vereisten

  • Een organisatie in Azure DevOps. Als u er nog geen hebt, kunt u zich gratis aanmelden voor een account. Elke organisatie bevat gratis, onbeperkte privé-Git-opslagplaatsen.
  • Als u een opslagplaats wilt maken of importeren, moet u lid zijn van de beveiligingsgroep Project Beheer istrators of moet u de machtiging Opslagplaats maken op Git-projectniveau hebben ingesteld op Toestaan. Zie Machtigingen voor Git-opslagplaatsen instellen voor meer informatie.
  • Als u de azure DevOps Import-opslagplaatsfunctie wilt gebruiken, moet u TFS 2017 Update 1 of hoger hebben.
  • Als u een opslagplaats wilt importeren met TFS 2017 RTM of eerder, raadpleegt u Handmatig een opslagplaats importeren met behulp van git CLI.
  • Als u az repos-opdrachten wilt gebruiken, moet u de stappen volgen in Aan de slag met Azure DevOps CLI.
  • Een organisatie in Azure DevOps. Als u er nog geen hebt, kunt u zich gratis aanmelden voor een account. Elke organisatie bevat gratis, onbeperkte privé-Git-opslagplaatsen.
  • Als u een opslagplaats wilt maken of importeren, moet u lid zijn van de beveiligingsgroep Project Beheer istrators of moet u de machtiging Opslagplaats maken op Git-projectniveau hebben ingesteld op Toestaan. Zie Machtigingen voor Git-opslagplaatsen instellen voor meer informatie.
  • Als u de azure DevOps Import-opslagplaatsfunctie wilt gebruiken, moet u TFS 2017 Update 1 of hoger hebben.
  • Als u een opslagplaats wilt importeren met TFS 2017 RTM of eerder, raadpleegt u Handmatig een opslagplaats importeren met behulp van git CLI.

Notitie

Wanneer het importeren van de opslagplaats is voltooid, stelt Azure DevOps de standaardbranch in voor die geïmporteerde opslagplaats. Als de geïmporteerde opslagplaats een vertakking met de naam masterbevat, wordt deze ingesteld als de standaardbranch, anders wordt de eerste vertakking (in alfabetische volgorde) van de geïmporteerde opslagplaats ingesteld als Standaard.

Importeren in een nieuwe opslagplaats

  1. Selecteer Opslagplaatsen, Bestanden.

    Uw vertakkingen weergeven

  2. Selecteer opslagplaats importeren in de vervolgkeuzelijst voor opslagplaatsen.

    Opslagplaatsen beheren

  3. Als de bronopslagplaats openbaar beschikbaar is, voert u de kloon-URL van de bronopslagplaats en een naam in voor uw nieuwe Git-opslagplaats.

    Als de bronopslagplaats privé is maar toegankelijk is via basisverificatie (gebruikersnaam-wachtwoord, persoonlijk toegangstoken, enzovoort), selecteert u Autorisatie vereist en voert u uw referenties in. SSH-verificatie wordt niet ondersteund, maar u kunt handmatig een opslagplaats importeren die gebruikmaakt van SSH-verificatie door de stappen in Een opslagplaats handmatig te importeren met behulp van git CLI.

    Dialoogvenster Opslagplaats importeren

Importeren in een bestaande lege opslagplaats

Selecteer Importeren op de pagina Bestanden van de lege Git-opslagplaats en voer de kloon-URL in. U moet referenties opgeven als voor de bronopslagplaats verificatie is vereist.

Opslagplaats importeren in een bestaande opslagplaats

Notitie

Met de importfunctie wordt automatische koppeling uitgeschakeld voor werkitems die worden vermeld in een opmerking bij doorvoeren, omdat de werkitem-id's in het doelproject mogelijk niet hetzelfde zijn als de items in het bronproject. Automatisch koppelen voor werkitems die in een doorvoering worden genoemd, kan opnieuw worden ingeschakeld door te navigeren naar Instellingen, versiebeheer, uw opslagplaats te selecteren en Opties te kiezen. Zie Werkitems koppelen aan doorvoeringen voor doorvoeringen voor meer informatie over het koppelen van doorvoeringen aan werkitems

Een opslagplaats handmatig importeren met az repos CLI

U kunt az repos import gebruiken om een opslagplaats te importeren in uw Azure DevOps-project.

Notitie

U moet eerst de opslagplaats maken in Azure DevOps voordat u een Git-opslagplaats kunt importeren. De opslagplaats die u maakt, moet ook leeg zijn. Zie Uw Git-opslagplaats maken in Azure-opslagplaatsen om een opslagplaats te maken.

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

Parameters

Parameter Description
git-source-url Vereist. URL van de git-bronopslagplaats die moet worden geïmporteerd.
detect Optioneel. Organisatie automatisch detecteren. Geaccepteerde waarden: false, true.
git-service-endpoint-id Optioneel. Service-eindpunt voor verbinding met extern eindpunt.
org, organization Url van de Azure DevOps-organisatie. U kunt de standaardorganisatie configureren met behulp van az devops configure -d organization=<ORG_URL>. Vereist indien niet geconfigureerd als standaard of opgehaald via git-configuratie. Voorbeeld: https://dev.azure.com/MyOrganizationName/.
project, p Naam of id van het project. U kunt het standaardproject configureren met behulp van az devops configure -d project=<NAME_OR_ID>. Vereist indien niet geconfigureerd als standaard of opgehaald via git-configuratie.
repository Naam of id van de opslagplaats waarin de importaanvraag moet worden gemaakt.
requires-authorization Vlag om aan te geven of de git-bronopslagplaats privé is. Als u verificatie nodig hebt, genereert u een verificatietoken op de bronopslagplaats en stelt u de omgevingsvariabele AZURE_DEVOPS_EXT_GIT_SOURCE_PASSWORD_OR_PAT in op de waarde van het token. Vervolgens bevat de importaanvraag verificatie.
subscription Naam of id van het abonnement. U kunt het standaardabonnement configureren met behulp van az account set -s <NAME_OR_ID>.
user-name Gebruikersnaam die moet worden opgegeven wanneer de Git-opslagplaats privé is.

Voorbeeld

Met de volgende opdracht importeert u de openbare opslagplaats fabrikam-open-source naar de lege Git-opslagplaats fabrikam-open-source voor de standaardconfiguratie 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"
}

Een opslagplaats handmatig importeren met git CLI

De importopslagplaatsfunctie is geïntroduceerd in TFS 2017 Update 1. Als u TFS 2017 RTM of eerder gebruikt, kunt u de volgende stappen gebruiken om handmatig een opslagplaats te importeren in TFS. U kunt deze stappen ook volgen om handmatig een opslagplaats te importeren in een Azure DevOps Services-opslagplaats door TFS te vervangen door Azure-opslagplaatsen in de volgende stappen.

  1. Kloon de bronopslagplaats naar een tijdelijke map op uw computer met behulp van de bare optie, zoals wordt weergegeven in het volgende opdrachtregelvoorbeeld en navigeer vervolgens naar de map van de opslagplaats. Bij het klonen met behulp van de bare optie bevat de mapnaam het .git achtervoegsel. In dit voorbeeld https://github.com/contoso/old-contoso-repo.git moet de bronopslagplaats handmatig worden geïmporteerd.

    git clone --bare https://github.com/contoso/old-contoso-repo.git
    cd old-contoso-repo.git
    
  2. Maak een doelopslagplaats met TFS 2017 RTM en noteer de kloon-URL. In dit voorbeeld https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo is dit de URL voor de nieuwe doelopslagplaats.

  3. Voer de volgende opdracht uit om de bronopslagplaats naar de doelopslagplaats te kopiëren.

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

    Waarschuwing

    Als --mirror u deze functie gebruikt, worden alle vertakkingen in de doelopslagplaats overschreven, waaronder het verwijderen van vertakkingen die zich niet in de bronopslagplaats bevinden.

  4. Als de bronopslagplaats LFS-objecten bevat, haalt u deze op en kopieert u deze uit de bronopslagplaats naar de doelopslagplaats.

    git lfs fetch origin --all
    git lfs push --all https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo
    
  5. Verwijder de tijdelijke map door de volgende opdrachten uit te voeren.

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

Veelgestelde vragen

Hoewel het importeren meestal is geslaagd, kunnen de volgende voorwaarden problemen veroorzaken.

Wat gebeurt er als mijn bronopslagplaats zich achter tweeledige verificatie bevindt?

De importservice maakt gebruik van REST API's voor het valideren en activeren van importeren en kan niet rechtstreeks werken met opslagplaatsen waarvoor tweeledige verificatie is vereist. De meeste Git-hostingproviders, zoals GitHub en Azure DevOps Services , ondersteunen persoonlijke tokens die kunnen worden geleverd aan de importservice.

Wat gebeurt er als mijn bronopslagplaats geen ondersteuning biedt voor multi_ack?

De importservice maakt gebruik van de multi_ack mogelijkheid van het Git-protocol tijdens het importeren. Als de bronopslagplaats deze mogelijkheid niet biedt, kan de importservice niet importeren uit de opgegeven bron. Deze fout kan optreden bij het maken van een importaanvraag of wanneer het importeren wordt uitgevoerd.

Kan ik importeren uit eerdere versies van Team Foundation Server?

Als de Git-bronopslagplaats een TFS-versie heeft die ouder is dan TFS 2017 RTM, mislukt het importeren. Dit komt doordat een contract niet overeenkomt met de nieuwste Versies van Azure DevOps Services/TFS en pre-2017 RTM-versies van TFS.

Kan ik referenties op basis van MSA gebruiken?

Helaas werken MSA-referenties (Microsoft-account, voorheen Live ID) niet. De importservice is afhankelijk van basisverificatie om te communiceren met de bronopslagplaats. Als de gebruikersnaam/het wachtwoord dat u gebruikt geen basisverificatie zijn, mislukt de verificatie en mislukt het importeren. Eén manier om te controleren of de gebruikersnaam/het wachtwoord die u gebruikt basisverificatie is of niet is om Git te gebruiken om uw opslagplaats te klonen met behulp van de onderstaande indeling

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

Kan ik importeren vanuit TFVC?

U kunt code migreren van een bestaande TFVC-opslagplaats naar een nieuwe Git-opslagplaats binnen hetzelfde account. Hoewel migreren naar Git veel voordelen heeft, is het een betrokken proces voor grote TFVC-opslagplaatsen en -teams. Gecentraliseerde versiebeheersystemen, zoals TFVC, gedragen zich op fundamentele manieren anders dan Git. De switch omvat veel meer dan het leren van nieuwe opdrachten. Het is een verstorende wijziging waarvoor zorgvuldige planning is vereist. Zie Importeren van TFVC naar Git voor meer informatie.

Wat gebeurt er als mijn bronopslagplaats Git LFS-objecten bevat?

Git-import importeert geen Git LFS-objecten.

LFS-objecten kunnen worden verplaatst met behulp van de volgende stappen:

  • Importeer de opslagplaats met behulp van de importopslagplaatsfunctie in Azure DevOps. Hiermee worden alle Git-objecten gekopieerd van bron naar Azure DevOps (hiermee worden ook de LFS-aanwijzers geïmporteerd die Git-objecten zijn, maar niet de LFS-bestanden)

Als u de LFS-bestanden wilt verplaatsen (u hebt zowel Git.exe als de LFS-client in hetzelfde vak nodig en toegang tot zowel de bronopslagplaats als de doelopslagplaats)

  • Kloon de geïmporteerde opslagplaats van Azure DevOps naar het lokale systeem, kloon werkt, maar mislukt tijdens het uitchecken van LFS-bestanden
  • Voeg de bronopslagplaats toe als extern (bijvoorbeeld 'bron')
  • Uitvoeren git lfs fetch source --all (hierdoor worden alle LFS-bestanden van de bron naar uw lokale opslagplaats opgehaald)
  • Ervan uitgaande dat de VSTS-doelopslagplaats uw externe doelopslagplaats is
  • Uitvoeren git lfs push target --all

Kan ik updates importeren als de bron later verandert?

De importservice is bedoeld voor het importeren van een volledige opslagplaats. Als u latere wijzigingen wilt spiegelen, hebt u een lokale kloon van de opslagplaats nodig met externen die zijn ingesteld op zowel de bron als de bestemming.

U kunt wijzigingen synchroniseren met behulp van de volgende opdrachten. We behandelen het importeren van Azure-opslagplaatsen als origin en de oorspronkelijke opslagplaats als 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

Volgende stappen