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 Project Yönetici istrators güvenlik grubunun üyesi olmanız veya Git proje düzeyinde Depo oluşturma izninin İzin Ver olarak ayarlanması gerekir. Daha fazla bilgi edinmek 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 Project Yönetici istrators güvenlik grubunun üyesi olmanız veya Git proje düzeyinde Depo oluşturma izninin İzin Ver olarak ayarlanması gerekir. Daha fazla bilgi edinmek 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ı masterbir 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

  1. Depolar, Dosyalar'ı seçin.

    Dallarınızı görüntüleme

  2. Depo açılan listesinden Depoyu içeri aktar'ı seçin.

    Depoları yönetme

  3. 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.

    Depo İçeri Aktar İletişim Kutusu

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.

Depo'yu mevcut bir depoya aktarma

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.

  1. 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 kullanarak bare 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
    
  2. 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.

  3. 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.

  4. 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
    
  5. 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?

İç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
  • Gerçekleştirmek 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 originupstreamele 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

Sonraki adımlar