Ketergantungan tertanam
folder lokal atau jalur tarball

Ketergantungan git

Ketika Manajer Paket mengambil paket dari repositori Git, menambahkan paket secara lokal ke proyek Anda. Ini memungkinkan Anda untuk menguji perubahan yang tidak dipublikasikan, tetapi Anda tidak dapat menggunakannya untuk berkontribusi pada repositori Git. Untuk mengatur repositori Git lokal yang ada sebagai ketergantungan dalam proyek Anda, gunakan jalan ke lokal Anda Git repositori.

Note: Anda tidak dapat menentukan file Git dependenciesManajer Paket mengambil Ketergantungan git dari repositori Git langsung daripada dari registry paket. Ketergantungan Git menggunakan referensi URL Git bukan versi, dan tidak ada jaminan tentang kualitas paket, stabilitas, validitas, atau bahkan apakah versi yang tercantum dalam berkas package.json menghormati aturan Versi Semantic sehubungan dengan rilis resmi paket ini. More info
Lihat di Glossary
dalam paket.json karena Manajer Paket tidak mendukung ketergantungan Git antara paket. Ini hanya mendukung ketergantungan Git untuk proyek, sehingga Anda hanya dapat mendeklarasikan ketergantungan Git dalam file manifest.json proyek.

Tip: Jika Anda ingin memperbarui ketergantungan Git Anda ke versi tertentu (revision) dari repositori, lihat Ketergantungan Git yang dikunci.

Bagian ini mencakup topik berikut:


Requirements

Untuk menggunakan dependensi Git dalam proyek, pastikan Git client (versi minimum 2.14.0) dipasang pada mesin Anda dan bahwa Anda telah menambahkan jalur Git yang dapat dieksekusi ke variabel lingkungan sistem PATH.

Sitemap Manajer Paket telah diuji untuk bekerja dengan Git 2.14.0 dan di atas. Unity tidak dapat menjamin hasil jika Anda menggunakan versi Git di bawah 2.14.0.Warning: The Package Manager has been tested to work with Git 2.14.0 and above. Unity cannot guarantee the results if you use Git versions below 2.14.0.

Jika file track repositori dengan Git LFS, pastikan klien Git LFS juga dipasang pada mesin Anda. Jika tidak diinstal, Manajer Paket tidak dapat mengambil file yang disimpan di server LFS dan bukan memeriksa file pointer LFS tanpa kesalahan atau pesan peringatan.

Anda dapat menggunakan jendela Paket Manager untuk menginstal paket langsung dari repositori Git. Untuk informasi lebih lanjut, lihat Menginstal dari URL Git.

URL Git dan sintaks yang diperpanjang

Manajer Paket mendukung semua protokol Git, dengan pengecualian jalur file lokal. Untuk menentukan URL Git sebagai ketergantungan, tambahkan nama paket untuk menambahkan dengan URL Git bukan nomor versi atau path file lokal ke project manifestSetiap proyek Unity memiliki manifestasi proyek, yang bertindak sebagai titik masuk untuk Manajer Paket. File ini harus tersedia di direktori <project>/Packages. Manajer Paket menggunakannya untuk mengkonfigurasi banyak hal, termasuk daftar dependensi untuk proyek itu, serta repositori paket untuk permintaan. More info
Lihat di Glossary
. Misalnya, ini menunjukkan cara menentukan jarak jauh Git menggunakan protokol yang berbeda:

{
  "dependencies": {
    "com.mycompany.mypackage1": "https://github.example.com/myuser/myrepository1.git",
    "com.mycompany.mypackage2": "ssh://git@github.example.com/myuser/myrepository2.git",
    "com.mycompany.mypackage3": "file://localhost/github.example.com/myuser/myrepository3.git",
    "com.mycompany.mypackage4": "git://github.example.com/myuser/myrepository4.git",
    etc.
  }
}

