Mengimpor dan memigrasikan repositori dari TFVC ke Git

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

Anda dapat memigrasikan kode dari repositori TFVC yang ada ke repositori Git baru dalam organisasi yang sama. Migrasi ke Git 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. Anda perlu memikirkan:

  • Merevisi alat dan proses
  • Menghapus biner dan executable
  • Melatih tim Anda

Sebaiknya baca kontrol versi terpusat ke Git dan bagian Migrasi dari TFVC ke Git berikut sebelum memulai migrasi.

Pengalaman impor sangat bagus untuk repositori TFVC sederhana kecil. Ini juga baik untuk repositori yang telah "dibersihkan" seperti yang diuraikan dalam kontrol versi terpusat ke Git dan bagian Migrasi dari TFVC ke Git berikut. Bagian ini juga merekomendasikan alat lain untuk konfigurasi repositori TFVC yang lebih canggih.

Penting

Karena perbedaan dalam bagaimana riwayat kontrol versi penyimpanan TFVC dan Git, kami sarankan Anda tidak memigrasikan riwayat Anda. Ini adalah pendekatan yang diambil Microsoft ketika memigrasikan Windows dan produk lain dari kontrol versi terpusat ke Git.

Mengimpor repositori

  1. Pilih Repos, File.

    Lihat cabang Anda

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

    Opsi Impor Repositori

  3. Pilih TFVC dari menu dropdown Jenis sumber

  4. Ketik jalur ke repositori / cabang / folder yang ingin Anda impor ke repositori Git. Misalnya: $/Fabrikam/FabrikamWebsite

  5. Jika Anda ingin memigrasikan riwayat dari repositori TFVC, klik Migrasi riwayat dan pilih jumlah hari. Anda dapat memigrasikan hingga 180 hari riwayat mulai dari set perubahan terbaru. Tautan ke repositori TFVC ditambahkan dalam pesan penerapan set perubahan ke-1 yang dimigrasikan ke Git. Ini memudahkan untuk menemukan riwayat yang lebih lama ketika diperlukan.

  6. Beri nama ke repositori Git baru dan klik Impor. Tergantung pada ukuran impor, repositori Git Anda akan siap dalam beberapa menit.

    Dialog Impor Repositori

Pemecahan Masalah

Pengalaman ini dioptimalkan untuk repositori atau repositori TFVC kecil dan sederhana yang telah disiapkan untuk migrasi. Ini berarti memiliki beberapa batasan.

  1. Ini hanya memigrasikan konten root atau cabang. Misalnya, jika Anda memiliki proyek TFVC di mana memiliki 1 cabang dan 1 folder di $/Fabrikam bawahnya, jalur untuk mengimpor $/Fabrikam akan mengimpor folder sementara $/Fabrikam/<branch> hanya akan mengimpor cabang.
  2. Repositori yang diimpor dan riwayat terkait (jika diimpor) tidak boleh melebihi ukuran 1GB.
  3. Anda dapat mengimpor riwayat hingga 180 hari.

Jika salah satu hal di atas adalah pemblokir untuk impor Anda, kami sarankan Anda mencoba alat eksternal seperti Git-TFS untuk mengimpor dan membaca laporan resmi kami - Kontrol versi terpusat ke Git dan bagian Migrasi dari TFVC ke Git berikut.

Penting

Penggunaan alat eksternal seperti Git-TFS dengan produk, layanan, atau platform Microsoft sepenuhnya menjadi tanggung jawab pengguna. Microsoft tidak mendukung, mendukung, atau menjamin fungsionalitas, keandalan, atau keamanan ekstensi pihak ketiga tersebut.

Memigrasikan dari TFVC ke Git

Sebelum memigrasikan kode sumber dari sistem kontrol versi terpusat ke Git, pahami perbedaan antara keduanya dan bersiaplah untuk migrasi.

Persyaratan

