Cargo: Ubah aturan termasuk/kecualikan Kargo ke pola gitignore

Dibuat pada 10 Jul 2017  ·  47Komentar  ·  Sumber: rust-lang/cargo

Berdasarkan diskusi tentang PR ini: https://github.com/rust-lang/cargo/pull/4256

Status saat ini pada master : Tahap 1.1.

FAQ

Bagaimana cara bermigrasi?

Jika Anda menerima peringatan tentang beberapa pola include / exclude (seperti xyz ) yang cocok dengan file baru di masa mendatang, dan bukan itu yang Anda inginkan, harap pertimbangkan untuk menambahkan garis miring ke pola ( xyz menjadi /xyz ). (Tertunda PR: https://github.com/rust-lang/cargo/pull/4378 )

Punya masalah dengan Peringatan?

Jika Anda berada di sini karena peringatan kargo yang tidak sesuai, atau Anda tidak dapat menemukan perbaikan yang berfungsi baik dalam interpretasi lama (saat ini) dan baru, harap ajukan masalah, dengan konten package.include / package.exclude dalam file manifes Anda, serta salinan peringatan yang Anda terima.

Juga, jangan lupa untuk menempatkan tautan ke masalah ini di laporan Anda, dan sebutkan POC (@behnam) dalam masalah ini.

Sasaran

Interpretasi saat ini dari konfigurasi package.include dan package.exclude Cargo didasarkan pada UNIX Globs, seperti yang diimplementasikan dalam glob crate . Sekarang kita ingin konfigurasi ini bekerja semirip mungkin dengan gitignore . Spesifikasi gitignore juga didasarkan pada Globs, tetapi memiliki banyak fitur tambahan yang memungkinkan penulisan pola lebih mudah dan kontrol lebih. Oleh karena itu, kami memigrasikan interpretasi untuk aturan konfigurasi ini untuk menggunakan ignore crate , dan memperlakukan setiap aturan include/exclude sebagai satu baris dalam file gitignore .

Fitur utama yang didukung oleh interpretasi baru ( gitignore -like) adalah:

  • Izinkan pola yang cocok diperbaiki pada root paket dengan menggunakan karakter garis miring ( / ).

    Misalnya, exclude = [ "/data" ] akan mengecualikan file/direktori bernama data bawah direktori paket root. Tidak ada file/direktori lain bernama data (seperti, /src/data ) yang akan dikecualikan.

  • Mencocokkan semua jalur di bawah direktori dengan hanya menamai direktori itu sendiri.

    Misalnya, Anda dapat memiliki include = [ "/src" ] alih-alih include = [ "/src/*" ] atau include = [ "/src/**" ] .

  • Mendukung pola dengan garis miring ( / ), yang berarti hanya cocok dengan direktori.

    Misalnya, Anda dapat memiliki exclude = [ "tables/" ] untuk mengecualikan semua direktori bernama tables , tanpa efek pada file.

Tahapan Migrasi

Tahap 1 . Terapkan interpretasi baru dari aturan include / exclude (sytanx gitignore), bandingkan hasilnya dengan metode yang ada, dan peringatkan jika tidak setuju pada jalur.

Juga, kesalahan pada setiap penggunaan pola yang dinegasikan (aturan menatap dengan ! ), karena mereka diperlakukan secara harfiah saat ini, dan akan mendapatkan arti khusus setelah sakelar, yang ingin kami nonaktifkan secara default. ( ! adalah satu-satunya karakter khusus baru.)

Tahap 1.1 . Tambahkan dukungan garis miring utama ke pencocokan berbasis glob , untuk mengaktifkan migrasi pola yang mengandalkan pencocokan item di root. (Seperti "src/**/*" , yang harus cocok dengan direktori lain bernama src , kecuali di root.)

Tahap 2 . Setelah setidaknya satu rilis dan memperbarui dokumen, ubah default ke pendekatan baru; dan masih memperingatkan jika pendekatan baru tidak setuju dengan pendekatan lama.

Tahap 3 . Dalam rilis selanjutnya, lepaskan pendekatan lama.

Kemungkinan Tindak Lanjut

  • Aktifkan pola yang dinegasikan (aturan menatap dengan ! ) untuk kedua aturan include / exclude . Ini memberi lebih banyak kontrol kepada pengguna.

  • Izinkan memiliki kedua aturan include / exclude bersamaan. Tidak persis terkait dengan perubahan ini, tetapi mudah dan intuitif untuk dilakukan setelah perubahan ini.

  • Jika perlu, perbarui workspace.exclude agar tetap dekat dengan cara kerja package.exclude .

Perbaikan https://github.com/rust-lang/cargo/issues/3578

Command-package

Komentar yang paling membantu

@DoumanAsh nightly terbaru baru saja beralih ke pola gaya gitignore (#6924) ( docs ).

/brotli/ berbeda dalam cara menafsirkannya oleh sistem lama (glob) dan yang baru (abaikan). Itu hanya menunjukkan peringatan untuk memberi tahu Anda bahwa itu telah berubah. Saya berencana untuk menghapus peringatan di 1.38. Jika saya membaca deskripsi Anda dengan benar, Anda dapat mengabaikannya jika Anda hanya menggunakan nightly untuk menerbitkan, karena /brotli/ cocok dengan semuanya. Jika Anda ingin menghindari peringatan, saya pikir /brotli/** bekerja pada kedua sistem tanpa peringatan. Jika ragu, jalankan cargo package --list untuk melihat apa yang akan disertakan.

Semua 47 komentar

Ternyata ripgrep 's ignore juga memiliki beberapa masalah dalam kasus Edge. Saya telah menambahkan tes integrasi yang mengungkapkan bug: https://github.com/BurntSushi/ripgrep/pull/551

Saya akan memperluas pengujian dan mencakup lebih banyak kasus dan memastikan paket ignore dalam kondisi yang baik sebelum kita melanjutkan di sini.

Saat mengoceh di manifes hari ini, saya menyadari bahwa kami memiliki tempat lain di mana kami menggunakan peti glob tetapi mungkin tidak seharusnya. Fungsi workspace::expand_member_path menggunakan glob untuk memperluas input glob dan sebenarnya ini adalah bug yang tidak diperhatikan oleh fungsi is_excluded glob, tetapi sedang diperbaiki di https://github. com/rust-lang/cargo/pull/4297#pullrequestreview -50676432

@behnam apakah Anda tertarik untuk menghapus penggunaan glob dalam interpretasi ruang kerja? Saya merasa itu agak nontrivial tetapi saya tidak berpikir kami akan memiliki banyak masalah kompatibilitas mundur karena baru-baru ini ditambahkan.

Benar, @alexcrichton. Saya menambahkan itu ke daftar tindak lanjut kemarin dan berpikir untuk melakukannya ketika sampai ke Tahap 2. Tetapi memikirkannya lagi, kita dapat menambahkan mekanisme peringatan serupa di sana dan melanjutkan perubahan pada workspace.exclude (dan terkait configs) di samping paket saat ini untuk package.exclude (dan teman-teman).

Jadi, ya, saya akan mulai mengerjakannya hari ini.

Terima kasih @behnam! Meskipun saya masih harus mendapatkan #4297 mendarat...

Tentu, @alexcrichton. Silakan lanjutkan dan mendarat https://github.com/rust-lang/cargo/pull/4297 .

Mendapatkan pekerjaan pencocokan seperti gitignore untuk ruang kerja sedikit lebih rumit daripada untuk paket termasuk/kecualikan.

Dalam paket include/exclude, semua jalur dijamin menjadi anak dari jalur root, di mana manifes kargo berada. Ini mirip dengan perilaku gitignore, di mana aturan hanya berlaku untuk jalur anak-anak dari beberapa root, yang merupakan tempat file .gitignore berada, atau root git repo. Itu sebabnya saya telah mengkodekan asumsi sebagai pernyataan debug dalam logika yang cocok: https://github.com/BurntSushi/ripgrep/pull/551 .

Di ruang kerja anggota/kecualikan konfigurasi—mirip dengan dependensi paket—jalur dapat menunjuk ke direktori di luar root paket, biasanya direktori saudara. Jika kita ingin mengubah interpretasinya menjadi pencocokan seperti gitignore, kita harus terlebih dahulu menentukan perilakunya.

Perilaku baru mungkin tidak sulit untuk didefinisikan, tetapi itu akan menjadi sesuatu yang baru yang perlu kita lacak. Juga, akan ada pertanyaan tentang di mana itu termasuk dalam implementasi ripgrep , atau haruskah kita membuat hard-code kasus khusus ini dalam abstraksi lokal di kargo.

Saya masih memikirkan bagaimana menerapkannya. Akan senang mendengar pendapat Anda tentang ini juga.

Hm ya saya tidak yakin apakah ini akan menjadi aplikasi yang bagus untuk itu :(. Saya ingin tahu apakah mungkin hanya mengecualikan harus seperti gitignore dan jika tidak termasuk harus berbasis glob?

jika tidak termasuk harus berbasis glob?

Maksudnya workspace.members kan? Ya, saya pikir gumpalan lebih masuk akal dalam kasus itu. Mereka seharusnya cocok dengan direktori (dan bukan file), dan mereka biasanya diharapkan untuk membuat daftar pola yang cocok dengan jalur non-anak.

Kemudian, kita dapat membatasi workspace.exclude hanya untuk jalur di bawah root, karena di situlah penyertaan otomatis terjadi. Dan itu menyelesaikan masalah desain pencocokan yang disebutkan di atas.

Dari Bagaimana mengajarkan ini? perspektif, saya pikir kita bisa lebih eksplisit dengan konsep direktori root paket , dan itulah satu-satunya tempat dengan penyertaan otomatis file dan paket. Dan, kita juga dapat mengatakan bahwa di semua opsi package.include , package.exclude , workspace.exclude , polanya cocok dengan direktori root paket ini .

Ah ya memang! Itu semua masuk akal bagi saya!

Saat ini saya memiliki include = ["src/**/*", ...] di Cargo.toml . Bagaimana cara mengubah ini agar memiliki perilaku yang sama di bawah aturan lama dan aturan baru. Juga akan menyenangkan untuk tidak di-spam dengan peringatan setiap kali saya membangun.

@retep998 , bisakah Anda juga memposting jalur yang menghasilkan peringatan (atau peringatan penuh)?

PS C:\Users\Peter\Code\winapi-rs> cargo build
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\d3d12\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\d3dcompiler\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\dbghelp\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\dxguid\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\hid\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\httpapi\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\kernel32\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\oleaut32\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\opengl32\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\runtimeobject\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\setupapi\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\shell32\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\user32\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\winhttp\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\winmm\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\winscard\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `lib\winusb\src\lib.rs` WILL be included in the next Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs

Mendekut! Jadi, yang terjadi adalah src dalam aturan Anda cocok dengan direktori src di pohon, bahkan direktori di bawah /lib/ . Perbaikan Anda adalah dengan menambahkan garis miring ( / ) ke pola, menjadikannya:

include = ["/src/**/*", ...]

atau, hanya format yang lebih sederhana:

include = ["/src/**", ...]

Apakah ini membantu, @retep998?

@behnam Tidak, karena garis miring tidak dipahami oleh sistem lama yang menyebabkan dinding peringatan yang lebih panjang . Saya menginginkan sesuatu yang kompatibel dengan yang lama dan yang baru dan tidak memicu dinding teks ini.

Benar, @retep998. Saya khawatir ini adalah salah satu kasus yang kami lewatkan dalam rencana migrasi. Sayangnya, untuk pengaturan ini, saya tidak dapat memikirkan cara apa pun untuk membuat pola include bekerja pada logika saat ini dan yang akan datang.

Satu pertanyaan untuk Anda, @retep998 : apakah beralih ke aturan exclude akan menjadi pilihan bagi Anda? Jika tidak, bisakah Anda menguraikannya?

Juga, harap dicatat bahwa ini hanya peringatan dan logikanya belum berubah. Jadi, pengemasan tidak terpengaruh saat ini, dan kami akan memberi Anda opsi untuk memperbarui manifes Anda agar berfungsi baik secara stabil maupun malam hari.

Yang mengatakan, kita perlu memikirkan cara untuk mengatasi ini untuk semua pengguna. Mungkin kita perlu menambahkan logika garis miring terlebih dahulu, sebagai tahap 1.1, dan kemudian sepenuhnya beralih ke gitignore di rilis lain setelah itu. Bagaimana menurut Anda, @alexcrichton?

Saya lebih suka include daripada exclude karena dengan daftar putih eksplisit saya tidak perlu khawatir tentang file yang secara tidak sengaja menyelinap masuk. Jika saya menggunakan daftar hitam maka ketika saya membuat file sementara untuk memeriksa sesuatu, ada risikonya file itu menyelinap ke dalam paket yang saya terbitkan. Dengan daftar putih saya hanya menentukan apa yang saya inginkan dalam paket yang diterbitkan, dengan daftar hitam saya harus mempersiapkan setiap kemungkinan.

Mungkin kita perlu menambahkan logika garis miring terlebih dahulu, sebagai tahap 1.1, dan kemudian sepenuhnya beralih ke gitignore di rilis lain setelah itu. Bagaimana menurut Anda, @alexcrichton?

@behnam terdengar seperti ide bagus untuk saya!

Saya telah memperbarui rencana migrasi dan akan mengirimkan PR untuk membawa kami ke Tahap 1.1.

Terima kasih, @retep998 , telah mengemukakan masalah ini. :)

Pola baru lebih baik, tetapi saya mengalami masalah. Tampaknya tidak mendukung .git/info/exclude . File ini adalah tambahan tersembunyi untuk .gitignore . Sebelumnya Cargo mendukungnya (mungkin sebagai efek samping dari penggunaan git untuk membuat daftar file?), tetapi sekarang saya mendapat peringatan bahwa file yang dikecualikan dalam .git/info/exclude akan disertakan.

Saya menggunakan .git/info/exclude untuk sampah khusus mesin saya yang sangat pribadi yang saya miliki di direktori proyek saya (konfigurasi editor teks, file kode yang belum selesai, input/output yang saya gunakan untuk pengujian manual). Ini biasanya tidak layak disertakan dalam .gitignore yang dapat dilihat publik, dan jelas tidak boleh dipublikasikan.

Terima kasih atas umpan baliknya, @pornel. Mari kita lihat dua area berbeda yang telah Anda sebutkan:

1) Kargo mendapatkan daftar inklusi default berdasarkan VCS, seperti git. Di area ini, rencana ini tidak berpengaruh dan semuanya harus sama seperti sebelumnya, kecuali ada masalah/PR lain yang mengubahnya, atau peti git2 telah mengubah perilakunya.

