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.