Git deposunu içeri aktar
Azure Repos | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2013
bu kılavuzda, mevcut bir Git deposunun GitHub, bitbucket, GitLab veya diğer bir konumdan Azure DevOps projenizdeki yeni veya boş bir depoya nasıl aktarılacağı gösterilmektedir.
Önemli
tfs 2018,1 ' ye tfs 2017,1 ' i kullanarak bir GitHub deposunu içeri aktarıyorsanız, depoyu içeri aktar özelliği şu anda çalışmıyor. bu sorun hakkında daha fazla bilgi için bkz. zayıf şifreleme standartları kaldırma bildirimi ve yalnızca TLS 1,2 değişiklik nedeniyle GitHub bağlanılamıyor
Bu soruna yönelik birkaç geçici çözüm vardır:
depoyu el ile içeri aktarmabölümündeki adımları kullanarak TFS 'ye GitHub depoyu içeri aktarabilirsiniz.
Tüm kullanılabilir TLS protokolü sürümlerini kullanmasını sağlamak için, uygulama katmanı sunucularınızda makine genelindeki bir .NET kayıt defteri anahtarı ayarlayabilirsiniz. Bu kayıt defteri anahtarlarını ayarladıktan sonra, etkinleştirilecek ayarların etkinleştirilmesi için TFS uygulama havuzlarını (veya sunucuları yeniden başlatmanız) geri yüklemeniz gerekir. Yükseltilmiş bir komut istemi açın ve kayıt defteri anahtarlarını ayarlamak için aşağıdaki komutları çalıştırın.
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:32Uygulama katmanı sunucularınızda, targetFramework 'Ü olarak değiştirmek için web.config dosyasını değiştirebilirsiniz
<httpRuntime targetFramework="4.5"<httpRuntime targetFramework="4.6".
bu sorun Team Foundation Server 2018 güncelleştirme 2 RC1 ve üzeriile başlayarak çözülür.
Önkoşullar
- Azure DevOps bir kuruluş. Bir hesabınız yoksa, ücretsiz olarak kaydolun . Her kuruluş, ücretsiz, sınırsız özel Git depoları içerir.
- TFS 'de Depo Içeri aktarma özelliğini kullanmak için TFS 2017 güncelleştirme 1 veya daha yüksek bir sürüme sahip olmanız gerekir.
- TFS 2017 RTM veya önceki bir sürümünü kullanarak bir depoyu içeri aktarmak için bkz. depoyu el ile içeri aktarma.
Yeni depoya aktar
Repos, dosyalar' ı seçin.

Depo açılır listesinden depoyu Içeri aktar' ı seçin.

Kaynak deposu herkese açık ise, yalnızca kaynak deponun kopya URL 'sini ve yeni git deponuzun adını girmeniz yeterlidir.
Kaynak Depo özel, ancak temel kimlik doğrulaması (Kullanıcı adı-parola, kişisel erişim belirteci vb.) kullanılarak erişilebiliyorsa, Yetkilendirme gerektirir ve kimlik bilgilerinizi girin. SSH kimlik doğrulaması desteklenmez, ancak depoyu el ile içeri aktarmabölümündeki ADıMLARı izleyerek SSH kimlik doğrulaması kullanan bir depoyu el ile içeri aktarabilirsiniz.

Depo açılır listesinden depoyu Içeri aktar' ı seçin.

Kaynak deposu herkese açık ise, yalnızca kaynak deponun kopya URL 'sini ve yeni git deponuzun adını girmeniz yeterlidir.
Kaynak Depo özel, ancak temel kimlik doğrulaması (Kullanıcı adı-parola, kişisel erişim belirteci vb.) kullanılarak erişilebiliyorsa, Yetkilendirme gerektirir ve kimlik bilgilerinizi girin. SSH kimlik doğrulaması desteklenmez, ancak depoyu el ile içeri aktarmabölümündeki ADıMLARı izleyerek SSH kimlik doğrulaması kullanan bir depoyu el ile içeri aktarabilirsiniz.

Mevcut bir boş depoya aktar
Boş git deposunun dosyalar sayfasında içeri aktar ' ı SEÇIN ve kopya URL 'sini girin. Kaynak Depo kimlik doğrulaması gerektiriyorsa kimlik bilgileri sağlamanız gerekir.

