Come posso ignorare tutto in una cartella in Mercurial


149

Sto cercando un'espressione per il file .hgignore, per ignorare tutti i file sotto una cartella specificata.

ad esempio: vorrei ignorare tutti i file e le cartelle sotto il cestino

In realtà qualsiasi consiglio su come si formano le espressioni sarebbe fantastico

Risposte:


173

In alternativa:

syntax: glob
bin/**

credo sia molto più semplice :)
Xian,

PhiLho, penso che filtrerebbe anche i file di nome bin
Peter Gibson,

1
Questa risposta, oltre a questa documentazione, mi ha aiutato: selenic.com/mercurial/hgignore.5.html
CenterOrbit

7
bin bin/ bin/* bin/**- Tutti fanno la stessa cosa con glob, ovvero ignorano tutte le directory e le sottodirectory denominate bin ma non alcun nome file bin.txt o bin1. Qual è il punto di asterix?
utente

Mi piace per chiarezza, ma certamente uso 'bin' se hai interiorizzato le regole glob (sono una respecie di ragazzo)
Ry4an Brase,

53

Ho fatto alcuni esperimenti e ho scoperto che la sintassi della regex su Windows si applica al percorso che inizia con il repository corrente, con barre rovesciate trasformate in barre.

Quindi, se il tuo repository è in E: \ Dev per esempio, hg statusapplicherà i pattern a foo / bar / file1.c e simili. Le ancore si applicano a questo percorso.

Così:

  • Glob si applica agli elementi del percorso ed è radicato nelle parti degli elementi
  • foo corrisponde a qualsiasi cartella (o file) denominata foo (non "foobar" né "barfoo")
  • * foo * corrisponde a qualsiasi cartella o file con "foo" nel nome
  • foo / bar * corrisponde a tutti i file nella cartella "foo" che iniziano con "bar"


  • Regex fa distinzione tra maiuscole e minuscole, non ancorato
  • Naturalmente, i caratteri speciali regex backslash come. (punto)
  • / match \ percorso separatore su Windows. \ non corrisponde a questo separatore ...
  • pippo abbina tutti i file e le cartelle con "pippo" all'interno
  • pippo / corrisponde solo alle cartelle che terminano con "pippo"
  • / pippo / corrisponde alla cartella "pippo" da qualche parte nel percorso
  • / foo / bar / corrisponde alla cartella "bar" nella cartella "foo" da qualche parte nel percorso
  • ^ foo corrisponde al file o alla cartella che inizia con foo nella radice del repository
  • foo $ corrisponde al file che termina con foo

Spero che questo possa aiutare, ho trovato la pagina HGIGNORE (5) un po 'succinta.


Ho in uso lo schema '' [Dd] ebug * / '' e la cosa strana è che filtra anche file come '' debug.txt ''
Mehrdad Mirreza,

9

Entrambi filtreranno anche una directory chiamata cabin, che potrebbe non essere quella desiderata. Se stai filtrando il livello più alto, puoi usare:

^/bin/

Per le bindirectory sotto la tua radice, puoi omettere ^. Non è necessario specificare la sintassi, regexp è l'impostazione predefinita.


4
Questo non ignorerà nulla. Il cursore dice solo cose nella radice del repository, ma la barra principale cattura solo le directory non nella radice del repository.
Ry4an Brase,

2

Non importa, l'ho capito

syntax: regexp
bin\\*

le espressioni seguono la sintassi standard perl delle espressioni regolari.


2
In effetti, e la tua espressione significa "file o cartella che termina con bin e seguita da 0 o più barre rovesciate" ... Quindi funziona perché la barra rovesciata è annullata da *, ma applica qualsiasi cosa con "bin" all'interno. Su Windows, hg sostituisce \ con / prima della corrispondenza.
PhiLho,

2

sintassi: glob bin / **

Questa risposta è mostrata sopra, tuttavia vorrei anche aggiungere che * e ** sono gestiti in modo diverso. ** è ricorsivo, * non lo è.

Vedi Hg Patterns


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.