Mengimpor repositori Git

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Artikel ini memperlihatkan kepada Anda cara mengimpor repositori Git yang ada dari GitHub, Bitbucket, GitLab, atau lokasi lain ke dalam repositori baru atau kosong yang ada di proyek Azure DevOps Anda.

Prasyarat

  • Organisasi di Azure DevOps. Jika Anda tidak memilikinya, Anda dapat mendaftar secara gratis. Setiap organisasi mencakup repositori Git privat gratis dan tidak terbatas.
  • Untuk membuat atau mengimpor repositori, Anda harus menjadi anggota grup keamanan Administrator Proyek, atau mengatur izin Buat repositori tingkat proyek Git ke Izinkan. Untuk mempelajari selengkapnya, lihat Mengatur izin repositori Git.
  • Untuk menggunakan fitur repositori Impor Azure DevOps, Anda harus memiliki TFS 2017 Update 1 atau yang lebih tinggi.
  • Untuk mengimpor repositori menggunakan TFS 2017 RTM atau yang lebih lama, lihat Mengimpor repositori secara manual menggunakan git CLI.
  • Jika Anda ingin menggunakan perintah az repos , pastikan untuk mengikuti langkah-langkah di Mulai menggunakan Azure DevOps CLI.
  • Organisasi di Azure DevOps. Jika Anda tidak memilikinya, Anda dapat mendaftar secara gratis. Setiap organisasi mencakup repositori Git privat gratis dan tidak terbatas.
  • Untuk membuat atau mengimpor repositori, Anda harus menjadi anggota grup keamanan Administrator Proyek, atau mengatur izin Buat repositori tingkat proyek Git ke Izinkan. Untuk mempelajari selengkapnya, lihat Mengatur izin repositori Git.
  • Untuk menggunakan fitur repositori Impor Azure DevOps, Anda harus memiliki TFS 2017 Update 1 atau yang lebih tinggi.
  • Untuk mengimpor repositori menggunakan TFS 2017 RTM atau yang lebih lama, lihat Mengimpor repositori secara manual menggunakan git CLI.

Catatan

Ketika impor repositori selesai, Azure DevOps mengatur cabang Default untuk repositori yang diimpor tersebut. Jika repositori yang diimpor berisi cabang bernama master, repositori diatur sebagai cabang default, jika tidak, cabang pertama (dalam urutan alfabet) dari repositori yang diimpor diatur sebagai Default.

Mengimpor ke repositori baru

  1. Pilih Repos, File.

    Lihat cabang Anda

  2. Dari menu drop-down repositori, pilih Impor repositori.

    Mengelola repositori

  3. Jika repositori sumber tersedia untuk umum, cukup masukkan URL kloning repositori sumber dan nama untuk repositori Git baru Anda.

    Jika repositori sumber bersifat privat tetapi dapat diakses menggunakan autentikasi dasar (nama pengguna-kata sandi, token akses pribadi, dll.), pilih Memerlukan otorisasi dan memasukkan kredensial Anda. Autentikasi SSH tidak didukung, tetapi Anda dapat mengimpor repositori secara manual yang menggunakan autentikasi SSH dengan mengikuti langkah-langkah dalam Mengimpor repo secara manual menggunakan git CLI.

    Dialog Impor Repositori

Impor ke dalam repositori kosong yang ada

Pada halaman File dari repositori Git kosong, pilih Impor dan masukkan URL kloning. Anda harus memberikan kredensial jika repositori sumber memerlukan autentikasi.

Impor Repositori ke repositori yang ada

Catatan

Fitur impor menonaktifkan penautan otomatis untuk item kerja yang disebutkan dalam komentar penerapan karena ID item kerja dalam proyek tujuan mungkin tidak sama dengan yang ada di proyek sumber. Penautan otomatis untuk item kerja yang disebutkan dalam penerapan dapat diaktifkan kembali dengan menavigasi ke Pengaturan, Kontrol Versi, memilih repositori Anda, dan memilih Opsi. Untuk informasi selengkapnya tentang menautkan penerapan dengan item kerja, lihat Menautkan item kerja untuk penerapan

Mengimpor repositori secara manual menggunakan CLI az repos

Anda dapat menggunakan az repos import untuk mengimpor repositori ke proyek Azure DevOps Anda.