Not
İçeri aktarma özelliği, hedef projedeki iş öğesi kimlikleri kaynak projedeki öğelerle aynı olmadığı için, bir COMMIT açıklamasında bahsedilen 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 denetiminegidip deponuzu seçerek ve seçeneklerseçilerek yeniden etkinleştirilebilir. İşlemeleri iş öğeleriyle bağlama hakkında daha fazla bilgi için bkz. iş öğelerini yürütmelere bağlama
Depoyu el ile içeri aktarma
İçeri aktarma depo özelliği TFS 2017 güncelleştirme 1 ' de kullanıma sunulmuştur. TFS 2017 RTM veya daha önceki bir sürümünü 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 depoya 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 kaynak depoyu Bilgisayarınızdaki geçici bir klasöre kopyalayın
bareve ardından deponun klasörüne gidin. Seçeneği kullanılarak kopyalanırkenbare, klasör adı.gitson eki içerir. Bu örnekte,https://github.com/contoso/old-contoso-repo.gitkaynak depo el ile içeri aktarılmalıdır.git clone --bare https://github.com/contoso/old-contoso-repo.git cd old-contoso-repo.gitTFS 2017 RTM 'yi kullanarak bir hedef depo oluşturun ve kopya URL 'sini bir yere getirin. Bu örnekte,
https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repoyeni hedef deponun URL 'sidir.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-repoUyarı
Kullanmak,
--mirrorkaynak depoda olmayan dalları silmeyi de içeren hedef depoda tüm dalların üzerine yazar.Kaynak deposunda LFS nesneleri varsa bunları getirip kaynak deposundan hedef depoya kopyalayın.
git lfs fetch origin --all git lfs push --all https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repoAşağıdaki komutları çalıştırarak geçici klasörü silin.
cd .. rm -rf old-contoso-repo.git
Sık sorulan sorular
İçeri aktarmanın çoğu başarılı olsa da aşağıdaki koşullar soruna neden olabilir.
- Kaynak depom iki öğeli kimlik doğrulamasının arkasındaysa ne olur?
- Kaynak depom multi_ack desteklemiyorsa ne olacak?
- Önceki Team Foundation Server sürümlerinden içeri aktarabilir miyim?
- MSA tabanlı kimlik bilgilerini kullanabilir miyim?
- TFVC 'den içeri aktarabilir miyim?
- Kaynak depomum git LFS nesneleri içeriyorsa ne olacak?
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 'Lerini kullanır ve iki öğeli kimlik doğrulama gerektiren depolarla doğrudan çalışamaz. GitHub ve Azure DevOps Services gibi Git barındırma sağlayıcılarının çoğu içeri aktarma hizmetine sağlanabilecek kişisel belirteçleri destekler.
Kaynak depom multi_ack desteklemiyorsa ne olacak?
İç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ılamıyor olabilir. İçeri aktarma isteği oluştururken veya içeri aktarma işlemi sürerken bu hata oluşabilir.
Önceki Team Foundation Server sürümlerinden içeri aktarabilir miyim?
Kaynak git deposu TFS 2017 RTM 'den önceki bir TFS sürümdeyse içeri aktarma işlemi başarısız olur. bunun nedeni, en son Azure DevOps Services/tfs ve TFS 'nin pre-2017 RTM sürümleri arasındaki bir anlaşma uyumsuzluğu nedeniyle oluşur.
MSA tabanlı kimlik bilgilerini kullanabilir miyim?
Ne yazık ki, MSA (Microsoft hesabı, eski adıyla Live ID) tabanlı kimlik bilgileri çalışmayacak. İçeri aktarma hizmeti, kaynak depoyla iletişim kurmak için temel kimlik doğrulamaya dayanır. Kullandığınız Kullanıcı adı/parola temel kimlik doğrulama 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ı denetetmenin bir yolu, aşağıdaki biçimi kullanarak deponuzu kopyalamak için git kullanmayı denemenin bir yoludur
git clone https://<<username>>:<<password>>@<<remaining clone Url>>
TFVC 'den içeri aktarabilir miyim?
Mevcut bir TFVC deposundan kodu aynı hesap içinde yeni bir git deposuna geçirebilirsiniz. Git 'e geçiş birçok avantaj sağlarken, büyük TFVC depoları ve takımlar için ilgili bir işlemdir. TFVC gibi merkezi sürüm denetim sistemleri, git 'ten temel yollarla farklı davranır. Anahtar öğrenimi yeni komutları çok daha fazlasını içerir. Dikkatli bir planlama gerektiren, kesintiye uğratan bir değişiklik. Daha fazla bilgi için bkz. TFVC 'Den git 'e aktarma.
Kaynak depomum git LFS nesneleri içeriyorsa ne olacak?
Git içeri aktarma git LFS nesnelerini içeri aktarmaz.
LFS nesneleri aşağıdaki adımlar kullanılarak taşınabilir:
- Depoyu içeri aktar özelliğini kullanarak depoyu içeri aktarın Azure DevOps. bu işlem, tüm git nesneleri kaynağından Azure DevOps üzerine kopyalanır (bu işlem, git nesneleri olan ancak lfs dosyaları olmayan lfs işaretçilerini de içeri aktarır)
LFS dosyalarını (hem Git.exe hem de LFS istemcisine aynı kutuda ve hem kaynak depoya hem de hedef depoya erişmeniz gerekir)
- içeri aktarılan depoyu Azure DevOps ' den yerel sisteme kopyala, kopyalama çalışır ancak lfs dosyalarının kullanıma alınması gerçekleştirilirken başarısız olur
- Kaynak depoyu uzak olarak ekleme (' kaynak ' deyin)
- Gerçekleştir
git lfs fetch source --all(Bu, tüm LFS dosyalarını kaynaktan yerel deponuza getirir) - Hedef VSTS deposunun ' Target ' uzak olduğu varsayılıyor
- Gerçekleştirirken
git lfs push target --all
Kaynak daha sonra değişirse güncelleştirmeleri içeri aktarabilir miyim?
İçeri aktarma hizmeti ilk olarak bir deponun tamamını içeri aktarmakta. Daha sonra yapılan değişiklikleri yansıtmak için, uzak depolarla hem kaynak hem de hedef olarak ayarlanmış bir deponun yerel kopyasına sahip olmanız gerekir.
Aşağıdaki komutları kullanarak değişiklikleri eşitleyebilirsiniz.
Azure Repos içeri aktarmayı origin ve özgün depoyu olarak değerlendireceğiz 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