Git deposunu içeri aktarma
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
- Azure DevOps'ta bir kuruluş. Aboneliğiniz yoksa ücretsiz olarak kaydolabilirsiniz. Her kuruluş ücretsiz ve sınırsız özel Git depoları içerir.
- Depo oluşturmak veya içeri aktarmak için Proje Yöneticileri güvenlik grubunun üyesi olmanız veya Git proje düzeyinde Depo oluşturma izninin İzin Ver olarak ayarlanmış olması gerekir. Daha fazla bilgi için bkz . Git deposu izinlerini ayarlama.
- Azure DevOps İçeri Aktarma depo özelliğini kullanmak için TFS 2017 Güncelleştirme 1 veya üzeri sürümüne sahip olmanız gerekir.
- TFS 2017 RTM veya önceki bir sürümünü kullanarak depo içeri aktarmak için bkz . Git CLI kullanarak depoları el ile içeri aktarma.
- az repos komutlarını kullanmak istiyorsanız Azure DevOps CLI'yı kullanmaya başlama başlığındaki adımları izlediğinizden emin olun.
- Azure DevOps'ta bir kuruluş. Aboneliğiniz yoksa ücretsiz olarak kaydolabilirsiniz. Her kuruluş ücretsiz ve sınırsız özel Git depoları içerir.
- Depo oluşturmak veya içeri aktarmak için Proje Yöneticileri güvenlik grubunun üyesi olmanız veya Git proje düzeyinde Depo oluşturma izninin İzin Ver olarak ayarlanmış olması gerekir. Daha fazla bilgi için bkz . Git deposu izinlerini ayarlama.
- Azure DevOps İçeri Aktarma depo özelliğini kullanmak için TFS 2017 Güncelleştirme 1 veya üzeri sürümüne sahip olmanız gerekir.
- TFS 2017 RTM veya önceki bir sürümünü kullanarak depo içeri aktarmak için bkz . Git CLI kullanarak depoları el ile içeri aktarma.
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ı master
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.
Yeni bir depoya aktarma
Depolar, Dosyalar'ı seçin.
Depo açılan listesinden Depoyu içeri aktar'ı seçin.
Kaynak depo genel kullanıma açıksa, kaynak deponun kopya URL'sini ve yeni Git deponuz için bir ad girmeniz yeter.
Kaynak depo özelse ancak temel kimlik doğrulaması (kullanıcı adı-parola, kişisel erişim belirteci vb.) kullanılarak erişilebilirse Yetkilendirme gerektirir'i seçin ve kimlik bilgilerinizi girin. SSH kimlik doğrulaması desteklenmez, ancak git CLI kullanarak depoyu el ile içeri aktarma başlığı altında yer alan adımları izleyerek SSH kimlik doğrulaması kullanan bir depoyu el ile içeri aktarabilirsiniz.
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ğlamanız gerekir.
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.
Not
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. kullanarak varsayılan kuruluşu az devops configure -d organization=<ORG_URL> yapılandırabilirsiniz. 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. kullanarak varsayılan projeyi az devops configure -d project=<NAME_OR_ID> 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. 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 fabrikam-open-source ortak deposunu varsayılan yapılandırma az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"
için fabrikam-open-source boş Git deposuna 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
İçeri aktarma deposu özelliği TFS 2017 Güncelleştirme 1'de sunulmuştur. TFS 2017 RTM veya önceki bir sürüm kullanıyorsanız, bir depoyu TFS'ye el ile içeri aktarmak için aşağıdaki adımları kullanabilirsiniz. Aşağıdaki adımlarda TFS'yi Azure Repos ile değiştirerek bir depoyu Azure DevOps Services deposuna el ile içeri aktarmak için de bu adımları izleyebilirsiniz.
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. seçeneğini kullanarakbare
kopyalama yaparken, klasör adı son eki içerir.git
. 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
TFS 2017 RTM kullanarak 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
çoğu zaman içeri aktarma başarılı olsa da, aşağıdaki koşullar sorunlara neden olabilir.
- Kaynak depom iki öğeli kimlik doğrulamasının arkasındaysa ne olur?
- Kaynak depom multi_ack desteklemiyorsa ne olur?
- Team Foundation Server'ın önceki sürümlerinden 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 öğeli kimlik doğrulamasının arkasındaysa ne olur?
İçeri aktarma hizmeti, içeri aktarmayı doğrulamak ve tetiklemek için REST API'leri kullanır ve iki öğeli kimlik doğrulaması gerektiren depolarla doğrudan çalışamaz. GitHub ve Azure DevOps Services gibi çoğu Git barındırma sağlayıcısı, içeri aktarma hizmetine sağlanabilen kişisel belirteçleri destekler.
Kaynak depom multi_ack desteklemiyorsa ne olur?
İç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 verilen kaynaktan içeri aktarılamaz. İçeri aktarma isteği oluşturulurken veya içeri aktarma işlemi devam ederken bu hata oluşabilir.
Team Foundation Server'ın önceki sürümlerinden içeri aktarabilir miyim?
Kaynak Git deposu TFS 2017 RTM'den önceki bir TFS sürümündeyse içeri aktarma başarısız olur. Bunun nedeni, en son Azure DevOps Services/TFS ile TFS'nin 2017 öncesi RTM sürümleri arasındaki sözleşme uyuşmazlığıdır.
MSA tabanlı kimlik bilgilerini kullanabilir miyim?
Ne yazık ki MSA (Microsoft Hesabı, eski adı Live ID) tabanlı kimlik bilgileri çalışmaz. İçeri aktarma hizmeti, kaynak depoyla iletişim kurmak için temel kimlik doğrulamasına dayanır. Kullandığınız kullanıcı adı /parola temel kimlik doğrulaması değilse kimlik doğrulaması başarısız olur 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>>
TFVC'den içeri aktarabilir miyim?
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 dahil olan bir süreçtir. TFVC gibi merkezi sürüm denetim sistemleri temel yollarla Git'ten farklı davranır. Anahtar, 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.
Kaynak depom Git LFS nesneleri içeriyorsa ne olur?
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 işlem, kaynaktan Azure DevOps'a tüm Git nesnelerinin üzerine kopyalanır (bu, Git nesneleri olan ancak LFS dosyaları olmayan LFS işaretçilerini de içeri aktarır)
LFS dosyaları üzerinde hareket etmek 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, kopya çalışır ancak LFS dosyalarını kullanıma alma işlemi gerçekleştirilirken başarısız olur
- Kaynak depoyu uzak olarak ekleyin (örneğin, 'kaynak')
- Gerçekleştir
git lfs fetch source --all
(bu işlem kaynaktan yerel deponuza tüm LFS dosyalarını getirir) - Hedef VSTS deposunun 'hedef' uzak deponuz olduğunu varsayarsak
- Oynamak
git lfs push target --all
Kaynak daha sonra değişirse güncelleştirmeleri içeri aktarabilir miyim?
İçeri aktarma hizmeti başlangıçta bir deponun tamamını içeri aktarmaya yöneliktir. Daha sonraki 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çeri aktarma işlemini olarak ve özgün depoyu olarak origin
upstream
ele alacağız.
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