2) Cargo menafsirkan aturan include / exclude mirip dengan apa yang dilakukan gitignore. Ini adalah ruang lingkup masalah ini, dan apa yang diubah di sini.

Saya yakin peringatan yang Anda terima adalah akibat dari (2), tetapi entah bagaimana tampaknya merupakan hasil dari perubahan (1). Jika Anda membagikan konfigurasi package.exclude dan peringatannya, saya dapat melihat apa yang terjadi.

@behnam Untuk mereproduksi:

cargo new foo; cd foo
mkdir rubbish
touch somefile rubbish/somefile
echo rubbish/ >> .git/info/exclude

dan tambahkan include = ["somefile"] ke Cargo.toml

Saya mendapatkan:

peringatan: Pencocokan pola untuk bidang include/exclude Cargo sedang berubah dan file rubbish/somefile AKAN disertakan dalam versi Cargo berikutnya.

Untuk kargo 0.22.0-nightly (305bc25d5 2017-07-28) direktori rubbish tidak termasuk dalam paket.

Terima kasih @pornel. Pertama, di tabel package Cargo, jika Anda memiliki set bidang include , sama sekali tidak akan ada pra-populasi berbasis VCS. Anda dapat melihat kodenya di sini: https://github.com/rust-lang/cargo/blob/master/src/cargo/sources/path.rs#L246 -L252