Untuk mempermudah migrasi, ada sejumlah persyaratan sebelum mengikuti prosedur impor repositori di bagian sebelumnya dari artikel ini.

  • Migrasi hanya satu cabang. Saat merencanakan migrasi, pilih strategi pencabangan baru untuk Git. Memigrasikan hanya cabang utama yang mendukung alur kerja berbasis cabang topik seperti GitFlow atau GitHub Flow.
  • Lakukan migrasi tip, seperti dalam, impor hanya versi terbaru kode sumber. Jika riwayat TFVC sederhana, ada opsi untuk memigrasikan beberapa riwayat, hingga 180 hari, sehingga tim hanya dapat bekerja di luar Git. Untuk informasi selengkapnya, lihat Merencanakan migrasi Anda ke Git.
  • Kecualikan aset biner seperti gambar, himpunan data ilmiah, atau model game dari repositori. Aset ini harus menggunakan ekstensi Git LFS (Large File Storage), yang tidak dikonfigurasi alat impor.
  • Pertahankan repositori yang diimpor di bawah ukuran 1GB.

Jika repositori tidak memenuhi persyaratan ini, gunakan alat Git-TFS untuk melakukan migrasi Anda sebagai gantinya.

Penting

Penggunaan alat eksternal seperti Git-TFS dengan produk, layanan, atau platform Microsoft sepenuhnya menjadi tanggung jawab pengguna. Microsoft tidak mendukung, mendukung, atau menjamin fungsionalitas, keandalan, atau keamanan ekstensi pihak ketiga tersebut.

Langkah-langkah untuk migrasi

Proses untuk bermigrasi dari TFVC umumnya mudah:

  1. Lihat versi terbaru cabang dari TFVC pada disk lokal Anda.
  2. Hapus biner dan alat build dari repositori dan siapkan sistem manajemen paket seperti NuGet.
  3. Mengonversi direktif konfigurasi khusus kontrol versi. Misalnya, konversi file .tfignore menjadi .gitignore, dan konversi file .tpattributes menjadi .gitattributes.
  4. Periksa perubahan dan lakukan migrasi ke Git.

Langkah 1-3 bersifat opsional. Jika tidak ada biner di repositori dan tidak perlu menyiapkan .gitignore atau .gitattributes, Anda dapat melanjutkan langsung ke Perubahan cek masuk dan melakukan langkah migrasi .

Lihat versi terbaru

Buat ruang kerja TFS baru dan petakan folder kerja untuk direktori server yang sedang dimigrasikan ke Git. Ini tidak memerlukan pemetaan folder kerja penuh. Hanya folder peta yang berisi biner yang akan dihapus dari repositori dan folder yang berisi file konfigurasi khusus sistem kontrol versi seperti .tfignore.

Setelah pemetaan disiapkan, dapatkan folder secara lokal:

tf get /version:T /recursive

Menghapus biner dan alat build

Karena cara Git menyimpan riwayat file yang diubah dengan memberikan salinan setiap file dalam riwayat kepada setiap pengembang, memeriksa file biner langsung ke repositori menyebabkan repositori tumbuh dengan cepat dan dapat menyebabkan masalah performa.

Untuk alat build dan dependensi seperti pustaka, adopsi solusi pengemasan dengan dukungan penerapan versi, seperti NuGet. Banyak alat dan pustaka sumber terbuka sudah tersedia di Galeri NuGet, tetapi untuk dependensi kepemilikan, buat paket NuGet baru.

Setelah dependensi dipindahkan ke NuGet, pastikan dependensi tersebut tidak disertakan dalam repositori Git dengan menambahkannya ke .gitignore.

Mengonversi konfigurasi khusus kontrol versi

Kontrol Versi Team Foundation menyediakan .tfignore file, yang memastikan bahwa file tertentu tidak ditambahkan ke repositori TFVC. Anda dapat menggunakan .tfignore file untuk file yang dihasilkan secara otomatis seperti output build sehingga file tersebut tidak secara tidak sengaja dicek masuk.

