Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
Categorie | Vereisten |
---|---|
Toegang tot het project | Lid van een project. |
toestemmingen | - Code weergeven in privéprojecten: ten minste Basic toegang. - Klonen of bijdragen aan code in privéprojecten: Lid van de Inzenders beveiligingsgroep of bijbehorende machtigingen in het project. - Machtigingen voor tak of opslagplaats instellen: Machtigingen beheren machtigingen voor de tak of opslagplaats. - Standaardtak wijzigen: beleid bewerken machtigingen voor de opslagplaats. - Een opslagplaats importeren: Lid van de Projectbeheerders beveiligingsgroep of Git-projectniveau Opslagplaats maken machtiging ingesteld op Toestaan. Zie Machtigingen voor Git-opslagplaatsen instellen voor meer informatie. |
Services | Repositories ingeschakeld. |
Gereedschappen | Optioneel. Gebruik az repos opdrachten: Azure DevOps CLI. |
Notitie
In openbare projecten hebben gebruikers met Stakeholder volledige toegang tot Azure Repos, waaronder het weergeven, klonen en bijdragen aan code.
Categorie | Vereisten |
---|---|
Toegang tot het project | Lid van een project. |
toestemmingen | - Code weergeven: ten minste Basis toegang. - Klonen of bijdragen aan code: Lid van de beveiligingsgroep Contributors of bijbehorende machtigingen in het project. |
Services | Repositories ingeschakeld. |
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 main
bevat, 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
Selecteer Repos, Files.
Selecteer in de vervolgkeuzelijst de optie Opslagplaats importeren.
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.
::: moniker-end
Importeren in een bestaande lege opslagplaats
Selecteer Importeren op de pagina Bestanden van de lege Git-opslagplaats en voer de kloon-URL in. Geef referenties op als voor de bronopslagplaats verificatie is vereist.
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 worden vermeld in een commit, kan opnieuw worden ingeschakeld door te navigeren naar Instellingen, Versiebeheer, uw opslagplaats te selecteren en Opties te kiezen. Zie Werkitems koppelen aan committeringen voor meer informatie over het koppelen van committeringen 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 | Beschrijving |
---|---|
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 de update 1 van 2017. 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.
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 debare
optie bevat de mapnaam het.git
achtervoegsel. In dit voorbeeldhttps://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
Maak een doelopslagplaats 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.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
Gebruik van
--mirror
overschrijft alle vertakkingen in de doelrepository, waarbij ook vertakkingen worden verwijderd die zich niet in de bronrepository bevinden.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
Verwijder de tijdelijke map door de volgende opdrachten uit te voeren.
cd .. rm -rf old-contoso-repo.git
Veelgestelde vragen (FAQ's)
Hoewel de invoer het vaakst succesvol is, kunnen de volgende voorwaarden problemen veroorzaken.
- Wat gebeurt er als mijn bronopslagplaats zich achter tweeledige verificatie bevindt?
- Wat gebeurt er als mijn bronopslagplaats geen ondersteuning biedt voor multi_ack?
- Kan ik importeren uit eerdere versies van Team Foundation Server?
- Kan ik referenties op basis van MSA gebruiken?
- Kan ik importeren vanuit TFVC?
- Wat gebeurt er als mijn bronopslagplaats Git LFS-objecten bevat?
V: Wat gebeurt er als mijn bronopslagplaats zich achter tweeledige verificatie bevindt?
A: 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.
V: Wat gebeurt er als mijn bronopslagplaats geen ondersteuning biedt voor multi_ack?
A: 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.
V: Kan ik importeren uit eerdere versies?
A: Als de Git-bronopslagplaats zich in een TFS-versie bevindt die ouder is dan TFS 2017 RTM, mislukt het importeren. Dit gebeurt vanwege een overeenkomst die niet overeenkomt met de nieuwste Azure DevOps en eerdere versies.
V: Kan ik referentiegegevens op basis van MSA gebruiken?
A: 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 het importeren. Een manier om te controleren of de gebruikersnaam/het wachtwoord dat u gebruikt basisverificatie betreft of niet, is om Git te gebruiken om uw repository te klonen met behulp van het volgende formaat.
git clone https://<<username>>:<<password>>@<<remaining clone Url>>
V: Kan ik importeren vanuit TFVC?
A: U kunt code migreren van een bestaande TFVC-opslagplaats naar een nieuwe Git-opslagplaats binnen hetzelfde account. Hoewel migratie 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 overstap omvat veel meer dan het leren van nieuwe commando's. Het is een verstorende wijziging waarvoor zorgvuldige planning is vereist. Zie Importeren van TFVC naar Git voor meer informatie.
V: Wat gebeurt er als mijn bronopslagplaats Git LFS-objecten bevat?
A: 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. Met deze actie worden alle Git-objecten gekopieerd van bron naar Azure DevOps, waarmee ook de LFS-pointers worden geïmporteerd die Git-objecten zijn, maar niet de LFS-bestanden
Als u de LFS-bestanden wilt verplaatsen, hebt u zowel Git.exe als 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. Klonen werkt, maar het mislukt tijdens het uitchecken van LFS-bestanden
- Voeg de bronopslagplaats toe als extern, bijvoorbeeld 'bron'
- Uitvoeren
git lfs fetch source --all
, die alle LFS-bestanden van de bron naar uw lokale opslagplaats brengt - Ervan uitgaande dat de VSTS-doelopslagplaats uw externe doelopslagplaats is
- Uitvoeren
git lfs push target --all
V: Kan ik updates importeren als de bron later verandert?
A: De importservice is bedoeld voor het aanvankelijk importeren van een hele opslagplaats. Als u latere wijzigingen wilt spiegelen, hebt u een lokale kloon van de opslagplaats nodig met externe instellingen 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