Jadi, untuk repro ini, pada dasarnya, git-prepopulation belum berfungsi sejak awal. Satu-satunya hal yang berubah adalah perilaku pencocokan pola, yang dulunya hanya cocok dengan something di root, tetapi sekarang dengan pencocokan seperti gitignore (kami benar-benar membutuhkan nama yang lebih baik untuk yang ini!!!) mencocokkan file lain yang bernama something di mana saja di bawah root paket.

Dan, ya, itu hanya peringatan untuk saat ini, karena kami ingin memastikan semua orang siap untuk perubahan.

Dengan malam berikutnya yang telah #4378 mendarat, Anda akan dapat mengubah pola Anda menjadi /something dan membuatnya berfungsi seperti sebelumnya, tanpa peringatan apa pun.

Saya juga mengirimkan tambalan untuk beta , jadi kami dapat memastikan bahwa kami memiliki solusi garis miring utama ini di rustc:1.20.0 , sehingga semua orang dapat mulai memperbaiki pola mereka sebelum perubahan diterapkan.

Pembaruan: #4270 belum ada di saluran beta (cabang rust-1.20.0 ), jadi tidak perlu melakukan backport #4378. Keduanya tersedia di malam hari sekarang, yang membuatnya cukup stabil untuk menunggu hingga satu atau dua siklus rilis.