Jika proyek bergantung pada perilaku ini, konversikan file .tfignore menjadi file .gitignore.

Klien TFVC lintas platform juga menyediakan dukungan untuk .tpattributes file yang mengontrol bagaimana file ditempatkan pada disk lokal atau diperiksa ke repositori. Jika file .tpattributes sedang digunakan, konversikan menjadi file .gitattributes.

Periksa perubahan dan lakukan migrasi

Periksa setiap perubahan yang menghapus biner, bermigrasi ke manajemen paket, atau mengonversi konfigurasi khusus kontrol versi. Setelah Anda membuat perubahan akhir ini di TFVC, Anda dapat melakukan impor.

Ikuti prosedur Mengimpor repositori untuk melakukan impor.

Migrasi tingkat lanjut

Alat Git-TFS adalah jembatan dua arah antara Team Foundation Version Control dan Git, dan Anda dapat menggunakannya untuk melakukan migrasi. Git-TFS sesuai untuk migrasi dengan riwayat penuh, lebih dari 180 hari yang didukung alat Impor. Atau Anda dapat menggunakan Git-TFS untuk mencoba migrasi yang mencakup beberapa cabang dan menggabungkan hubungan.

Sebelum mencoba migrasi dengan Git-TFS, perhatikan bahwa ada perbedaan mendasar antara cara riwayat penyimpanan TFVC dan Git:

  • Git menyimpan riwayat sebagai snapshot repositori tepat waktu, sementara TFVC merekam operasi diskrit yang terjadi pada file. Mengubah jenis di TFVC seperti mengganti nama, membatalkan penghapusan, dan pembatalan tidak dapat diekspresikan di Git. Alih-alih melihat bahwa file A diganti namanya menjadi file B, itu hanya melacak file A yang dihapus dan file B ditambahkan dalam penerapan yang sama.
  • Git tidak memiliki analog langsung dari label TFVC. Label dapat berisi sejumlah file pada versi tertentu dan dapat mencerminkan file pada versi yang berbeda. Meskipun secara konseptual mirip, tag Git menunjuk ke rekam jepret seluruh repositori pada titik waktu tertentu. Jika proyek bergantung pada label TFVC untuk mengetahui apa yang dikirimkan, tag Git mungkin tidak memberikan informasi ini.
  • Penggabungan di TFVC dilakukan pada tingkat file, bukan di seluruh repositori. Hanya subset file yang diubah yang dapat digabungkan dari satu cabang ke cabang lainnya. File yang diubah yang tersisa kemudian dapat digabungkan dalam set perubahan berikutnya. Di Git, penggabungan memengaruhi seluruh repositori, dan kedua set perubahan individual tidak dapat dilihat sebagai penggabungan.

Karena perbedaan ini, disarankan agar Anda melakukan migrasi tip dan menjaga repositori TFVC Anda tetap online, tetapi baca-saja, untuk melihat riwayat.

Untuk mencoba migrasi lanjutan dengan Git-TFS, lihat mengkloning satu cabang dengan riwayat atau mengkloning semua cabang dengan riwayat penggabungan.

Penting

Penggunaan alat eksternal seperti Git-TFS dengan produk, layanan, atau platform Microsoft sepenuhnya menjadi tanggung jawab pengguna. Microsoft tidak mendukung, mendukung, atau menjamin fungsionalitas, keandalan, atau keamanan ekstensi pihak ketiga tersebut.

Memperbarui alur kerja

Berpindah dari sistem kontrol versi terpusat ke Git lebih dari sekadar memigrasikan kode. Tim perlu pelatihan untuk memahami perbedaan Git dengan sistem kontrol versi yang ada dan bagaimana perbedaan ini memengaruhi pekerjaan sehari-hari.

Pelajari selengkapnya tentang cara bermigrasi dari kontrol versi terpusat ke Git.