Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Bu makalede GitHub, Bitbucket, GitLab veya başka bir konumdaki mevcut git deposunu Azure DevOps projenizdeki yeni veya boş bir depoya nasıl aktarabileceğiniz gösterilmektedir.
Önkoşullar
Kategori | Gereksinimler |
---|---|
Proje erişimi | projesiüyesi. |
İzinler | - Özel projelerde kodu görüntüleme: En az Temel erişimi. - Özel projelerde kodu klonlama veya katkıda bulunma: Projede Katkıda Bulunanlar güvenlik grubuna üyelik veya ilgili izinler. - Dal veya depo izinlerini ayarlayın: izinleri yönetin dal veya depo için. - Varsayılan dalı değiştir: Depo için politika izinlerini düzenleyin. - Depoyu içeri aktarma: Proje Yöneticileri güvenlik grubunun üyesi veya Git proje düzeyi Depo oluşturma izni İzin verolarak ayarlanmıştır. Daha fazla bilgi için bkz . Git deposu izinlerini ayarlama. |
Hizmetler | Repo'lar etkinleştirildi. |
Araçlar | isteğe bağlı. az repos komutlarını kullanın: Azure DevOps CLI. |
Not
Genel projelerde, Paydaş erişimi olan kullanıcılar, kod görüntüleme, kopyalama ve koda katkıda bulunma dahil olmak üzere Azure Depolarına tam erişime sahiptir.
Kategori | Gereksinimler |
---|---|
Proje erişimi | projesiüyesi. |
İzinler | - Kodu görüntüle: En az Temel erişim. - Kodun bir kopyasını oluşturma veya koda katkıda bulunma: Katkıda Bulunanlar güvenlik grubunun üyesi veya projedeki ilgili izinlere sahip olma. |
Hizmetler | Repo'lar etkinleştirildi. |
Yeni bir depoya aktarma
Yeni bir depoya aktarmak için aşağıdaki adımları uygulayın:
Not
Deponun içeri aktarılması tamamlandığında, Azure DevOps içeri aktarılan depo için Varsayılan dalı ayarlar. İçeri aktarılan depo adlı main
bir dal içeriyorsa, varsayılan dal olarak ayarlanır, aksi takdirde içeri aktarılan deponun ilk dalı (alfabetik sırada) Varsayılan olarak ayarlanır.
Tarayıcınızda, kuruluşunuzda oturum açın ve Repo'ları>Dosyaları seçin.
Depo açılan listesinden Depoyu içeri aktar'ı seçin.
Kaynak deponun kopya URL'sini ve yeni Git deponuz için bir ad girin.
- Bir depoyu içe aktar'ı seçin.
Repo içeri aktarılır.
Mevcut boş bir depoya aktarma
Boş Git deposunun Dosyalar sayfasında İçeri Aktar'ı seçin ve kopya URL'sini girin. Kaynak depo kimlik doğrulaması gerektiriyorsa kimlik bilgilerini sağlayın.
Not
İçeri aktarma özelliği, hedef projedeki iş öğesi kimlikleri kaynak projedekilerle aynı olmayabileceği için işleme açıklamasında belirtilen iş öğeleri için otomatik bağlamayı devre dışı bırakır. Bir işlemede bahsedilen iş öğeleri için otomatik bağlama, Ayarlar, Sürüm Denetimi'ne gidip deponuzu seçip Seçenekler'i seçerek yeniden etkinleştirilebilir. İşlemeleri iş öğeleriyle bağlama hakkında daha fazla bilgi için bkz . İş öğelerini işlemelere bağlama
Az repos CLI kullanarak depoları el ile içeri aktarma
Azure DevOps projenize depo içeri aktarmak için az repos import komutunu kullanabilirsiniz.
Git deposunu içeri aktarabilmeniz için önce Azure DevOps'ta depoyu oluşturmanız gerekir. Ayrıca, oluşturduğunuz depo boş olmalıdır. Depo oluşturmak için bkz . Azure Repos'ta Git deponuzu oluşturma.
az repos import create --git-source-url
[--detect {false, true}]
[--git-service-endpoint-id]
[--org]
[--project]
[--repository]
[--requires-authorization]
[--subscription]
[--user-name]
Parametreler
Parametre | Açıklama |
---|---|
git-source-url |
Gerekli. İçeri aktarılacağınız kaynak git deposunun URL'si. |
detect |
isteğe bağlı. Kuruluşu otomatik olarak algılayın. Kabul edilen değerler: false , true . |
git-service-endpoint-id |
isteğe bağlı. Dış uç noktaya bağlantı için Hizmet Uç Noktası. |
org , organization |
Azure DevOps kuruluş URL'si. Varsayılan kuruluşu yapılandırmak için az devops configure -d organization=<ORG_URL> kullanabilirsiniz.
Varsayılan olarak yapılandırılmadıysa veya git yapılandırması aracılığıyla alınmadıysa gereklidir . Örnek: https://dev.azure.com/MyOrganizationName/ . |
project , p |
Projenin adı veya kimliği. Varsayılan projeyi, az devops configure -d project=<NAME_OR_ID> kullanarak yapılandırabilirsiniz.
Varsayılan olarak yapılandırılmadıysa veya git yapılandırması aracılığıyla alınmadıysa gereklidir . |
repository |
İçeri aktarma isteğinin oluşturulacağı deponun adı veya kimliği. |
requires-authorization |
Kaynak git deposunun özel olup olmadığını belirten bayrak. Kimlik doğrulaması gerekiyorsa, kaynak depoda bir kimlik doğrulama belirteci oluşturun ve ortam değişkenini AZURE_DEVOPS_EXT_GIT_SOURCE_PASSWORD_OR_PAT belirtecin değerine ayarlayın. Gelişmiş güvenlik için mümkün olduğunda Microsoft Entra ID belirteçlerini kullanmanızı öneririz. Ardından içeri aktarma isteği kimlik doğrulamasını içerir. |
subscription |
Aboneliğin adı veya kimliği. kullanarak az account set -s <NAME_OR_ID> varsayılan aboneliği yapılandırabilirsiniz. |
user-name |
Git deposunun ne zaman özel olduğunu belirtmek için kullanıcı adı. |
Örnek
Aşağıdaki komut, varsayılan yapılandırma için fabrikam-open-source boş Git deposuna fabrikam-open-source ortak deposunu içeri aktarır.
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"
}
Git CLI kullanarak depoları el ile içeri aktarma
Aşağıdaki komut satırı örneğinde gösterildiği gibi seçeneğini kullanarak
bare
kaynak depoyu bilgisayarınızdaki geçici bir klasöre kopyalayın ve ardından deponun klasörüne gidin.bare
seçeneğini kullanarak kopyalama yapıldığında, klasör adı.git
son ekini içerir. Bu örnekte,https://github.com/contoso/old-contoso-repo.git
el ile içeri aktarılacak kaynak depodur.git clone --bare https://github.com/contoso/old-contoso-repo.git cd old-contoso-repo.git
Bir hedef depo oluşturun ve kopya URL'sini not edin. Bu örnekte,
https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo
yeni hedef deponun URL'si verilmiştir.Kaynak depoyu hedef depoya kopyalamak için aşağıdaki komutu çalıştırın.
git push --mirror https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo
Uyarı
kullanıldığında
--mirror
hedef depodaki tüm dalların üzerine yazılır ve bu da kaynak depoda olmayan dalların silinmesini içerir.Kaynak depoda LFS nesneleri varsa, bunları getirin ve kaynak depodan hedef depoya kopyalayın.
git lfs fetch origin --all git lfs push --all https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo
Aşağıdaki komutları çalıştırarak geçici klasörü silin.
cd .. rm -rf old-contoso-repo.git
Sık sorulan sorular (SSS)
İçeri aktarma işlemleri en çok başarılı olsa da, aşağıdaki koşullar sorunlara neden olabilir.
- Kaynak depom çift faktörlü kimlik doğrulamanın arkasındaysa ne olur?
- Kaynak depom multi_ack'i desteklemiyorsa ne olur?
- Önceki şirket içi sürümlerden içeri aktarabilir miyim?
- MSA tabanlı kimlik bilgilerini kullanabilir miyim?
- TFVC'den içeri aktarabilir miyim?
- Kaynak depom Git LFS nesneleri içeriyorsa ne olur?
Kaynak depom iki faktörlü kimlik doğrulamanın arkasındaysa ne olur?
Y: İçeri aktarma hizmeti, içeri aktarmayı doğrulamak ve tetiklemek için REST API'lerini kullanır ve iki öğeli kimlik doğrulaması gerektiren depolarla doğrudan çalışamaz.
Git barındırma sağlayıcılarının çoğu, içeri aktarma hizmetine sağlanabilen kimlik doğrulama belirteçlerini destekler:
Microsoft Entra Id belirteçleri (önerilen): Microsoft Entra ID belirteçleri daha iyi güvenlik sağlar ve önerilen kimlik doğrulama yöntemidir. Bu belirteçleri şu şekilde elde edebilirsiniz:
Azure CLI (geliştirme/test için):
az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv
Hizmet Sorumlusu (üretim/otomatik senaryolar için):
- Microsoft Entra ID'de bir uygulama kaydetme
- Uygulama için istemci sırrı oluşturma
- Azure DevOps'ta uygulamaya uygun izinleri verme
- Belirteçleri program aracılığıyla almak için hizmet sorumlusu kimlik bilgilerini kullanın
Kişisel Erişim Belirteçleri (alternatif):GitHub ve Azure DevOps kişisel erişim belirteçlerini de destekler.
Kaynak depom multi_ack'i desteklemiyorsa ne olur?
Y: İçeri aktarma hizmeti, içeri aktarma sırasında Git protokolünün multi_ack özelliğini kullanır. Kaynak depo bu özelliği sağlamıyorsa, içeri aktarma hizmeti belirtilen kaynaktan veri aktarmada başarısız olabilir. İçeri aktarma isteği oluşturulurken veya içeri aktarma işlemi devam ederken bu hata oluşabilir.
S: Önceki sürümlerden içeri aktarabilir miyim?
Y: Kaynak Git deposu 2017 RTM'den önceki bir şirket içi sürümdeyse, en son Azure DevOps ile önceki sürümler arasındaki sözleşme uyuşmazlığı nedeniyle içeri aktarma başarısız olur.
S: MSA tabanlı kimlik bilgilerini kullanabilir miyim?
Y: Ne yazık ki MSA (Microsoft Hesabı) tabanlı kimlik bilgileri çalışmıyor. İçeri aktarma hizmeti, kaynak depoyla iletişim kurmak için temel kimlik doğrulamasına dayanır. Kullandığınız kullanıcı adı ve parola temel kimlik doğrulaması değilse kimlik doğrulaması ve içeri aktarma başarısız olur. Kullandığınız kullanıcı adı /parolanın temel kimlik doğrulaması olup olmadığını denetlemenin bir yolu, aşağıdaki biçimi kullanarak deponuzu kopyalamak için Git'i kullanmayı denemektir:
git clone https://<<username>>:<<password>>@<<remaining clone Url>>
S: TFVC'den içeri aktarabilir miyim?
Y: Kodu mevcut bir TFVC deposundan aynı hesaptaki yeni bir Git deposuna geçirebilirsiniz. Git'e geçişin birçok avantajı olsa da, büyük TFVC depoları ve ekipleri için karmaşık bir süreçtir. TFVC gibi merkezi sürüm denetim sistemleri temel yollarla Git'ten farklı davranır. Geçiş, yeni komutları öğrenmekten çok daha fazlasını içerir. Dikkatli bir planlama gerektiren kesintiye neden olan bir değişikliktir. Daha fazla bilgi için bkz . TFVC'den Git'e aktarma.
S: Kaynak depom Git LFS nesneleri içeriyorsa ne olur?
Y: Git içeri aktarma işlemi Git LFS nesnelerini içeri aktarmaz.
LFS nesneleri aşağıdaki adımlar kullanılarak taşınabilir:
- Depoyu içeri aktarma özelliğini kullanarak depoyu Azure DevOps'a aktarın. Bu eylem, kaynaktan Azure DevOps'a tüm Git nesnelerini kopyalar ve bu da Git nesneleri olan LFS işaretçilerini içeri aktarır ancak LFS dosyalarını içeri aktarmaz
LFS dosyalarını taşımak için aynı kutuda hem Git.exe hem de LFS istemcisine ve hem kaynak depoya hem de hedef depoya erişmeniz gerekir
- İçeri aktarılan depoyu Azure DevOps'tan yerel sisteme kopyalayın. Kopyalama çalışır, ancak LFS dosyalarını kullanıma alma işlemi gerçekleştirilirken başarısız olur
- Kaynak depoyu uzaktan ekleyin; örneğin, "kaynak"
- Yerel deponuza kaynaktan tüm LFS dosyalarını getiren
git lfs fetch source --all
komutunu gerçekleştirin. - Hedef VSTS deposunun "hedef" uzak deponuz olduğunu varsayarsak
- Gerçekleştir
git lfs push target --all
S: Kaynak daha sonra değişirse güncelleştirmeleri içeri aktarabilir miyim?
Y: İçeri aktarma hizmeti başlangıçta deponun tamamını içeri aktarmaya yöneliktir. Daha sonra yapılan değişiklikleri yansıtmak için, deponun hem kaynak hem de hedef olarak ayarlanmış uzaktan erişimli yerel bir kopyasına ihtiyacınız vardır.
Aşağıdaki komutları kullanarak değişiklikleri eşitleyebilirsiniz.
Azure Repos içe aktarma işlemini origin
olarak ve özgün depoyu upstream
olarak ele alıyoruz.
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