Saya bingung, saya tidak menggunakan include/exclude, tetapi saya mendapatkan peringatan berikut:

warning: Pattern matching for Cargo's include/exclude fields is changing and file `src/bin/cargo-fmt.rs` WILL NOT be included in a future Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `src/bin/rustfmt-format-diff.rs` WILL NOT be included in a future Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info
warning: Pattern matching for Cargo's include/exclude fields is changing and file `src/bin/rustfmt.rs` WILL NOT be included in a future Cargo version.
See https://github.com/rust-lang/cargo/issues/4268 for more info

Satu-satunya bagian dari Cargo.toml saya yang menggunakan penamaan file-file itu adalah:

[[bin]]
name = "rustfmt"

[[bin]]
name = "cargo-fmt"

[[bin]]
name = "rustfmt-format-diff"

[features]
default = ["cargo-fmt", "rustfmt-format-diff"]
cargo-fmt = []
rustfmt-format-diff = []

Apakah saya perlu menambahkan beberapa jenis jika termasuk di mana sebelumnya mereka secara implisit disertakan?

Tautan ke seluruh Cargo.toml

Ah! Saya, kira saya disesatkan dengan mencari nama file, ketika *.rs itulah masalahnya

Rilis stabil mana yang mulai mendukung jalur absolut di include ? (Saya tidak yakin apakah saya dapat mulai beralih ke pola baru tanpa mengganggu pengguna di hilir)