Catatan

Anda harus terlebih dahulu membuat repositori di Azure DevOps sebelum dapat mengimpor repositori Git. Selain itu, repositori yang Anda buat harus kosong. Untuk membuat repositori, lihat Membuat repositori Git Anda di Azure Repos.

az repos import create --git-source-url
                       [--detect {false, true}]
                       [--git-service-endpoint-id]
                       [--org]
                       [--project]
                       [--repository]
                       [--requires-authorization]
                       [--subscription]
                       [--user-name]

Parameter

Parameter Deskripsi
git-source-url Harus diisi. URL repositori git sumber untuk diimpor.
detect Opsional. Mendeteksi organisasi secara otomatis. Nilai yang diterima: false, true.
git-service-endpoint-id Opsional. Titik Akhir Layanan untuk koneksi ke titik akhir eksternal.
org, organization URL organisasi Azure DevOps. Anda dapat mengonfigurasi organisasi default dengan menggunakan az devops configure -d organization=<ORG_URL>. Diperlukan jika tidak dikonfigurasi sebagai default atau diambil melalui konfigurasi git. Contoh: https://dev.azure.com/MyOrganizationName/.
project, p Nama atau ID proyek. Anda dapat mengonfigurasi proyek default menggunakan az devops configure -d project=<NAME_OR_ID>. Diperlukan jika tidak dikonfigurasi sebagai default atau diambil melalui konfigurasi git.
repository Nama atau ID repositori untuk membuat permintaan impor.
requires-authorization Bendera untuk menunjukkan apakah repositori git sumber bersifat privat. Jika Anda memerlukan autentikasi, buat token autentikasi pada repositori sumber dan atur variabel AZURE_DEVOPS_EXT_GIT_SOURCE_PASSWORD_OR_PAT lingkungan ke nilai token. Kemudian permintaan impor akan menyertakan autentikasi.
subscription Nama atau ID langganan. Anda dapat mengonfigurasi langganan default menggunakan az account set -s <NAME_OR_ID>.
user-name Nama pengguna untuk menentukan kapan repositori git bersifat privat.

Contoh

Perintah berikut mengimpor repositori publik fabrikam-open-source ke repositori Git kosong fabrikam-open-source untuk konfigurasi az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"default .

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"
}

Mengimpor repositori secara manual menggunakan git CLI

Fitur repositori impor diperkenalkan dalam TFS 2017 Update 1. Jika Anda menggunakan TFS 2017 RTM atau yang lebih lama, Anda dapat menggunakan langkah-langkah berikut untuk mengimpor repositori secara manual ke TFS. Anda juga dapat mengikuti langkah-langkah ini untuk mengimpor repositori secara manual ke repositori Azure DevOps Services dengan mengganti TFS dengan Azure Repos dalam langkah-langkah berikut.

  1. Kloning repositori sumber ke folder sementara di komputer Anda menggunakan bare opsi , seperti yang ditunjukkan dalam contoh baris perintah berikut, lalu navigasi ke folder repositori. Saat mengkloning menggunakan bare opsi , nama folder menyertakan akhiran .git . Dalam contoh ini, https://github.com/contoso/old-contoso-repo.git adalah repositori sumber yang akan diimpor secara manual.

    git clone --bare https://github.com/contoso/old-contoso-repo.git
    cd old-contoso-repo.git
    
  2. Buat repositori target menggunakan TFS 2017 RTM, dan catat URL kloning. Dalam contoh ini, https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo adalah URL untuk repositori target baru.

  3. Jalankan perintah berikut untuk menyalin repositori sumber ke repositori target.

    git push --mirror https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo
    

    Peringatan

    Menggunakan --mirror akan menimpa semua cabang dalam repositori target yang mencakup penghapusan cabang apa pun yang tidak ada dalam repositori sumber.

  4. Jika repositori sumber memiliki objek LFS, ambil, dan salin dari repositori sumber ke repositori target.

    git lfs fetch origin --all
    git lfs push --all https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo
    
  5. Hapus folder sementara dengan menjalankan perintah berikut.

    cd ..
    rm -rf old-contoso-repo.git
    

Tanya jawab umum

Meskipun sebagian besar waktu impor berhasil, kondisi berikut dapat menyebabkan masalah.

