ignorando le cartelle in mercurial
-
08-07-2019 - |
Domanda
Caveat:
Provo tutte le possibilità elencate qui: Come posso ignorare tutto in una cartella in Mercurial .
Nessuno funziona come spero.
Voglio ignorare ogni cosa nella cartella test
. Ma non ignorare srcProject \ test \ TestManager
Ci provo
syntax: glob
test/**
E ignora test
e srcProject\test\TestManager
Con:
syntax: regexp
^/test/
È la stessa cosa.
Anche con:
syntax: regexp
test\\*
Ho installato TortoiseHG 0.4rc2 con Mercurial-626cb86a6523 + tortoisehg, Python-2.5.1, PyGTK-2.10.6, GTK-2.10.11 in Windows
Soluzione
Provalo senza la barra dopo il cursore nella versione regexp.
^test/
Ecco un test:
~$ mkdir hg-folder-ignore
~$ cd hg-folder-ignore
~/hg-folder-ignore$ echo '^test/' > .hgignore
~/hg-folder-ignore$ hg init
~/hg-folder-ignore$ mkdir test
~/hg-folder-ignore$ touch test/ignoreme
~/hg-folder-ignore$ mkdir -p srcProject/test/TestManager
~/hg-folder-ignore$ touch srcProject/test/TestManager/dont-ignore
~/hg-folder-ignore$ hg stat
? .hgignore
? srcProject/test/TestManager/dont-ignore
Si noti che ignoreme non viene visualizzato e non ignorarlo.
Altri suggerimenti
È possibile utilizzare le affermazioni look-ahead e look-behind negative di larghezza zero per specificare che si desidera ignorare test
solo quando non è preceduto da srcProject
e non seguito da TestManager
:
syntax: regexp
(?<!srcProject\\)test\\(?!TestManager)
Mercurial usa le espressioni regolari di Python, quindi puoi trovare maggiori informazioni su asserzioni di larghezza zero nei documenti Python: https://docs.python.org/library/re.html#regular-expression-syntax
Entrambi i casi hanno funzionato per me (su Linux e Windows):
syntax: regexp
^backup/ #root folder
nbproject/ #any folder
o
syntax: glob
./backup/* #root folder
nbproject/* #any folder
Tuttavia, non è stato prima che aggiungessi un collegamento al file .hgignore al file .hgrc nel mio repository:
[ui]
ignore = .hg/.hgignore
Vale anche la pena ricordare che mercurial ignora i file che non sta attualmente monitorando , che sono quelli aggiunti prima di configurarlo per ignorarli. Quindi, non lasciarti scoraggiare dallo stato di hg dicendo che alcuni archiviati sono M (modificato) o! (mancante) nelle cartelle che hai appena aggiunto all'elenco ignora!
Crea il file .hgignore nella directory principale del repository
Ora aggiungi i seguenti contenuti nel file.
sintassi: glob
bin / **
*. DS_Store
Questo rimuoverà la directory bin e tutti i file * .DS_Store dal repository