Aracılığıyla paylaş


Git deposunu projeye 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

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ı mainbir 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.

  1. Tarayıcınızda, kuruluşunuzda oturum açın ve Repo'ları>Dosyaları seçin.

    Dalların görünümünü gösteren ekran görüntüsü.

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

    Depoları yönet ekranını gösteren ekran görüntüsü.

  3. Kaynak deponun kopya URL'sini ve yeni Git deponuz için bir ad girin.

Kamuya açık örnek depo URL'sini içeren Depo Aktar İletişim Kutusunu gösteren ekran görüntüsü.

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

Ekran görüntüsü, bir depoyu mevcut bir depoya içeri aktarmayı gösteriyor.

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

  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. 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
    
  2. 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 (SSS)

İçeri aktarma işlemleri en çok başarılı olsa da, aşağıdaki koşullar sorunlara neden olabilir.

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

Sonraki adımlar