The Package Manager menyadari bahwa ketergantungan diformat sebagai URL adalah URL Git dengan mencari ekstensi file .git pada akhir jalur repositori. Sitemap Layanan hosting repositori Git tidak mendukung URL dengan ekstensi ini sementara yang lain menegakkannya. Untuk alasan ini, sintaksis ketergantungan Git memungkinkan Anda untuk mengosongkan ekstensi jika Anda menggunakan protokol GIT, atau jika Anda menambahkan prefiks git+ khusus untuk URL HTTP/HTTPS, SSH, atau FILE.

Sitemap Prefix Note: adalah penanda khusus dalam file git+ yang menunjukkan bahwa ketergantungan berbasis Git. Paket Mengelola tidak melewatinya ke Git ketika membekukan repositori.manifest.json file that indicates that the dependency is Git-based. The Package Manages does not pass it to Git when cloning the repository.

Untuk informasi lebih lanjut tentang format URL yang didukung Git, lihat dokumentasi untuk perintah git clone. Untuk gambaran tentang perbedaan antara protokol yang digunakan Git, lihat Dokumentasi Git untuk menggunakan protokol.

Selain itu, ketergantungan Git menggunakan sintaks yang diperpanjang:

  • Jika paket yang Anda inginkan bukan di akar repositori, Anda dapat menentukan jalan ke subfolder di repositori di mana paket berada. Ini hanya diperlukan jika paket yang Anda inginkan bukan di akar repositori. Contohnya, string ?path=/folder1/folder2 dalam:

    "https://github.example.com/myuser/myrepository.git?path=/folder1/folder2".

    Untuk informasi lebih lanjut, lihat Menentukan paket dalam subfolder.

  • Anda dapat menentukan revisi Git, yang dapat menjadi tag, nama cabang, atau hash berkomitmen khusus untuk mengunci. Ini memastikan bahwa Manajer Paket selalu memuat revisi yang tepat. Jika Anda tidak menentukan revisi, Manajer Paket mengacaukan repositori di cabang default dan berkomitmen dan kunci terbaru ke revisi tersebut. Contohnya, string #v2.0.0 dalam:

    "https://github.example.com/myuser/myrepository.git#v2.0.0"

    Untuk informasi lebih lanjut, lihat Menargetkan revisi tertentu.

Menggunakan protokol HTTP/HTTPS

Anda dapat menggunakan protokol HTTPS dengan URL penuh:

{
  "dependencies": {
    "com.mycompany.mypackage": "https://github.example.com/myuser/myrepository.git"
  }
}

Sitemap Server Git tidak mendukung ekstensi .git, Anda dapat menambahkan awalan git+ khusus, dengan atau tanpa ekstensi:

{
  "dependencies": {
    "com.mycompany.mypackage1": "git+https://github.example.com/myuser/myrepository1.git",
    "com.mycompany.mypackage2": "git+https://github.example.com/myuser/myrepository2"
  }
}

Note: Atau, Anda dapat menggunakan protokol GIT bukan awal git+. Untuk informasi lebih lanjut, lihat Menggunakan protokol GIT.

Jika repositori dapat diakses secara publik, HTTPS adalah skema yang disarankan untuk berbagi URL Git dengan pengguna karena Anda dapat menyalin dan menempel URL langsung dari halaman web layanan hosting Git repositori.

Copy the URL from the package repository
Salin URL dari repositori paket

Jika repositori tidak dapat diakses secara publik dan Anda menggunakan HTTPS, server repositori gagal untuk otentikasi Anda karena Anda tidak dapat berinteraksi dengan server untuk memberikan kredensial Anda. Dalam hal ini, Editor memberi tahu Anda bahwa otentikasi gagal.

Untuk bekerja di sekitar masalah otentikasi ini, Anda dapat menggunakan Penolong kredensial untuk otentikasi sebelum tangan, atau menggunakan protokol SSH bukan. Jika Anda mengatur dan mengkonfigurasi pasangan kunci SSH dengan layanan hosting repositori Git, Manajer Paket dapat mengotentikkan permintaan secara mulus atas nama Anda.

Menggunakan protokol SSH

Anda dapat menggunakan protokol SSH dengan URL penuh:

{
  "dependencies": {
    "com.mycompany.mypackage": "ssh://git@mycompany.github.com/gitproject/com.mycompany.mypackage.git"
  }
}

Sitemap Server Git tidak mendukung ekstensi .git, Anda dapat menambahkan awalan git+ khusus, dengan atau tanpa ekstensi:

{
  "dependencies": {
    "com.mycompany.mypackage1": "git+ssh://git@github.example.com/myuser/myrepository1.git",
    "com.mycompany.mypackage2": "git+ssh://git@github.example.com/myuser/myrepository2"
  }
}

Note: Atau, Anda dapat menggunakan protokol GIT bukan awal git+. Untuk informasi lebih lanjut, lihat Menggunakan protokol GIT.

Anda juga dapat menggunakan celana pendek SCP, yang Manajer Paket selalu mengenali sebagai ketergantungan Git:

{
  "dependencies": {
    "com.mycompany.mypackage": "git@mycompany.github.com:gitproject/com.mycompany.mypackage.git"
  }
}

Menggunakan PuTTY di Windows

Git menggunakan kunci di lokasi default ketika Anda menggunakan SSH untuk otentikasi. Namun, jika Anda menggunakan PuTTY sebagai klien SSH di Windows, Anda perlu mengkonfigurasi variabel lingkungan GIT_SSH untuk membuatnya menunjuk ke plink.exe.

Otentikasi dengan SSH

Jika Anda ingin menggunakan protokol SSH, Anda perlu mengatur kunci SSH di luar Unity. Untuk informasi lebih lanjut tentang mengatur otentikasi untuk host tertentu, lihat halaman bantuan untuk Bitbucket, GitLab, dan GitHub.

Note: Jika Anda mengenkripsi kunci SSH Anda dengan kata sandi, Manajer Paket tidak dapat mengambil paket, karena tidak memberikan cara untuk memasukkan kata sandi di terminal atau garis perintah. Dalam hal ini, Editor memberi tahu Anda bahwa otentikasi gagal. Untuk membantu dengan menggunakan ssh-agent untuk otentikasi, lihat Solusi untuk SSH.

Menggunakan protokol FILE

Manajer Paket tidak mengenali URL Git dengan awalan file: sebagai ketergantungan Git kecuali diformat dengan benar. Ini berarti Anda harus menggunakan protokol git+file:, atau suffix .git dengan protokol file::

{
  "dependencies": {
    "com.mycompany.mypackage1": "git+file://github.example.com/myuser/myrepository1",
    "com.mycompany.mypackage2": "git+file:///github.example.com/myuser/myrepository2",
    "com.mycompany.mypackage3": "file:///github.example.com/myuser/myrepository3.git"
  }
}

Note: Atau, Anda dapat menggunakan protokol GIT bukan awal git+. Untuk informasi lebih lanjut, lihat Menggunakan protokol GIT.

Manajer Paket menafsirkan sintaks lain sebagai jalur lokal.

Menggunakan protokol GIT

Manajer Paket mengenali protokol git:, dengan atau tanpa suffix jalur .git:

{
  "dependencies": {
    "com.mycompany.mypackage1": "git://github.example.com/myuser/myrepository1.git",
    "com.mycompany.mypackage2": "git://github.example.com/myuser/myrepository2"
  }
}

Protokol GIT tidak perlu atau mendukung prefiks git+.

Menargetkan revisi tertentu