@pornel include / exclude hanya memengaruhi saat Anda melakukan cargo package sehingga seharusnya tidak berpengaruh pada pengguna hilir peti Anda. Anda hanya perlu memastikan include / exclude disetel dengan benar untuk versi kargo Anda saat ini saat Anda mempublikasikan peti Anda.

Saya yakin keadaan saat ini dari masalah ini adalah bahwa kami terus membiarkan peringatan itu muncul. Saya pikir masih ada masalah dengan ruang kerja termasuk/kecualikan anggota tetapi itu kemungkinan ortogonal dengan aspek pengemasan masalah ini pada khususnya.

Saya memiliki pola yang akan bekerja dengan aturan baru, tetapi saat ini menyertakan terlalu banyak file. Apakah ada cara saya bisa mematikan peringatan?

Polanya terlihat seperti /a/*/b dan saat ini (salah) cocok dengan /a/x/y/b , ketika saya hanya ingin itu cocok dengan /a/x/b

Temuan menarik, @Diggsey! Saya mengirimkan PR untuk menambahkan tes unit untuk itu di repo grepset ( https://github.com/BurntSushi/ripgrep/pull/773 ).

Sayangnya, tidak, tidak ada bendera untuk menekan peringatan. Mungkin kita seharusnya membangunnya, tapi saya rasa sekarang sudah terlambat karena kita sedang bersiap-siap untuk bermigrasi.

Sementara itu, dengan perilaku yang rusak ini, sepertinya yang perlu Anda lakukan hanyalah mengganti /a/*/b patters dengan /a/**/b , yang akan cocok dengan kumpulan jalur yang sama di kedua interpretasi. Bagaimana menurutmu?