Bagaimana jika repositori sumber saya berada di belakang autentikasi dua faktor?

Layanan impor menggunakan REST API untuk memvalidasi dan memicu impor dan tidak dapat bekerja langsung dengan repositori yang memerlukan autentikasi dua faktor. Sebagian besar penyedia hosting Git seperti GitHub dan Layanan Azure DevOps mendukung token pribadi yang dapat disediakan ke layanan impor.

Bagaimana jika repositori sumber saya tidak mendukung multi_ack?

Layanan impor menggunakan kemampuan multi_ack protokol Git selama impor. Jika repositori sumber tidak menyediakan kemampuan ini, layanan impor dapat gagal mengimpor dari sumber yang diberikan. Kegagalan ini dapat terjadi saat membuat permintaan impor atau saat impor sedang berlangsung.

Dapatkah saya mengimpor dari versi Server Team Foundation sebelumnya?

Jika repositori Git sumber berada dalam versi TFS yang lebih lama dari TFS 2017 RTM, impor akan gagal. Ini terjadi karena ketidakcocokan kontrak antara Azure DevOps Services/TFS terbaru dan TFS versi RTM pra-2017.

Dapatkah saya menggunakan kredensial berbasis MSA?

Sayangnya, kredensial berbasis MSA (Akun Microsoft, sebelumnya LIVE ID) tidak akan berfungsi. Layanan impor bergantung pada autentikasi dasar untuk berkomunikasi dengan repositori sumber. Jika nama pengguna/kata sandi yang Anda gunakan bukan autentikasi dasar maka autentikasi akan gagal dan impor akan gagal. Salah satu cara untuk memeriksa apakah nama pengguna / kata sandi yang Anda gunakan adalah autentikasi dasar atau tidak adalah dengan mencoba menggunakan Git untuk mengkloning repositori Anda menggunakan format di bawah ini

git clone https://<<username>>:<<password>>@<<remaining clone Url>>

Dapatkah saya mengimpor dari TFVC?

Anda dapat memigrasikan kode dari repositori TFVC yang ada ke repositori Git baru dalam akun yang sama. Saat bermigrasi ke Git memiliki banyak manfaat, ini adalah proses yang terlibat untuk repositori dan tim TFVC besar. Sistem kontrol versi terpusat, seperti TFVC, berprilaku berbeda dari Git dengan cara mendasar. Sakelar melibatkan lebih banyak daripada mempelajari perintah baru. Ini adalah perubahan mengganggu yang membutuhkan perencanaan yang cermat. Untuk informasi selengkapnya, lihat Mengimpor dari TFVC ke Git.

Bagaimana jika repositori sumber saya berisi objek Git LFS?

Impor Git tidak akan mengimpor objek Git LFS.

Objek LFS dapat dipindahkan menggunakan langkah-langkah berikut:

  • Impor repositori menggunakan fitur repositori impor ke Azure DevOps. Ini akan menyalin semua objek Git dari sumber ke Azure DevOps (ini juga akan mengimpor pointer LFS yang merupakan objek Git tetapi bukan file LFS)

Untuk memindahkan file LFS (Anda akan memerlukan klien Git.exe dan LFS dalam kotak yang sama dan akses ke repositori sumber dan repositori tujuan)

  • Kloning repositori yang diimpor dari Azure DevOps ke sistem lokal, kloning akan berfungsi tetapi akan gagal saat melakukan checkout file LFS
  • Tambahkan repositori sumber sebagai jarak jauh (katakan 'sumber')
  • Perform git lfs fetch source --all (ini akan membawa semua file LFS dari sumber ke repositori lokal Anda)
  • Dengan asumsi repositori VSTS tujuan adalah remote 'target' Anda
  • Melakukan git lfs push target --all

Bisakah saya mengimpor pembaruan jika sumber berubah nanti?

Layanan impor adalah untuk awalnya mengimpor seluruh repositori. Untuk mencerminkan perubahan nanti, Anda memerlukan klon lokal repositori dengan remote yang diatur ke sumber dan tujuan.

Anda dapat menyinkronkan perubahan menggunakan perintah berikut. Kami akan memperlakukan impor Azure Repos sebagai origin dan repositori asli sebagai upstream.

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

Langkah berikutnya