Untuk mendeklarasikan revisi tertentu yang Anda inginkan Manajer Paket untuk menginjak, tambahkan revisi yang ditetapkan oleh tanda nomor (#) pada akhir URL:

{
  "dependencies": {
    "com.mycompany.mypackage1": "https://github.example.com/myuser/myrepository1.git#revision",
    "com.mycompany.mypackage2": "git+https://github.example.com/myuser/myrepository2#revision"
  }
}

Revisi dapat berupa tag, cabang atau hash. Anda harus memberikan hash berkomitmen penuh. Unity tidak mendukung bijaksana SHA–1. Tabel ini menunjukkan contoh untuk menentukan revisi:

Syntax: URL example
Cabang default terbaru "https://github.example.com/myuser/myrepository.git"
Cabang khusus "https://github.example.com/myuser/myrepository.git#my-branch"
Versi spesifik "https://github.example.com/myuser/myrepository.git#v2.0.0"
Commit hash "https://github.example.com/myuser/myrepository.git#9e72f9d5a6a3dadc38d813d8399e1b0e86781a49"

Menentukan paket dalam subfolder repositori

Jika Anda menentukan repositori menggunakan sintaks URL Git, Manajer Paket mengasumsikan bahwa paket harus berakar repositori. Namun, beberapa paket tidak terletak di tingkat akar repositori mereka, dan beberapa repositories mengandung lebih dari satu paket.

Anda dapat menggunakan parameter query path di URL Git untuk memberitahukan Manajer Paket di mana untuk menemukan paket. Jalan yang Anda tentukan harus relatif terhadap akar repositori, dan subfolder yang Anda tentukan harus mengandung file package manifestSetiap paket memiliki manifest, yang menyediakan informasi tentang paket ke Manajer Paket. Manifest mengandung informasi seperti nama paket, versinya, deskripsi untuk pengguna, ketergantungan pada paket lain (jika ada), dan rincian lainnya. More info
Lihat di Glossary
(package.json).

Untuk menentukan subfolder repositori untuk ketergantungan Git, gunakan parameter query path:

{
  "dependencies": {
    "com.mycompany.mypackage": "https://github.example.com/myuser/myrepository.git?path=/subfolder"
  }
}

Dalam hal ini, Manajer Paket hanya mendaftarkan paket yang terletak di subfolder repositori yang ditentukan dan mengabaikan sisa repositori.

Terkadang repositori berisi beberapa paket terkait. Jika Anda ingin menambahkan lebih dari satu paket dari repositori yang sama, Anda harus menambahkan dua entri terpisah untuk manifestasi proyek Anda:

{
  "dependencies": {
    "com.mycompany.mypackage1": "https://github.example.com/myuser/myrepository.git?path=/subfolder1",
    "com.mycompany.mypackage3": "https://github.example.com/myuser/myrepository.git?path=/subfolder2/subfolder3"
  }
}

Note: Jika Anda menentukan beberapa kali repositori yang sama, Manajer Paket mengacaukan beberapa kali repositori yang sama, yang menyebabkan kinerja berkurang dan penggunaan jaringan tambahan.

Menggunakan jalur dan revisi pada saat yang sama

Parameter query path selalu mengutamakan jangkar revisi. Order terbalik gagal. Ini adalah contoh dari urutan yang benar untuk digunakan:

{
  "dependencies": {
    "com.mycompany.mypackage": "https://github.example.com/myuser/myrepository.git?path=/example/folder#v1.2.3"
  }
}

Ketergantungan Git yang dikunci

Salah satu prinsip inti dari Manajer Paket adalah determinisme. Jika Anda berbagi proyek Anda dengan pengguna lain, Manajer Paket harus menginstal set dependensi paket yang sama dan versi, dan yang mencakup paket yang gatal dari Git. Untuk mencapai ini, Manajer Paket menggunakan lock file, yang melacak yang memiliki ketergantungan Git digunakan.

Ketika Anda menambahkan ketergantungan Git dengan revisi yang ditetapkan ke cabang atau tag, Manajer Paket memetik hash berkomitmen yang sesuai untuk disimpan dalam file kunci. Seiring waktu, cabang-cabang dan tag dapat menunjuk ke berbagai berkomitmen pada repositori Git. Sebagai contoh, cabang dapat memiliki komisaris baru ditambahkan ke dalamnya.

Untuk memperbarui paket ke berbagai berkomitmen bahwa cabang atau tag poin ke, gunakan tombol Tambahkan paket dari git URL dan masukkan URL Git. Anda dapat menggunakan URL Git yang sama, karena Manajer Paket mengabaikan hash yang terkunci ketika Anda mengajukan permintaan baru. Namun, Anda juga dapat menentukan nomor revisi baru, tag, atau cabang sebagai revision.

Atau, Anda dapat membuat skrip dengan metode API Login Login C# dengan Git URL.


Login Sitemap

Paket Manager mendukung Ketergantungan git dengan repositories menggunakan Git LFS. Karena Git LFS telah dirancang untuk bekerja dengan overhead konfigurasi minimal, mendukung HTTPS dan SSH authentication. Retrieval file yang disimpan di server LFS gagal jika pengguna harus diotentikkan dan tidak memiliki kredensial yang valid dengan izin untuk mengakses repositori jarak jauh.

Paket penulis dapat membantu klien Git LFS menemukan Server LFS dengan menyediakannya dengan URL dalam file konfigurasi .lfsconfig di repositori. Ada dua cara untuk melakukan ini:

# Option 1: global setting
[lfs]
  url = ssh://git@HOSTNAME/path/to/repo.git

# Option 2: per-remote setting
[remote "origin"]
  lfsurl = ssh://git@HOSTNAME/path/to/repo.git

Jika repositori berisi file .lfsconfig, pastikan Anda memasukkannya dalam file .npmignore untuk menghindari termasuk dalam rilis yang diterbitkan dari paket.

Git LFS cache

Sebagai Unity 2021.2, Anda dapat mengaktifkan cache Git LFS untuk Manajer Paket untuk digunakan ketika memeriksa dependensi berbasis Git. Ini menghindari harus mengunduh file yang sama setiap kali Anda memeriksa revisi yang berbeda dari repositori.

Cache Git LFS untuk Manajer Paket berbeda dari cache Git LFS di folder .git / rak repositori Git Anda. Manajer Paket tidak dapat menggunakan cache Git default karena tidak menyimpan repositori yang dikloning setelah paket telah disalin ke cache proyek.

Untuk mengaktifkan cache Git LFS untuk Manajer Paket, pilih salah satu opsi berikut:

  • Untuk mengaktifkan cache Git LFS dan gunakan subfolder git-lfs di bawah default global cache akar sebagai lokasinya, atur variabel lingkungan UPM_ENABLE_GIT_LFS_CACHE ke nilai (non-empty).
  • Untuk mengaktifkan cache Git LFS dan gunakan lokasi kustom untuk itu, atur variabel lingkungan UPM_GIT_LFS_CACHE_PATH ke jalur kustom. Ketika Anda mengatur lokasi, opsi cache Git LFS diaktifkan secara otomatis.

Untuk informasi lebih lanjut tentang cara mengatur variabel lingkungan untuk cache global, lihat Sesuaikan lokasi cache global.

Sitemap Optimasi ini membutuhkan ruang disk ekstra saat menggunakan paket Git LFS-enabled. Anda harus memutuskan mana manfaat yang lebih besar: Git LFS file caching biaya ruang disk tetapi menghemat pada mengunduh kembali file yang sama. Namun, beberapa situasi tidak dapat menggunakan cache dan menggunakan ruang disk tanpa menggunakan kembali file. Misalnya, Anda Ketergantungan Git mungkin menyelesaikan revisi yang merujuk pada konten file LFS-tracked yang berbeda, seperti skenario ini:Note: This optimization requires extra disk space when using Git LFS-enabled packages. You need to decide which is the greater benefit: Git LFS file caching costs disk space but saves on re-downloading the same files. However, some situations can’t make use of the cache and use up disk space without re-using the files. For example, your Git dependencies might resolve to revisions that reference different LFS-tracked file content, such as these scenarios:

  • Menggunakan berbeda Revisi git dalam ketergantungan dalam beberapa proyek
  • Sering memperbarui paket untuk revisi yang mengandung file LFS yang berubah yang berbeda




  • Kunci file ditambahkan dalam Unity NewIn20194
  • Ketergantungan git dalam subfolder ditambahkan dalam Unity NewIn20194
  • Git LFS caching untuk ketergantungan Git ditambahkan dalam Unity NewIn20194
Ketergantungan tertanam
folder lokal atau jalur tarball