Ya itulah yang telah saya lakukan untuk saat ini, tetapi itu berarti saya perlu perbaikan lanjutan
setelah perilaku diperbaiki.

Pada 5 Februari 2018 2:41 pagi, "Behnam Esfahbod " [email protected] menulis:

Temuan menarik, https://github.com/diggsey ! Saya mengajukan PR
untuk menambahkan unit-tests di grepset repo (BurntSushi/ripgrep#773
https://github.com/BurntSushi/ripgrep/pull/773 ).

Sayangnya, tidak, tidak ada bendera untuk menekan peringatan. Mungkin kita
seharusnya membangunnya, tapi kurasa sudah terlambat sekarang karena kita
bersiap-siap untuk bermigrasi.

Sementara itu, dengan perilaku rusak ini, sepertinya semua yang perlu kamu lakukan
adalah mengganti pola /a/ /b dengan /a/ */b, yang akan cocok dengan
set jalur yang sama di kedua interpretasi. Bagaimana menurutmu?


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/rust-lang/cargo/issues/4268#issuecomment-362966778 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AAbi-cJW7u6P-glfqFqWtyfSWerdyfxdks5tRmpNgaJpZM4OTLfj
.

@behnam penasaran, bagaimana keadaan saat ini di sini? Saya pikir kami bermaksud untuk memperbaiki beberapa bug yang agak buruk dengan ini (tidak ingat yang mana), tetapi sepertinya ini macet dan bug asli masih ada? Mungkin saya hanya membayangkan hal-hal saja :-)

Kami belum memiliki laporan tentang masalah apa pun selama beberapa rilis, jadi sekarang aman untuk membalik sakelar. @alexcrichton?

Terdengar bagus untukku!

@behnam apakah Anda ingin mengirim PR untuk mengubah perilaku itu?

Saya bisa melakukannya dalam 3-4 minggu dari sekarang. Jika ada orang lain yang dapat melakukannya lebih awal, silakan ambil alih.

Catatan tambahan: Saya pikir kami ingin tetap menjaga logika dan menghasilkan dari ketidakcocokan, tetapi memperbarui kata-kata untuk menunjukkan perubahan.

Juga perlu memperbarui dokumen pada saat yang sama dengan membalik sakelar.

Peringatan berikut dikeluarkan ketika saya menerbitkan inert :

Pencocokan pola untuk bidang termasuk/kecualikan Kargo berubah dan file .vscode/settings.json AKAN dikecualikan dalam versi Kargo mendatang.

Dengan pengaturan package.exclude :

https://github.com/nox/inert/blob/ea06ac74f2cf3ee83672ed9ccabc09635dd5aa1a/Cargo.toml#L12

