Mercurial'da bir klasörün altındaki her şeyi nasıl yok sayabilirim


149

Belirli bir klasörün altındaki tüm dosyaları yoksaymak için .hgignore dosyası için bir ifade arıyorum.

örneğin: Bin altındaki tüm dosya ve klasörleri yoksaymak istiyorum

Aslında ifadelerin nasıl oluştuğuna dair herhangi bir tavsiye harika olurdu

Yanıtlar:


173

Alternatif:

syntax: glob
bin/**

bence bu çok daha kolay :)
— Xian

PhiLho, ben de adlandırılmış bin dosyalarını filtrelemek olacağını düşünüyorum
— Peter Gibson

1
Bu yanıt ve bu dokümantasyon bana yardımcı oldu: selenic.com/mercurial/hgignore.5.html
— CenterOrbit

7
bin bin/ bin/* bin/**- Tüm bunlar glob ile aynı şeyi yapar, yani bin isimli tüm dizinleri ve alt dizinleri yoksay, ancak bin.txt veya bin1 dosya adını görmez. Asteriks ne demek?
— kullanıcı


53

Bazı deneyler yaptım ve Windows'taki regex sözdiziminin geçerli depodan başlayarak eğik çizgilere dönüştürülmüş ters eğik çizgilerle uygulandığını buldum.

Örneğin, hg statusdeponuz E: \ Dev'de ise, foo / bar / file1.c ve benzerlerine karşı desen uygular. Çapalar bu yola uygulanır.

Yani:

  • Glob, yol elemanlarına uygulanır ve eleman parçalarına köklenir
  • foo, foo adlı herhangi bir klasörle (veya dosyayla) eşleşir ("foobar" veya "barfoo" ile değil)
  • * foo *, adında "foo" bulunan herhangi bir klasör veya dosyayı eşleştirir
  • foo / bar * "foo" klasöründeki "bar" ile başlayan tüm dosyalarla eşleşir


  • Normal ifade büyük / küçük harfe duyarlıdır, sabit değildir
  • Tabii ki, ters eğik çizgi regex gibi özel karakterler. (nokta)
  • / Windows \ yol \ ayırıcı ile eşleşir. \ bu ayırıcıyla eşleşmiyor ...
  • foo, içinde "foo" bulunan tüm dosya ve klasörlerle eşleşir
  • foo / yalnızca "foo" ile biten klasörlerle eşleşir
  • / foo / yolun herhangi bir yerinde "foo" klasörü ile eşleşir
  • / foo / bar / "foo" klasöründeki "bar" klasörünü yolun herhangi bir yerinde eşleştirir
  • ^ foo, deponun kökündeki foo ile başlayan dosya veya klasörle eşleşir
  • foo $ ile biten dosya

Umarım bu yardımcı olur, HGIGNORE (5) sayfasını biraz özledim .


Kullanımda '' [Dd] ebug * / '' kalıbım var ve garip şey, '' debug.txt '' gibi dosyaları da filtreliyor
— Mehrdad Mirreza

9

Bunların her ikisi de cabinistediğiniz bir dizini filtreleyecektir . Üst düzey filtreliyorsanız şunları kullanabilirsiniz:

^/bin/

İçin binsenin kökün altındaki dizinleri, sen ^ atlayabilirsiniz. Sözdizimi belirtmeye gerek yoktur, regexp varsayılan değerdir.


4
Bu hiçbir şeyi görmezden gelmeyecek. Caret sadece repo kökündeki şeyleri söyler, ancak önde gelen eğik çizgi sadece repo kökünde olmayan direkleri yakalar.
— Ry4an Brase

2

Boşver, anladım

syntax: regexp
bin\\*

ifadeler standart perl normal ifade sözdizimini izler.


2
Gerçekten de, ifadeniz "bin ile biten ve ardından 0 veya daha fazla ters eğik çizgi izleyen dosya veya klasör" anlamına gelir ... Bu nedenle, ters eğik çizgi * tarafından geçersiz kılındığı için çalışır, ancak içinde "bin" olan her şeyi uygular. Windows'ta hg, eşleştirmeden önce \ ile / değiştirir.
— PhiLho

2

sözdizimi: glob bin / **

Bu cevap yukarıda gösterilmiştir, ancak * ve ** 'nin farklı ele alındığını da eklemek isterim. ** özyinelemeli, * değildir.

Hg Kalıplarına Bakın


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.