Bagaimana saya bisa mengabaikan semuanya di bawah folder di Mercurial


149

Saya mencari ekspresi untuk file .hgignore, untuk mengabaikan semua file di bawah folder yang ditentukan.

misalnya: Saya ingin mengabaikan semua file dan folder di bawah nampan

Sebenarnya setiap saran tentang bagaimana ekspresi terbentuk akan bagus

Jawaban:


173

Bergantian:

syntax: glob
bin/**

ini jauh lebih mudah saya pikir :)
Xian

PhiLho, saya pikir itu juga akan menyaring file bernama bin
Peter Gibson

1
Jawaban ini, ditambah dokumentasi ini membantu saya: selenic.com/mercurial/hgignore.5.html
CenterOrbit

7
bin bin/ bin/* bin/**- Semua melakukan hal yang sama dengan glob yaitu mengabaikan semua direktori & sub-direktori bernama bin tetapi tidak ada nama file bin.txt atau bin1. Apa gunanya asterix?
pengguna

Saya suka itu sebagai kejelasan, tetapi tentu saja menggunakan 'bin' jika Anda telah menginternalisasi aturan glob (saya resemacam pria)
Ry4an Brase

53

Saya melakukan beberapa percobaan dan saya menemukan bahwa sintaks regex pada Windows berlaku untuk path yang dimulai dengan repositori saat ini, dengan backslash ditransformasikan menjadi garis miring.

Jadi jika repositori Anda ada di E: \ Dev misalnya, hg statusakan menerapkan pola terhadap foo / bar / file1.c dan semacamnya. Jangkar berlaku untuk jalur ini.

Begitu:

  • Glob berlaku untuk elemen path dan di-root ke bagian elemen
  • foo cocok dengan semua folder (atau file) bernama foo (bukan untuk "foobar" atau "barfoo")
  • * foo * cocok dengan folder atau file apa pun dengan "foo" di namanya
  • foo / bar * cocok dengan semua file di folder "foo" dimulai dengan "bar"


  • Regex peka terhadap huruf besar-kecil, bukan berlabuh
  • Tentu saja, backslash regex suka karakter khusus. (dot)
  • / match \ path separator pada Windows. \ tidak cocok dengan pemisah ini ...
  • foo cocok dengan semua file dan folder dengan "foo" di dalamnya
  • foo / cocokkan hanya folder yang diakhiri dengan "foo"
  • / foo / cocok dengan folder "foo" di suatu tempat di jalan
  • / foo / bar / cocok dengan folder "bar" di folder "foo" di suatu tempat di jalan
  • ^ foo cocok dengan file atau folder yang dimulai oleh foo di root repositori
  • foo $ cocokkan file yang diakhiri dengan foo

Saya harap ini akan membantu, saya menemukan halaman HGIGNORE (5) sedikit ringkas.


Saya memiliki pola '' [Dd] ebug * / '' yang digunakan dan yang aneh adalah, bahwa ia juga memfilter file seperti '' debug.txt ''
Mehrdad Mirreza

9

Keduanya juga akan menyaring direktori yang disebut cabin, yang mungkin bukan yang Anda inginkan. Jika Anda memfilter tingkat atas, Anda dapat menggunakan:

^/bin/

Untuk bindirektori di bawah root Anda, Anda dapat menghilangkan ^. Tidak perlu menentukan sintaks, regexp adalah default.


4
Ini tidak akan mengabaikan apa pun. Tanda sisipan hanya mengatakan hal-hal di root repo tetapi slash utama hanya menangkap tidak di root repo.
Ry4an Brase

2

Tidak apa-apa, saya mengerti

syntax: regexp
bin\\*

ekspresi mengikuti standar perl sintaks ekspresi reguler.


2
Memang, dan ekspresi Anda berarti "file atau folder yang diakhiri dengan bin dan diikuti oleh 0 atau lebih backslash" ... Jadi berfungsi karena backslash dibatalkan oleh *, tetapi berlaku apa pun dengan "bin" di dalamnya. Di Windows, hg menggantikan \ dengan / sebelum mencocokkan.
PhiLho

2

sintaks: glob bin / **

Jawaban ini ditunjukkan di atas, namun saya juga ingin menambahkan bahwa * dan ** ditangani secara berbeda. ** bersifat rekursif, * tidak.

Lihat Pola Hg


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.