@nox , saya percaya itu karena "/.vscode" tidak cocok dengan file apa pun dengan aturan glob (hanya cocok dengan dir), dan mengubahnya menjadi "/.vscode/**" akan membungkam peringatan.

Juga, AFAIU, itu adalah indikator dari pola (glob) saat ini yang tidak melakukan apa yang Anda pikirkan, dan konten dir itu, /.vscode , ada dalam paket Anda, khususnya /.vscode/settings.json . Bisakah Anda memeriksa ulang ini, untuk memastikan kami memahami situasinya dengan benar.

Tentang status migrasi ini, saya telah mencoba kembali ke sana, tetapi tidak dapat membuat paket cargo dibangun dengan benar di sistem saya yang mendukung MacPort (konflik git dan iconv libs). Saya tidak yakin kapan saya bisa menghabiskan waktu untuk itu lagi.

Jika ada yang bisa secara sukarela mengambil langkah ini, itu akan sangat dihargai. Lihat 6b61d98fb030f4cbd2db15071f15a0468dfddc83 untuk perubahan yang diperlukan untuk mencapai Tahap 2.

@nox , saya percaya itu karena "/.vscode" tidak cocok dengan file apa pun dengan aturan glob (hanya cocok dengan dir), dan mengubahnya menjadi "/.vscode/**" akan membungkam peringatan.

Oh begitu. Bukankah seharusnya sudah berperilaku seolah-olah saya menentukan "/.vscode/**" ? Mengapa glob dibutuhkan? Apakah itu akan berubah ketika Cargo mulai mengandalkan .gitignore ? Mekanisme Git memungkinkan untuk melarang seluruh pohon dengan mengabaikan direktori teratasnya.

@nox Ya, itulah peringatannya. Kargo tidak berperilaku seolah-olah /** ditambahkan sekarang, tetapi begitu perilaku gitignore muncul, itu akan terjadi. Oleh karena itu pemberitahuan tentang perubahan perilaku.

Bisakah seseorang mengklarifikasi status pencocokan pola kargo saat ini?

Saya tiba-tiba mendapat peringatan dan melihat masalah ini, memutuskan untuk mengubah dari menggunakan include menjadi exclude untuk direktori tunggal untuk sumber C
"/brotli/" - yang saya harapkan untuk mengecualikan direktori brotli di root peti.

Tetapi saat ini ia memberikan peringatan pada semua file di dalamnya, jadi saya agak ragu apakah kita masih menggunakan pola glob di malam hari atau tidak?
Hal yang sama jika saya menghapus garis miring, tetapi saya hanya ingin mengecualikan direktori di root peti.

@DoumanAsh nightly terbaru baru saja beralih ke pola gaya gitignore (#6924) ( docs ).

/brotli/ berbeda dalam cara menafsirkannya oleh sistem lama (glob) dan yang baru (abaikan). Itu hanya menunjukkan peringatan untuk memberi tahu Anda bahwa itu telah berubah. Saya berencana untuk menghapus peringatan di 1.38. Jika saya membaca deskripsi Anda dengan benar, Anda dapat mengabaikannya jika Anda hanya menggunakan nightly untuk menerbitkan, karena /brotli/ cocok dengan semuanya. Jika Anda ingin menghindari peringatan, saya pikir /brotli/** bekerja pada kedua sistem tanpa peringatan. Jika ragu, jalankan cargo package --list untuk melihat apa yang akan disertakan.

Ah aku mengerti, terima kasih. --list mengkonfirmasi bahwa itu berfungsi seperti yang saya inginkan.

Apakah ada yang tersisa untuk diterapkan atau dapatkah masalah ini ditutup? Mungkin paling tidak perlu ada PR untuk memperbarui dokumentasi manifes .

@XAMPPRocky Saya berencana untuk menghapus peringatan di 1.38, jadi saya ingin membiarkannya terbuka sampai saat itu.

Dokumentasi telah diperbarui di PR terakhir . Anda dapat meletakkan "nightly" di jalur dokumen untuk melihat file .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat